How to .. jump from inline asm to a BasicBlock?


I have a problem trying to create an inline asm that checks one condition
and based on the result of the condition it should jump to one BasicBlock or
to another. My question is: is this possible in LLVM, from the inline asm to
jump out, to the LLVM code, and if it is, how can I pass the label to which
the code should jump.

I tried passing the address of the BasicBlocks, using blockaddress, but
without success.

Thank you in advance for your help.

That is not possible in LLVM. Inline asm is expected to 'fall through' to the following code.


Like GNU inline assembly, LLVM doesn't allow control flow into or out of inline asms.



The best workaround I can think of is an inline function that returns a boolean value for your comparison then uses an LLVM conditional branch. (Note: You may need to truncate the boolean to an i1 if you can't figure out how to return a single bit.)