<halfline> does any one know what's wrong with this? I'm not familiar with gcc's inline assembly syntax: __asm__ volatile ("imull %3\n\t" "shrdl %%cl,%1,%0" : "+a,a" (x), "=d,d" (zhi) : "%0,%0" (x), "m,r" (y), "c,c" (n)) <jakub> halfline: I'd try s/%0,%0/%0,0/ <halfline> jakub: unfortunately that doesn't do it <jakub> halfline: can you cook a really small 5 liner (or so) from it and bugzilla it against gcc?
Created attachment 111624 [details] File that demonstrates the problem This attachment shows the problem. Compile with gcc foo.c -o foo
Changing the + to = will certainly work as a workaround.
gcc-4.0.0-0.32 will grok : "+a,a" (x), "=d,d" (zhi) : "m,r" (y), "c,c" (n) which -0.31 did not grok. Using "%0,%0" is a bug, and so is using +a and "%0,0" against the same operand (it is pointless, "+a,a" already has implied "0,0" counterpart) or you want "=a,a" and "%0,0" instead. FYI, although for some reason GCC 3.4 happened to reload this, it e.g. often fails to reload just : "+a" (x), "=d" (zhi) : "0" (x), "r" (y)", "c" (n) so I wouldn't call this a regression.