c-typeck.c (output_init_element): Return early if value is error_mark_node.
authorJoseph Myers <joseph@codesourcery.com>
Fri, 5 Nov 2004 22:21:30 +0000 (22:21 +0000)
committerJoseph Myers <jsm28@gcc.gnu.org>
Fri, 5 Nov 2004 22:21:30 +0000 (22:21 +0000)
* c-typeck.c (output_init_element): Return early if value is
error_mark_node.

testsuite:
* gcc.dg/init-undef-1.c: New test.

From-SVN: r90146

gcc/ChangeLog
gcc/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/init-undef-1.c [new file with mode: 0644]

index a1a60e7d22ca88a25efc4e91b589213a73d68279..749e21da0a3b2d34d54f455bc0e95a831c59b935 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-05  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * c-typeck.c (output_init_element): Return early if value is
+       error_mark_node.
+
 2004-11-05  James E Wilson  <wilson@specifixinc.com>
 
        * invoke.texi (-fno-guess-branch-probability): Rewrite.
index 723bd5affc11902592a850511b32859046041a5b..cf883b7d545040a0745948115232d27994eed1bc 100644 (file)
@@ -5667,7 +5667,7 @@ static void
 output_init_element (tree value, bool strict_string, tree type, tree field,
                     int pending)
 {
-  if (type == error_mark_node)
+  if (type == error_mark_node || value == error_mark_node)
     {
       constructor_erroneous = 1;
       return;
index f27f80b72b52fc50c9f9bd7c8755ca990315f999..11071c99158bf5a02640fefa2e36e70e38bb07cd 100644 (file)
@@ -1,3 +1,7 @@
+2004-11-05  Joseph S. Myers  <joseph@codesourcery.com>
+
+       * gcc.dg/init-undef-1.c: New test.
+
 2004-11-05  Joseph S. Myers  <joseph@codesourcery.com>
 
        * gcc.dg/20040910-1.c, gcc.dg/cpp/digraph2.c,
diff --git a/gcc/testsuite/gcc.dg/init-undef-1.c b/gcc/testsuite/gcc.dg/init-undef-1.c
new file mode 100644 (file)
index 0000000..b775889
--- /dev/null
@@ -0,0 +1,8 @@
+/* Invalid initializers should not receive an "is not constant"
+   error.  */
+/* Origin: Joseph Myers <joseph@codesourcery.com> */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+int p = c; /* { dg-error "undeclared" } */
+struct s { int a; } x = { b }; /* { dg-error "undeclared" } */