Patch for bug 17424
Joseph S. Myers
jsm@polyomino.org.uk
Sat Sep 18 19:19:00 GMT 2004
This patch fixes bug 17424, a tree-checking ICE regression for sizeof
applied to an undeclared variable.
Bootstrapped with no regressions on i686-pc-linux-gnu. Applied to
mainline.
--
Joseph S. Myers http://www.srcf.ucam.org/~jsm28/gcc/
http://www.srcf.ucam.org/~jsm28/gcc/#c90status - status of C90 for GCC 4.0
jsm@polyomino.org.uk (personal mail)
jsm28@gcc.gnu.org (Bugzilla assignments and CCs)
2004-09-18 Joseph S. Myers <jsm@polyomino.org.uk>
PR c/17424
* c-typeck.c (c_expr_sizeof_expr): Check for error_mark_node.
testsuite:
2004-09-18 Joseph S. Myers <jsm@polyomino.org.uk>
PR c/17424
* gcc.dg/pr17424-1.c: New test.
diff -rupN GCC.orig/gcc/c-typeck.c GCC/gcc/c-typeck.c
--- GCC.orig/gcc/c-typeck.c 2004-09-12 23:48:33.000000000 +0000
+++ GCC/gcc/c-typeck.c 2004-09-17 18:34:26.000000000 +0000
@@ -1849,9 +1849,18 @@ struct c_expr
c_expr_sizeof_expr (struct c_expr expr)
{
struct c_expr ret;
- ret.value = c_sizeof (TREE_TYPE (expr.value));
- ret.original_code = ERROR_MARK;
- pop_maybe_used (C_TYPE_VARIABLE_SIZE (TREE_TYPE (expr.value)));
+ if (expr.value == error_mark_node)
+ {
+ ret.value = error_mark_node;
+ ret.original_code = ERROR_MARK;
+ pop_maybe_used (false);
+ }
+ else
+ {
+ ret.value = c_sizeof (TREE_TYPE (expr.value));
+ ret.original_code = ERROR_MARK;
+ pop_maybe_used (C_TYPE_VARIABLE_SIZE (TREE_TYPE (expr.value)));
+ }
return ret;
}
diff -rupN GCC.orig/gcc/testsuite/gcc.dg/pr17424-1.c GCC/gcc/testsuite/gcc.dg/pr17424-1.c
--- GCC.orig/gcc/testsuite/gcc.dg/pr17424-1.c 1970-01-01 00:00:00.000000000 +0000
+++ GCC/gcc/testsuite/gcc.dg/pr17424-1.c 2004-09-17 18:36:14.000000000 +0000
@@ -0,0 +1,5 @@
+/* Test for bug 17424: ICE for sizeof an undeclared variable. */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+;int foezis = sizeof tni; /* { dg-error "'tni' undeclared" } */
More information about the Gcc-patches
mailing list