aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2002-04-29 17:11:36 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2002-04-29 17:11:36 +0200
commit3a73bffb63125f29e0e6bb7925f5a8a510560aef (patch)
tree45ef7ff00e2ed142db5704d07e2e793969d3b424 /gcc
parent44aefada4cec9dd4c2f78458210d37a4e19b697d (diff)
downloadgcc-3a73bffb63125f29e0e6bb7925f5a8a510560aef.zip
gcc-3a73bffb63125f29e0e6bb7925f5a8a510560aef.tar.gz
gcc-3a73bffb63125f29e0e6bb7925f5a8a510560aef.tar.bz2
re PR c++/6477 (Segfault on conflicting types in trivial code)
PR c++/6477 * decl.c (follow_tag_typedef): Check if TYPE_NAME (original) is non-NULL first. * g++.dg/parse/typedef1.C: New test. From-SVN: r52900
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/decl.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/parse/typedef1.C3
4 files changed, 15 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9ad6e11..8f92105 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2002-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/6477
+ * decl.c (follow_tag_typedef): Check if TYPE_NAME (original) is
+ non-NULL first.
+
2002-04-29 Mark Mitchell <mark@codesourcery.com>
PR c++/6492
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 450bc39..9f03294 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -5332,6 +5332,8 @@ follow_tag_typedef (type)
tree original;
original = original_type (type);
+ if (! TYPE_NAME (original))
+ return NULL_TREE;
if (TYPE_IDENTIFIER (original) == TYPE_IDENTIFIER (type)
&& (CP_DECL_CONTEXT (TYPE_NAME (original))
== CP_DECL_CONTEXT (TYPE_NAME (type)))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 722263a..8c34771 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2002-04-29 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/parse/typedef1.C: New test.
+
2002-04-29 Mark Mitchell <mark@codesourcery.com>
PR c++/6486
diff --git a/gcc/testsuite/g++.dg/parse/typedef1.C b/gcc/testsuite/g++.dg/parse/typedef1.C
new file mode 100644
index 0000000..5dbd16a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/typedef1.C
@@ -0,0 +1,3 @@
+// PR c++/6477
+typedef struct A_ *A; // { dg-error "previous declaration as" }
+typedef struct A B; // { dg-error "conflicting types" }