re PR c++/5713 (Redeclaration causes ice in in make_decl_rtl, at varasm.c:835)
authorJakub Jelinek <jakub@redhat.com>
Wed, 20 Feb 2002 22:59:35 +0000 (23:59 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 20 Feb 2002 22:59:35 +0000 (23:59 +0100)
PR c++/5713
* c-decl.c (duplicate_decls): Return 0 if issued error about
redeclaration.

* decl.c (duplicate_decls): Return 0 if issued error about
redeclaration.

* gcc.dg/noncompile/20020220-1.c: New test.

From-SVN: r49915

gcc/ChangeLog
gcc/c-decl.c
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/noncompile/20020220-1.c [new file with mode: 0644]

index 235f625222d594eeaa2c8c1ea16d1ec312a2ec0d..b5f5fcd1e9c458e20d25c97a0212579d0ea1741d 100644 (file)
@@ -1,3 +1,9 @@
+2002-02-20  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/5713
+       * c-decl.c (duplicate_decls): Return 0 if issued error about
+       redeclaration.
+
 2002-02-20  Roger Sayle  <roger@eyesopen.com>
            Jakub Jelinek  <jakub@redhat.com>
 
index 1ab120af1df345dd2f88f95a128711d385b24fce..6e7c3ca78c0d09db465469fdae92340e54284f94 100644 (file)
@@ -1690,6 +1690,7 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
                             && current_binding_level == global_binding_level)
                            ? "`%s' previously defined here"
                            : "`%s' previously declared here"));
+         return 0;
        }
       else if (TREE_CODE (newdecl) == TYPE_DECL
                && (DECL_IN_SYSTEM_HEADER (olddecl)
index 3f4016330dd32b0372982cfa8c6ae684525a1eb0..975918426331f3d05f68afb06484aba4bb648d36 100644 (file)
@@ -1,3 +1,8 @@
+2002-02-20  Jakub Jelinek  <jakub@redhat.com>
+
+       * decl.c (duplicate_decls): Return 0 if issued error about
+       redeclaration.
+
 2002-02-19  Jason Merrill  <jason@redhat.com>
 
        ABI change: Mangle `void (A::*)() const' as 
index bd5bdc26b047414a151c0f398b88f8add7d67f2a..acac552ce4e6ada4afa6a3e887cebb2434449a3f 100644 (file)
@@ -3344,6 +3344,7 @@ duplicate_decls (newdecl, olddecl)
                          && namespace_bindings_p ())
                         ? "`%#D' previously defined here"
                         : "`%#D' previously declared here", olddecl);
+         return 0;
        }
       else if (TREE_CODE (olddecl) == FUNCTION_DECL
               && DECL_INITIAL (olddecl) != NULL_TREE
index 90b39b227f1e0fafd8a1cb5c194f687928f43a54..65b5ecbb594a8f0c29227a0f5466834f18954b4c 100644 (file)
@@ -4,6 +4,8 @@
 
        * gcc.dg/20020219-1.c: New test.
 
+       * gcc.dg/noncompile/20020220-1.c: New test.
+
 2002-02-17  Jakub Jelinek  <jakub@redhat.com>
 
        * gcc.c-torture/execute/20020216-1.c: New test.
diff --git a/gcc/testsuite/gcc.dg/noncompile/20020220-1.c b/gcc/testsuite/gcc.dg/noncompile/20020220-1.c
new file mode 100644 (file)
index 0000000..c455f7e
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR c++/5713
+   Test that there are no ICEs after redeclaration error.  */
+
+int foo (const char*, const char*);
+
+void bar (void)
+{
+  const char *s = "bar";
+  int i;                       /* { dg-error "previously declared here" } */
+  int size = 2;
+  int i = foo (s, s + size);   /* { dg-error "redeclaration of" } */
+}