From dc4cb34e154562600dd586d5fc916738a476c0f1 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Mon, 8 Sep 2003 03:05:52 +0000 Subject: re PR middle-end/11665 (ICE in struct initializer when taking address) 2003-09-07 Andrew Pinski PR middle-end/11665 * gcc.c-torture/compile/20030907-1.c: New test. * g++.dg/init/array11.C: New test. From-SVN: r71193 --- gcc/testsuite/ChangeLog | 6 ++++++ gcc/testsuite/g++.dg/init/array11.C | 25 ++++++++++++++++++++++++ gcc/testsuite/gcc.c-torture/compile/20030907-1.c | 25 ++++++++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 gcc/testsuite/g++.dg/init/array11.C create mode 100644 gcc/testsuite/gcc.c-torture/compile/20030907-1.c (limited to 'gcc') diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a88421b..4db007f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2003-09-07 Andrew Pinski + + PR middle-end/11665 + * gcc.c-torture/compile/20030907-1.c: New test. + * g++.dg/init/array11.C: New test. + 2003-09-07 Mark Mitchell PR c++/11852 diff --git a/gcc/testsuite/g++.dg/init/array11.C b/gcc/testsuite/g++.dg/init/array11.C new file mode 100644 index 0000000..e362b91 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/array11.C @@ -0,0 +1,25 @@ +/* PR 11665 + Orgin: jwhite@cse.unl.edu + The problem was in initializer_constant_valid_p, + "for a CONSTRUCTOR, only the last element + of the CONSTRUCTOR was being checked" + (from the email of the patch which fixed this). + This used to ICE because GCC thought gdt_table was a + constant value when it is not. */ + +int x; +struct gdt +{ +unsigned a,b,c,d,e,f; +}; +void f() +{ +struct gdt gdt_table[2]= +{ + { + 0, + ( (((unsigned)(&x))<<(24))&(-1<<(8)) ), + }, +}; +} + diff --git a/gcc/testsuite/gcc.c-torture/compile/20030907-1.c b/gcc/testsuite/gcc.c-torture/compile/20030907-1.c new file mode 100644 index 0000000..e362b91 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20030907-1.c @@ -0,0 +1,25 @@ +/* PR 11665 + Orgin: jwhite@cse.unl.edu + The problem was in initializer_constant_valid_p, + "for a CONSTRUCTOR, only the last element + of the CONSTRUCTOR was being checked" + (from the email of the patch which fixed this). + This used to ICE because GCC thought gdt_table was a + constant value when it is not. */ + +int x; +struct gdt +{ +unsigned a,b,c,d,e,f; +}; +void f() +{ +struct gdt gdt_table[2]= +{ + { + 0, + ( (((unsigned)(&x))<<(24))&(-1<<(8)) ), + }, +}; +} + -- cgit v1.1