------- 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

Reply via email to