aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2003-03-12 10:54:38 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2003-03-12 09:54:38 +0000
commit8a7d6cb3d82be44da036f45e244d01cd4f9ab0e5 (patch)
tree2b6f90fa1ae94ee69866e8a505fb8ad0cde87159
parentdb1077d3073cd525c15c5b957258685bfa224c18 (diff)
downloadgcc-8a7d6cb3d82be44da036f45e244d01cd4f9ab0e5.zip
gcc-8a7d6cb3d82be44da036f45e244d01cd4f9ab0e5.tar.gz
gcc-8a7d6cb3d82be44da036f45e244d01cd4f9ab0e5.tar.bz2
re PR c/9928 (ICE on duplicate enum declaration)
PR c/9928 * c-decl.c (duplicate_decls): Discard the initializer of the new decl only if it is a VAR_DECL. From-SVN: r64235
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/c-decl.c3
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/decl-3.c5
4 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f0f4738..7dc4ec5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2003-03-12 Eric Botcazou <ebotcazou@libertysurf.fr>
+ PR c/9928
+ * c-decl.c (duplicate_decls): Discard the initializer of the new decl
+ only if it is a VAR_DECL.
+
+2003-03-12 Eric Botcazou <ebotcazou@libertysurf.fr>
+
PR optimization/9888
* config/i386/i386.md (jcc_1): Fix range.
(jcc_2): Likewise.
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index f7996f1..2aa0ee7 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -1146,7 +1146,8 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
to variables that were declared between olddecl and newdecl. This
will make the initializer invalid for olddecl in case it gets
assigned to olddecl below. */
- DECL_INITIAL (newdecl) = 0;
+ if (TREE_CODE (newdecl) == VAR_DECL)
+ DECL_INITIAL (newdecl) = 0;
}
/* TLS cannot follow non-TLS declaration. */
else if (TREE_CODE (olddecl) == VAR_DECL && TREE_CODE (newdecl) == VAR_DECL
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3e0633c..7340556 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2003-03-12 Eric Botcazou <ebotcazou@libertysurf.fr>
+ * gcc.dg/decl-3.c: New test.
+
+2003-03-12 Eric Botcazou <ebotcazou@libertysurf.fr>
+
* gcc.dg/i386-loop-2.c: New test.
2003-03-11 Mark Mitchell <mark@codesourcery.com>
diff --git a/gcc/testsuite/gcc.dg/decl-3.c b/gcc/testsuite/gcc.dg/decl-3.c
new file mode 100644
index 0000000..b8d00d0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/decl-3.c
@@ -0,0 +1,5 @@
+/* PR c/9928 */
+/* { dg-do compile } */
+
+enum { CODES }; /* { dg-error "previous declaration" } */
+enum { CODES }; /* { dg-error "conflicting types" } */