aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2001-01-10 15:30:59 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2001-01-10 15:30:59 +0000
commitfd3f43e7a5cf39dcb1baff29957f9690a570c41e (patch)
treec51fd58fe9ec6d049d81aef90bf7214417c3c358 /gcc
parent042b4c4e4d64f3eada18d9347b3c77bd6c01d002 (diff)
downloadgcc-fd3f43e7a5cf39dcb1baff29957f9690a570c41e.zip
gcc-fd3f43e7a5cf39dcb1baff29957f9690a570c41e.tar.gz
gcc-fd3f43e7a5cf39dcb1baff29957f9690a570c41e.tar.bz2
class.c (duplicate_tag_error): Clear more flags.
cp: * class.c (duplicate_tag_error): Clear more flags. testsuite: * g++.old_deja/g++.other/crash39.C: New test. From-SVN: r38867
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/class.c20
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/crash39.C18
4 files changed, 46 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e84c48a..6146404 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,9 @@
2001-01-10 Nathan Sidwell <nathan@codesourcery.com>
+ * class.c (duplicate_tag_error): Clear more flags.
+
+2001-01-10 Nathan Sidwell <nathan@codesourcery.com>
+
* call.c (build_new_method_call): Use binfo_for_vbase.
2001-01-10 Joseph S. Myers <jsm28@cam.ac.uk>
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index ada9779..9079f97 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -2374,6 +2374,26 @@ duplicate_tag_error (t)
TYPE_VFIELD (t) = NULL_TREE;
TYPE_CONTEXT (t) = NULL_TREE;
TYPE_NONCOPIED_PARTS (t) = NULL_TREE;
+
+ TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t) = 0;
+ TYPE_HAS_CONSTRUCTOR (t) = 0;
+ TYPE_HAS_DESTRUCTOR (t) = 0;
+ TYPE_HAS_CONVERSION (t) = 0;
+ TYPE_HAS_ASSIGN_REF (t) = 0;
+ TYPE_HAS_CONST_ASSIGN_REF (t) = 0;
+ TYPE_HAS_INIT_REF (t) = 0;
+ TYPE_HAS_CONST_INIT_REF (t) = 0;
+ TYPE_HAS_NEW_OPERATOR (t) = 0;
+ TYPE_HAS_ARRAY_NEW_OPERATOR (t) = 0;
+ TYPE_HAS_DEFAULT_CONSTRUCTOR (t) = 0;
+ CLASSTYPE_HAS_MUTABLE (t) = 0;
+ CLASSTYPE_NON_POD_P (t) = 0;
+ CLASSTYPE_NEARLY_EMPTY_P (t) = 0;
+ CLASSTYPE_NON_AGGREGATE (t) = 0;
+ TYPE_HAS_REAL_ASSIGN_REF (t) = 0;
+ TYPE_HAS_COMPLEX_ASSIGN_REF (t) = 0;
+ TYPE_HAS_ABSTRACT_ASSIGN_REF (t) = 0;
+ TYPE_HAS_COMPLEX_INIT_REF (t) = 0;
}
/* Make the BINFO's vtablehave N entries, including RTTI entries,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 0dcc078..c4ae1e2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2001-01-10 Nathan Sidwell <nathan@codesourcery.com>
+ * g++.old_deja/g++.other/crash39.C: New test.
+
+2001-01-10 Nathan Sidwell <nathan@codesourcery.com>
+
* g++.old_deja/g++.other/vbase4.C: New test.
2001-01-08 Jonathan Larmour <jlarmour@redhat.com>
diff --git a/gcc/testsuite/g++.old-deja/g++.other/crash39.C b/gcc/testsuite/g++.old-deja/g++.other/crash39.C
new file mode 100644
index 0000000..0dbd395
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/crash39.C
@@ -0,0 +1,18 @@
+// Build don't link:
+
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 10 Jan 2001 <nathan@codesourcery.com>
+
+// Bug 595. We failed to clear out some things after seeing a duplicate
+// struct definition. That caused us to become inconsistent.
+
+struct X
+{
+ ~X ();
+};
+struct S { X a; }; // ERROR - previous defn
+struct S { X a; }; // ERROR - redefinition
+
+void c1(S s)
+{
+}