<div dir="ltr">So, 1: is supposed to be a label?  I suspect that is not going to work.  Consider:<div><div><br></div><div>$ cat t.cpp</div><div>int main() {</div><div>  asm ("1: jmp 1");</div><div>}</div><div><br>
</div><div>$ clang -cc1 t.cpp -S -o - | grep -A10 main:<br></div><div>_main:</div><div>        #APP</div><div>Ltmp0:</div><div>        jmp     1  # Not right...</div><div>        #NO_APP</div><div>        movl    $0, %eax</div>
<div>        retl</div></div><div><div><br></div><div>$ clang -cc1 t.cpp -emit-obj -o t.o</div><div>Assertion failed: Target.getSymA() && "Relocation must reference a symbol!", file ..\lib\MC\WinCOFFObjectWriter.cpp, line 714</div>
</div><div><br></div><div>So, clearly we have bugs.  As a workaround, try using textual labels that start with 'L' so they don't appear in the symbol table.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Tue, Aug 5, 2014 at 6:01 PM, Yuri <span dir="ltr"><<a href="mailto:yuri@rawbw.com" target="_blank">yuri@rawbw.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am looking at one project that doesn't compile with clang++.<br>
<br>
Source in __asm__ __volatile__(...) after preprocessor looks like this:<br>
<...skipped...>"mov [r8+((1024+7-(15))-((1024+7-(<u></u>15))/(8))*(8))*4]" ", " "ecx" ";"<br>
<br>
 "\n" "1" ":"<br>
 "add rsi" ", " "4*16" ";"<br>
<...skipped...><br>
<br>
<br>
This place breaks with this message:<br>
sha.cpp:340:2: error: invalid instruction mnemonic 'prefix'<br>
        ASL(1)<br>
        ^<br>
./cpu.h:224:17: note: expanded from macro 'ASL'<br>
        #define ASL(x) GNU_ASL(x)<br>
                       ^<br>
./cpu.h:218:26: note: expanded from macro 'GNU_ASL'<br>
        #define GNU_ASL(x) "\n" #x ":"<br>
                                ^<br>
<scratch space>:24:2: note: expanded from here<br>
"1"<br>
 ^<br>
<br>
However, there is the previous instance of the similar assembly that clang doesn't complain about:<br>
 "movdqa xmm1" ", " "[rcx+1*16]" ";"<br>
 "\n" "0" ":"<br>
 "movdqa [r8+((1024+7-(0+3))-((1024+7-(<u></u>0+3))/(8))*(8))*4]" ", " "xmm1" ";"<br>
<br>
gcc compiles both places.<br>
<br>
What is wrong with the first place?<span class="HOEnZb"><font color="#888888"><br>
<br>
Yuri<br>
______________________________<u></u>_________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/cfe-dev</a><br>
</font></span></blockquote></div><br></div>