optimization/10017: [3.2/3.3/3.4 regression] ICE: unable to find a register to spill in class `GENERAL_REGS'

Volker Reichelt reichelt@igpm.rwth-aachen.de
Mon Mar 10 21:06:00 GMT 2003


The following reply was made to PR optimization/10017; it has been noted by GNATS.

From: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org, qboosh@pld.org.pl
Cc:  
Subject: Re: optimization/10017: [3.2/3.3/3.4 regression] ICE: unable to find a
 register to spill in class `GENERAL_REGS'
Date: Mon, 10 Mar 2003 22:04:33 +0100 (CET)

 Here's a reduced testcase:
 
 ---------------------------------snip here---------------------------
 void      foo (long long i);
 long long bar (int *p);
 
 void baz()
 {
     static void *array[2] = { &&L0, &&L1 };
 
     register void *p asm ("esi");
     register int *q asm ("edi");
     register int *r asm ("ebx");
 
     for(;;)
     {
         L0: *q = *r; goto *p;
         L1: foo(bar(q) << *q);
     }
 }
 ---------------------------------snip here---------------------------
 
 It crashes every compiler version since 3.0, but compiles fine with gcc 2.95.x.
 (Just compile with "gcc -march=i686 -c".)
 
 (The problems with gcc 2.95.x concerning the original example seem to be a
 different issue.) Therefore, I rate this as a regression.
 
 The bug category is probably wrong, perhaps it is a middle-end bug
 or even inline-asm since the register variable have "asm" attached.
 Could somebody with more insight change the categeory?
 
 Regards,
 Volker
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=10017
 
 



More information about the Gcc-prs mailing list