The following invalid code snippet triggers an ICE since GCC 3.3: ================ struct A {}; int A::* x[]; ================ bug.cc:2: internal compiler error: in build_zero_init, at cp/init.c:226 Please submit a full bug report, [etc.]
Another testcase: struct A {A();int A::* t;}; A x[];
I have a fix for both testcases, the problem is the same.
Subject: Bug 29002 Author: pinskia Date: Fri Sep 15 04:50:04 2006 New Revision: 116962 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116962 Log: 2006-09-14 Andrew Pinski <pinskia@physics.uc.edu> PR C++/29002 * init.c (build_zero_init): If we have an error mark node for the array size, return. 2006-09-14 Andrew Pinski <pinskia@physics.uc.edu> PR C++/29002 * g++.dg/init/array22.C: New test. * g++.dg/init/array23.C: New test. Added: trunk/gcc/testsuite/g++.dg/init/array22.C trunk/gcc/testsuite/g++.dg/init/array23.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/init.c trunk/gcc/testsuite/ChangeLog
Fixed at least on the mainline.
Subject: Bug 29002 Author: pinskia Date: Sat Oct 7 22:54:09 2006 New Revision: 117542 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117542 Log: 2006-10-07 Andrew Pinski <pinskia@physics.uc.edu> PR C++/29002 * init.c (build_zero_init): If we have an error mark node for the array size, return. 2006-10-07 Andrew Pinski <pinskia@physics.uc.edu> PR C++/29002 * g++.dg/init/array22.C: New test. * g++.dg/init/array23.C: New test. Added: branches/gcc-4_1-branch/gcc/testsuite/g++.dg/init/array22.C - copied unchanged from r116962, trunk/gcc/testsuite/g++.dg/init/array22.C branches/gcc-4_1-branch/gcc/testsuite/g++.dg/init/array23.C - copied unchanged from r116962, trunk/gcc/testsuite/g++.dg/init/array23.C Modified: branches/gcc-4_1-branch/gcc/cp/ChangeLog branches/gcc-4_1-branch/gcc/cp/init.c branches/gcc-4_1-branch/gcc/testsuite/ChangeLog
Fixed now on the 4.1 branch.
Subject: Bug 29002 Author: pinskia Date: Wed Oct 11 14:55:07 2006 New Revision: 117635 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117635 Log: 2006-10-11 Andrew Pinski <pinskia@physics.uc.edu> PR C++/29002 * init.c (build_zero_init): If we have an error mark node for the array size, return. 2006-10-11 Andrew Pinski <pinskia@physics.uc.edu> PR C++/29002 * g++.dg/init/array22.C: New test. * g++.dg/init/array23.C: New test. Added: branches/gcc-4_0-branch/gcc/testsuite/g++.dg/init/array22.C - copied unchanged from r116962, trunk/gcc/testsuite/g++.dg/init/array22.C branches/gcc-4_0-branch/gcc/testsuite/g++.dg/init/array23.C - copied unchanged from r116962, trunk/gcc/testsuite/g++.dg/init/array23.C Modified: branches/gcc-4_0-branch/gcc/cp/ChangeLog branches/gcc-4_0-branch/gcc/cp/init.c branches/gcc-4_0-branch/gcc/testsuite/ChangeLog
Fixed.