------- Additional Comments From pinskia at gcc dot gnu dot org 2005-04-01 19:19 ------- This is not a regression and here is an example (compile on 3.2.3 with -O2 - fomit-frame-pointer on i686-pc-linux-gnu and you get the same behavior as pointed out here): unsigned long foo (unsigned long *a, unsigned long *b, unsigned long *c, int d) { unsigned long e, f,g,h; // e = 0;f = 0;
if (d <= 0) return 0; asm ("# registers %0 %1 %2 %3 %4 %5 %6 %7" : "+a" (e),"+c" (d), "+r" (f), "+r"(g) : "r" (a), "r" (b), "r" (c), "r"(h)); return e; } ------ asm ---- #APP # registers %eax %ecx %edx %ebp %edi %esi %ebx %edx #NO_APP Notice how edx are used for both input and output registers. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20718