# 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
-mtune=pentium4 causes ice. $ stage1/xgcc -Bstage1 i386.i -c -march=i686 -O2 works fine.
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; } =========================================
Bernd, this was introduced by your patch http://gcc.gnu.org/ml/gcc-cvs/2005-06/msg00559.html Could you please have a look?
Fixed by RTH's patch in <http://gcc.gnu.org/ml/gcc-patches/2005-06/msg01487.html>.
Woops the patch has not been checked in yet for some reason I thought it was.
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
All ACATS fail are fixed by RTH patch. http://gcc.gnu.org/ml/gcc-testresults/2005-06/msg01046.html
Fixed.