------- Additional Comments From pinskia at gcc dot gnu dot org 2005-04-29
21:45 -------
Reduced testcase:
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;
alen -= blen;
out = 0;
asm(""
: "+r" (a), "+r" (b), "+mr" (blen), "+mr" (out), "=&r" (tmp)
: "mr" (d)
: "eax", "edx");
if (alen == 0) {a11 =out; goto t;}
a11 = 1;
t:
return a11;
}
We are just running out of registers which is what x86 is known for.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21291