From: Volker Reichelt Date: Tue, 30 May 2006 13:39:19 +0000 (+0000) Subject: re PR c/27718 (ICE with sizeof of incomplete type) X-Git-Tag: releases/gcc-4.0.4~653 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1dc9b8da579146372ee5c978f1e9302a0247017;p=thirdparty%2Fgcc.git re PR c/27718 (ICE with sizeof of incomplete type) PR c/27718 * c-typeck.c (c_expr_sizeof_type): Handle invalid types. * gcc.dg/sizeof-1.c: New test. From-SVN: r114237 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1aad6d82eda3..aa946ca0a823 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-05-30 Volker Reichelt + + PR c/27718 + * c-typeck.c (c_expr_sizeof_type): Handle invalid types. + 2006-05-22 Volker Reichelt PR c++/27451 diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 28a6f70e5a4e..bed7b9a648e6 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -1955,7 +1955,8 @@ c_expr_sizeof_type (struct c_type_name *t) type = groktypename (t); ret.value = c_sizeof (type); ret.original_code = ERROR_MARK; - pop_maybe_used (C_TYPE_VARIABLE_SIZE (type)); + pop_maybe_used (type != error_mark_node + ? C_TYPE_VARIABLE_SIZE (type) : false); return ret; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 48a2af657d40..8dc0d9740b50 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-05-30 Volker Reichelt + + PR c/27718 + * gcc.dg/sizeof-1.c: New test. + 2006-05-29 Volker Reichelt PR c++/27713 diff --git a/gcc/testsuite/gcc.dg/sizeof-1.c b/gcc/testsuite/gcc.dg/sizeof-1.c new file mode 100644 index 000000000000..9541a4c273ad --- /dev/null +++ b/gcc/testsuite/gcc.dg/sizeof-1.c @@ -0,0 +1,4 @@ +/* PR c/27718 */ +/* { dg-do compile } */ + +int i = sizeof(struct A[]); /* { dg-error "incomplete" } */