[cfe-dev] jump in inline assembly
Pietro Braione via cfe-dev
cfe-dev at lists.llvm.org
Fri Oct 28 14:57:59 PDT 2016
I have a C program with an inline assembly instruction similar to this:
a = b;
if (foo)
asm volatile (“jmp *%0” : : “r” (baz)) /* baz points somewhere after etc */
etc:
/* here a is used */
When compiled with -O2 clang moves the initialization of a after the if statement and before the first statement of etc, and as consequence the program segfaults when foo == 1. It’s clear that clang presumes that after the asm volatile instruction the execution will fall through the next statement. gcc allows to use the goto keyword after asm [volatile] to inform that an asm block may jump, but this seems not to work in clang. What is the clang equivalent of asm goto? My clang -v: Apple LLVM version 8.0.0 (clang-800.0.38).
Best,
Pietro Braione
More information about the cfe-dev
mailing list