Bug 22089 - [4.1 Regression] bootstrap ices / insn does not satisfy its constraints.
Summary: [4.1 Regression] bootstrap ices / insn does not satisfy its constraints.
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.1.0
: P2 normal
Target Milestone: 4.1.0
Assignee: Not yet assigned to anyone
URL:
Keywords: build, ice-on-valid-code, monitored
Depends on:
Blocks:
 
Reported: 2005-06-16 09:17 UTC by Pawel Sikora
Modified: 2005-06-17 20:35 UTC (History)
3 users (show)

See Also:
Host: i686-pld-linux
Target: i686-pld-linux
Build: i686-pld-linux
Known to work:
Known to fail:
Last reconfirmed: 2005-06-16 11:41:41


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pawel Sikora 2005-06-16 09:17:52 UTC
# gcc-4.1-20050616/08:28cvs 
 
(...) 
stage1/xgcc -Bstage1/ -B/usr/i686-pld-linux/bin/ -c   -O2 -march=i686  
-mtune=pentium4  -pipe -DIN_GCC   -W -Wall -Wwrite-strings -Wstrict-prototypes  
-Wmissing-prototypes -pedantic -Wno-long-long -Wno-variadic-macros  
-Wold-style-definition  -fno-common   -DHAVE_CONFIG_H    -I. -I. -I../../gcc  
-I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include  \  
        ../../gcc/config/i386/i386.c -o i386.o  
../../gcc/config/i386/i386.c: In function 'ix86_expand_vector_init':  
../../gcc/config/i386/i386.c:17034: error: insn does not satisfy its  
constraints:  
(insn 368 344 380 4 (set (reg:QI 138)  
        (const_int 0 [0x0])) 45 {*movqi_1} (nil)  
    (expr_list:REG_EQUIV (const_int 0 [0x0])  
        (nil)))  
../../gcc/config/i386/i386.c:17034: internal compiler error:  
in reload_cse_simplify_operands, at postreload.c:391
Comment 1 Pawel Sikora 2005-06-16 09:53:02 UTC
-mtune=pentium4 causes ice. 
 
$ stage1/xgcc -Bstage1 i386.i -c -march=i686 -O2 works fine. 
 
Comment 2 Volker Reichelt 2005-06-16 11:41:41 UTC
Confirmed.

The following testcase crashes the mainline compiler (-O -march=pentium4):

=========================================
struct A
{
  struct A* p;
};

int bar(struct A*, struct A*);
int baz();

void foo (int i, struct A* q)
{
  char c, d = 1;

  while (i)
    {
      if (q)
        c = 1;
      if (q->p->p)
        d = 0;
      if (bar (q->p->p, q->p))
        c = 0;
      --i;
    }

  if (c && d && baz ())
    return;
}
=========================================
Comment 3 Volker Reichelt 2005-06-16 12:26:28 UTC
Bernd, this was introduced by your patch
http://gcc.gnu.org/ml/gcc-cvs/2005-06/msg00559.html

Could you please have a look?
Comment 4 Andrew Pinski 2005-06-17 14:39:11 UTC
Fixed by RTH's patch in
<http://gcc.gnu.org/ml/gcc-patches/2005-06/msg01487.html>.
Comment 5 Andrew Pinski 2005-06-17 14:49:13 UTC
Woops the patch has not been checked in yet for some reason I thought it was.
Comment 6 Laurent GUERBY 2005-06-17 17:17:34 UTC
For the record, the following 12 ACATS tests get the same ICE on x86-linux.

c38202a 
c3a0004 
c910001 
c940005 
c940010 
c940013 
c95086c 
c95086e 
c95086f 
c951002 
c954024 
c954026
Comment 7 Laurent GUERBY 2005-06-17 20:32:38 UTC
All ACATS fail are fixed by RTH patch.

http://gcc.gnu.org/ml/gcc-testresults/2005-06/msg01046.html
Comment 8 Richard Henderson 2005-06-17 20:35:35 UTC
Fixed.