From: Jakub Jelinek Date: Wed, 20 Feb 2002 22:59:35 +0000 (+0100) Subject: re PR c++/5713 (Redeclaration causes ice in in make_decl_rtl, at varasm.c:835) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=00fae85dcb96cb20e723b37ae16dcf1cf09434da;p=gcc.git re PR c++/5713 (Redeclaration causes ice in in make_decl_rtl, at varasm.c:835) 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 235f625222d..b5f5fcd1e9c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-02-20 Jakub Jelinek + + PR c++/5713 + * c-decl.c (duplicate_decls): Return 0 if issued error about + redeclaration. + 2002-02-20 Roger Sayle Jakub Jelinek diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 1ab120af1df..6e7c3ca78c0 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -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) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3f4016330dd..97591842633 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-02-20 Jakub Jelinek + + * decl.c (duplicate_decls): Return 0 if issued error about + redeclaration. + 2002-02-19 Jason Merrill ABI change: Mangle `void (A::*)() const' as diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index bd5bdc26b04..acac552ce4e 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -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 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 90b39b227f1..65b5ecbb594 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -4,6 +4,8 @@ * gcc.dg/20020219-1.c: New test. + * gcc.dg/noncompile/20020220-1.c: New test. + 2002-02-17 Jakub Jelinek * 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 index 00000000000..c455f7e9d30 --- /dev/null +++ b/gcc/testsuite/gcc.dg/noncompile/20020220-1.c @@ -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" } */ +}