This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: c/4134: inline assembly - gcc fails to work around register pressure
- From: rth at gcc dot gnu dot org
- To: gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, jodaman at cegt201 dot bradley dot edu, nobody at gcc dot gnu dot org
- Date: 23 Apr 2002 08:18:12 -0000
- Subject: Re: c/4134: inline assembly - gcc fails to work around register pressure
- Reply-to: rth at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, jodaman at cegt201 dot bradley dot edu, nobody at gcc dot gnu dot org, gcc-gnats at gcc dot gnu dot org
Synopsis: inline assembly - gcc fails to work around register pressure
State-Changed-From-To: open->closed
State-Changed-By: rth
State-Changed-When: Tue Apr 23 01:18:11 2002
State-Changed-Why:
Not a bug. You really have run out of registers.
Your ifdef BUG example requires 7 registers: 3 for
each of the "r" inputs, 1 for the address of the
input memory parameter, and 3 are clobbered and thus
cannot be used.
The i386 has 8 registers one is reserved for the stack pointer, and one is reserved for the frame pointer (at least
without -fomit-frame-pointer), leaving only 6, one short
of the required 7.
As a guess, egcs failed to properly not use one of the
registers marked clobbered.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=4134