[Bug inline-asm/22045] New: can't find a register in class 'GENERAL_REGS'

macro at linux-mips dot org gcc-bugzilla@gcc.gnu.org
Mon Jun 13 13:32:00 GMT 2005


This seems a bit different to the two other bugs in this class, so I'm filing
it separately.  For the attached code (extracted from glibc, with some
modifications), built with:

$ i386-linux-gcc md5-crypt.i -c -O2 -pipe -fPIC -fomit-frame-pointer -o md5-crypt.os

(-fomit-frame-pointer given for illustration only) GCC runs out of registers,
even though the problematic asm insists on having four registers available
only.  That means at least one free register is still available (there would
be two if alloca() didn't consume %ebp) -- how many is GCC meant to require?

 What's interesting, replacing the "=&g" constraint for "__d3" with "=m"
(a patch attached for clarity) makes the failure go away, so it looks like
it is really a wrong one.

-- 
           Summary: can't find a register in class 'GENERAL_REGS'
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: inline-asm
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: macro at linux-mips dot org
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i386-linux-gnu
  GCC host triplet: i386-linux-gnu
GCC target triplet: i386-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22045



More information about the Gcc-bugs mailing list