diff options
author | Richard Guenther <rguenther@suse.de> | 2010-01-01 17:19:02 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-01-01 17:19:02 +0000 |
commit | e4a95933a61da64ab7b32186baa2c62312c1f623 (patch) | |
tree | e806db336512e949dfdcaf872571f7f2ca326623 | |
parent | 0bdf1263df14af97c320f38a8cacc38a74fcc176 (diff) | |
download | gcc-e4a95933a61da64ab7b32186baa2c62312c1f623.zip gcc-e4a95933a61da64ab7b32186baa2c62312c1f623.tar.gz gcc-e4a95933a61da64ab7b32186baa2c62312c1f623.tar.bz2 |
re PR c/42570 (ICE in get_alias_set, at alias.c:710)
2010-01-01 Richard Guenther <rguenther@suse.de>
PR c/42570
* c-decl.c (grokdeclarator): For zero-size arrays force
structural equality checks as layout_type does.
* gcc.c-torture/execute/pr42570.c: New testcase.
From-SVN: r155557
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr42570.c | 9 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d7f7307..7db9675 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-01-01 Richard Guenther <rguenther@suse.de> + + PR c/42570 + * c-decl.c (grokdeclarator): For zero-size arrays force + structural equality checks as layout_type does. + 2010-01-01 H.J. Lu <hongjiu.lu@intel.com> * builtins.c: Update copyright to 2010. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 0655197..a244a83 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -1,6 +1,6 @@ /* Process declarations and variables for C compiler. Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GCC. @@ -5394,6 +5394,7 @@ grokdeclarator (const struct c_declarator *declarator, gcc_assert (itype); TYPE_SIZE (type) = bitsize_zero_node; TYPE_SIZE_UNIT (type) = size_zero_node; + SET_TYPE_STRUCTURAL_EQUALITY (type); } if (array_parm_vla_unspec_p) { @@ -5401,6 +5402,7 @@ grokdeclarator (const struct c_declarator *declarator, /* The type is complete. C99 6.7.5.2p4 */ TYPE_SIZE (type) = bitsize_zero_node; TYPE_SIZE_UNIT (type) = size_zero_node; + SET_TYPE_STRUCTURAL_EQUALITY (type); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4608794..35ea64b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2010-01-01 Richard Guenther <rguenther@suse.de> + PR c/42570 + * gcc.c-torture/execute/pr42570.c: New testcase. + +2010-01-01 Richard Guenther <rguenther@suse.de> + PR middle-end/42559 * gcc.c-torture/compile/pr42559.c: New testcase. diff --git a/gcc/testsuite/gcc.c-torture/execute/pr42570.c b/gcc/testsuite/gcc.c-torture/execute/pr42570.c new file mode 100644 index 0000000..99a8d80 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr42570.c @@ -0,0 +1,9 @@ +typedef unsigned char uint8_t; +uint8_t foo[1][0]; +extern void abort (void); +int main() +{ + if (sizeof (foo) != 0) + abort (); + return 0; +} |