aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog10
-rw-r--r--gcc/cp/class.c6
-rw-r--r--gcc/cp/cp-tree.h10
-rw-r--r--gcc/cp/decl.c1
-rw-r--r--gcc/cp/search.c14
5 files changed, 15 insertions, 26 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e623148..a2bdd49 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,13 @@
+2004-09-15 Nathan Sidwell <nathan@codesourcery.com>
+
+ * cp-tree.h (struct lang_decl_flags): Remove
+ needs_final_overrider.
+ (DECL_NEEDS_FINAL_OVERRIDER_P): Remove.
+ * decl.c (duplicate_decls): Do not copy DECL_NEEDS_FINAL_OVERRIDER_P.
+ * class.c (finish_struct_bits): Correct comment about
+ CLASSTYPE_PURE_VIRTUALS.
+ * search.c (get_pure_virtuals): Remove useless loop.
+
2004-09-14 Mark Mitchell <mark@codesourcery.com>
PR c++/17324
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 999551b..d31295a 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -1439,8 +1439,8 @@ finish_struct_bits (tree t)
}
if (BINFO_N_BASE_BINFOS (TYPE_BINFO (t)) && TYPE_POLYMORPHIC_P (t))
- /* For a class w/o baseclasses, `finish_struct' has set
- CLASS_TYPE_ABSTRACT_VIRTUALS correctly (by definition).
+ /* For a class w/o baseclasses, 'finish_struct' has set
+ CLASSTYPE_PURE_VIRTUALS correctly (by definition).
Similarly for a class whose base classes do not have vtables.
When neither of these is true, we might have removed abstract
virtuals (by providing a definition), added some (by declaring
@@ -1448,7 +1448,7 @@ finish_struct_bits (tree t)
recalculate what's really an abstract virtual at this point (by
looking in the vtables). */
get_pure_virtuals (t);
-
+
/* If this type has a copy constructor or a destructor, force its
mode to be BLKmode, and force its TREE_ADDRESSABLE bit to be
nonzero. This will cause it to be passed by invisible reference
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index aa25658c..5d788af 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -1522,16 +1522,15 @@ struct lang_decl_flags GTY(())
unsigned use_template : 2;
unsigned nonconverting : 1;
unsigned not_really_extern : 1;
- unsigned needs_final_overrider : 1;
unsigned initialized_in_class : 1;
unsigned assignment_operator_p : 1;
-
unsigned u1sel : 1;
+
unsigned u2sel : 1;
unsigned can_be_full : 1;
unsigned this_thunk_p : 1;
unsigned repo_available_p : 1;
- unsigned dummy : 3;
+ unsigned dummy : 4;
union lang_decl_u {
/* In a FUNCTION_DECL for which DECL_THUNK_P holds, this is
@@ -1883,11 +1882,6 @@ struct lang_decl GTY(())
#define DECL_PURE_VIRTUAL_P(NODE) \
(DECL_LANG_SPECIFIC (NODE)->decl_flags.pure_virtual)
-/* Nonzero for FUNCTION_DECL means that this member function
- must be overridden by derived classes. */
-#define DECL_NEEDS_FINAL_OVERRIDER_P(NODE) \
- (DECL_LANG_SPECIFIC (NODE)->decl_flags.needs_final_overrider)
-
/* True (in a FUNCTION_DECL) if NODE is a virtual function that is an
invalid overrider for a function from a base class. Once we have
complained about an invalid overrider we avoid complaining about it
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 97b5a1a..6128598 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -1582,7 +1582,6 @@ duplicate_decls (tree newdecl, tree olddecl)
DECL_STATIC_DESTRUCTOR (newdecl) |= DECL_STATIC_DESTRUCTOR (olddecl);
DECL_PURE_VIRTUAL_P (newdecl) |= DECL_PURE_VIRTUAL_P (olddecl);
DECL_VIRTUAL_P (newdecl) |= DECL_VIRTUAL_P (olddecl);
- DECL_NEEDS_FINAL_OVERRIDER_P (newdecl) |= DECL_NEEDS_FINAL_OVERRIDER_P (olddecl);
DECL_THIS_STATIC (newdecl) |= DECL_THIS_STATIC (olddecl);
if (DECL_OVERLOADED_OPERATOR_P (olddecl) != ERROR_MARK)
SET_OVERLOADED_OPERATOR_CODE
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index 906491e..99a9453 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -1908,20 +1908,6 @@ get_pure_virtuals (tree type)
/* Put the pure virtuals in dfs order. */
CLASSTYPE_PURE_VIRTUALS (type) = nreverse (CLASSTYPE_PURE_VIRTUALS (type));
-
- for (vbases = CLASSTYPE_VBASECLASSES (type), ix = 0;
- VEC_iterate (tree, vbases, ix, binfo); ix++)
- {
- tree virtuals;
-
- for (virtuals = BINFO_VIRTUALS (binfo); virtuals;
- virtuals = TREE_CHAIN (virtuals))
- {
- tree base_fndecl = BV_FN (virtuals);
- if (DECL_NEEDS_FINAL_OVERRIDER_P (base_fndecl))
- error ("`%#D' needs a final overrider", base_fndecl);
- }
- }
}
/* DEPTH-FIRST SEARCH ROUTINES. */