diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2001-01-10 15:30:59 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2001-01-10 15:30:59 +0000 |
commit | fd3f43e7a5cf39dcb1baff29957f9690a570c41e (patch) | |
tree | c51fd58fe9ec6d049d81aef90bf7214417c3c358 /gcc | |
parent | 042b4c4e4d64f3eada18d9347b3c77bd6c01d002 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/class.c | 20 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/crash39.C | 18 |
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) +{ +} |