Commit e4a95933 by Richard Guenther Committed by Richard Biener

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
parent 0bdf1263
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> 2010-01-01 H.J. Lu <hongjiu.lu@intel.com>
* builtins.c: Update copyright to 2010. * builtins.c: Update copyright to 2010.
......
/* Process declarations and variables for C compiler. /* Process declarations and variables for C compiler.
Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 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. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -5394,6 +5394,7 @@ grokdeclarator (const struct c_declarator *declarator, ...@@ -5394,6 +5394,7 @@ grokdeclarator (const struct c_declarator *declarator,
gcc_assert (itype); gcc_assert (itype);
TYPE_SIZE (type) = bitsize_zero_node; TYPE_SIZE (type) = bitsize_zero_node;
TYPE_SIZE_UNIT (type) = size_zero_node; TYPE_SIZE_UNIT (type) = size_zero_node;
SET_TYPE_STRUCTURAL_EQUALITY (type);
} }
if (array_parm_vla_unspec_p) if (array_parm_vla_unspec_p)
{ {
...@@ -5401,6 +5402,7 @@ grokdeclarator (const struct c_declarator *declarator, ...@@ -5401,6 +5402,7 @@ grokdeclarator (const struct c_declarator *declarator,
/* The type is complete. C99 6.7.5.2p4 */ /* The type is complete. C99 6.7.5.2p4 */
TYPE_SIZE (type) = bitsize_zero_node; TYPE_SIZE (type) = bitsize_zero_node;
TYPE_SIZE_UNIT (type) = size_zero_node; TYPE_SIZE_UNIT (type) = size_zero_node;
SET_TYPE_STRUCTURAL_EQUALITY (type);
} }
} }
......
2010-01-01 Richard Guenther <rguenther@suse.de> 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 PR middle-end/42559
* gcc.c-torture/compile/pr42559.c: New testcase. * gcc.c-torture/compile/pr42559.c: New testcase.
......
typedef unsigned char uint8_t;
uint8_t foo[1][0];
extern void abort (void);
int main()
{
if (sizeof (foo) != 0)
abort ();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment