re PR middle-end/22028 (ICE after invalid struct declaration)

PR middle-end/22028
	* gimplify.c (gimplify_type_sizes): Check for type == error_mark_node
	earlier in the function.

	* gcc.dg/20050620-1.c: New test.

From-SVN: r101332
This commit is contained in:
Jakub Jelinek 2005-06-26 07:23:48 +02:00 committed by Jakub Jelinek
parent 7a1df4e2d7
commit 19dbbf3697
4 changed files with 26 additions and 3 deletions

View File

@ -1,5 +1,9 @@
2005-06-26 Jakub Jelinek <jakub@redhat.com>
PR middle-end/22028
* gimplify.c (gimplify_type_sizes): Check for type == error_mark_node
earlier in the function.
* regrename.c (copy_value): Don't replace fixed or global
regs with older regs.

View File

@ -4524,15 +4524,14 @@ gimplify_type_sizes (tree type, tree *list_p)
{
tree field, t;
if (type == NULL)
if (type == NULL || type == error_mark_node)
return;
/* We first do the main variant, then copy into any other variants. */
type = TYPE_MAIN_VARIANT (type);
/* Avoid infinite recursion. */
if (TYPE_SIZES_GIMPLIFIED (type)
|| type == error_mark_node)
if (TYPE_SIZES_GIMPLIFIED (type))
return;
TYPE_SIZES_GIMPLIFIED (type) = 1;

View File

@ -1,3 +1,8 @@
2005-06-26 Jakub Jelinek <jakub@redhat.com>
PR middle-end/22028
* gcc.dg/20050620-1.c: New test.
2005-06-26 Kazu Hirata <kazu@codesourcery.com>
PR tree-optimization/22026

View File

@ -0,0 +1,15 @@
/* PR middle-end/22028 */
/* { dg-do compile } */
/* { dg-options "" } */
void
foo (void)
{
struct { int i[]; } u; /* { dg-error "flexible array member" } */
}
void
bar (void)
{
struct { struct a b; } c; /* { dg-error "has incomplete type" } */
}