The custom call operand encoder asserts that the operand of a call instruction is an immediate value. This may not always be the case, for example, when the call target points to a label.
In this case, the operand is of type MCExpr. Currently the following code will not compile:
asdf:
call asdf
Note that the CALL k and JMP k functions are (probably, but it should still be double checked) the only functions to use the custom call encoding, so these are the only affected instructions.
Output of llvm-mc -arch=avr -mcpu=avrxmega1 -filetype=obj -o a.out:
The custom call operand encoder asserts that the operand of a call instruction is an immediate value. This may not always be the case, for example, when the call target points to a label.
In this case, the operand is of type
MCExpr
. Currently the following code will not compile:Note that the
CALL k
andJMP k
functions are (probably, but it should still be double checked) the only functions to use the custom call encoding, so these are the only affected instructions.Output of
llvm-mc -arch=avr -mcpu=avrxmega1 -filetype=obj -o a.out
: