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
This commit is contained in:
Nathan Sidwell 2001-01-10 15:30:59 +00:00 committed by Nathan Sidwell
parent 042b4c4e4d
commit fd3f43e7a5
4 changed files with 46 additions and 0 deletions

View File

@ -1,3 +1,7 @@
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.

View File

@ -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,

View File

@ -1,3 +1,7 @@
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.

View File

@ -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)
{
}