[bugs] Internal compiler error while compiling test3

Jan Hubicka jh@suse.cz
Mon May 21 04:22:00 GMT 2001


> On Fri, 18 May 2001, Pavel Machek wrote:
> 
> > Hi!
> >
> > I tried to compile my testsuite with week old gcc, and it has
> > problems:
> >
> > pavel@bug:/usr/src/x86/userland$ ./mkit
> > x86_64-unknown-linux-ld: warning: cannot find entry symbol _start;
> > defaulting to 00000000000010b0
> > test3.c: In function `_start':
> > test3.c:86: warning: excess elements in struct initializer
> > test3.c:86: warning: (near initialization for `act.sa_mask')
> > test3.c:130: Internal compiler error in eliminate_regs, at
> > reload1.c:2593
> > Please submit a full bug report, with preprocessed source if
> > appropriate.
> > See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
> >
> > mkit and test3.c are attached.
> 
> I took a look at it, but this one's still over my head. An obvious
> workaround is to just use -O1 on this one, that at least works for me.
> 
> BTW, the warning you get is for a good reason. You initialize sa_mask with
> { 0, 0 } but it's a unsigned long sig[1].
Tricky.

The problem is that reload is unable to eliminate register in the asm_operands.
This is papered around by not allowing such operands in asm_operands (the same is
done for other instructions as well).
cse pass has created and REG_EQUAL note about asm_operands, that, of course,
can contain such register. For some purpose reload is trying to eliminate
REG_EQUAL contents as well (I am not sure if this is really needed)
and crashes, as it don't know how to handle that.

I am not sure about proper fix (whether it is now safe to remove REG_EQUAL
notes), so I've modified testcase for i386 and filled bugreport.  Hopefully
Bernd, or someone else more familiar with reload will know what to do with this
beast.

Honza
> 
> Bo.
> 
> -- 
> 
>      Bo Thorsen                 |   28 Merton Road
>      Free software developer    |   Slough, SL1 1QW
>      SuSE Labs                  |   England


More information about the Gcc-bugs mailing list