1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-18 18:42:46 +02:00

[LangRef] Add 'callbr' instruction to the 'blockaddress' section.

llvm-svn: 355379
This commit is contained in:
Craig Topper 2019-03-05 05:23:37 +00:00
parent 7f925b398f
commit 410a517f82

View File

@ -3294,14 +3294,14 @@ basic block in the specified function, and always has an ``i8*`` type.
Taking the address of the entry block is illegal.
This value only has defined behavior when used as an operand to the
':ref:`indirectbr <i_indirectbr>`' instruction, or for comparisons
against null. Pointer equality tests between labels addresses results in
undefined behavior --- though, again, comparison against null is ok, and
no label is equal to the null pointer. This may be passed around as an
':ref:`indirectbr <i_indirectbr>`' or ':ref:`callbr <i_callbr>`'instruction, or
for comparisons against null. Pointer equality tests between labels addresses
results in undefined behavior --- though, again, comparison against null is ok,
and no label is equal to the null pointer. This may be passed around as an
opaque pointer sized value as long as the bits are not inspected. This
allows ``ptrtoint`` and arithmetic to be performed on these values so
long as the original value is reconstituted before the ``indirectbr``
instruction.
long as the original value is reconstituted before the ``indirectbr`` or
``callbr`` instruction.
Finally, some targets may provide defined semantics when using the value
as the operand to an inline assembly, but that is target specific.