------- Comment #16 from hjl at lucon dot org 2007-05-21 15:33 ------- Gcc 4.1/4.2/4.3 will fail and gcc 3.4 has no problem:
--- typedef unsigned long bngdigit; typedef bngdigit *bng; typedef unsigned int bngcarry; typedef unsigned long bngsize; bngdigit bng_ia32_mult_sub_digit (bng a, bngsize alen, bng b, bngsize blen, bngdigit d) { bngdigit out, tmp; bngcarry carry; bngdigit a11; int x = blen; out = 0; asm ("" : "+r" (a), "+r" (b), "+mr" (blen), "+mr" (out), "=&r" (tmp) : "mr" (d) : "eax", "edx"); if (alen == blen) { a11 = out; goto t; } if (x == 0) goto t; a11 = 1; t: return a11; } --- -- hjl at lucon dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|[4.3 regression] : |[4.1/4.2/4.3 regression] : |gcc.target/i386/pr21291.c |can't find a register in | |class 'GENERAL_REGS' while | |reloading 'asm' http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32004