I have a C program with an inline assembly instruction similar to this:
a = b;
asm volatile (“jmp *%0” : : “r” (baz)) /* baz points somewhere after 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).