diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ff7b02db562d..df7b07eb8c6a 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2000-04-30 Scott Snyder + + * decl.c (finish_destructor_body): Use the base destructor when + destroying virtual bases. + 2000-04-30 Mark Mitchell * expr.c (cplus_expand_expr): Preserve temporaries when expanding diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index deb9e8f3077f..d9385f55a6d6 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -13875,7 +13875,7 @@ finish_destructor_body () TYPE_BINFO (current_class_type)); finish_expr_stmt (build_scoped_method_call - (current_class_ref, vb, complete_dtor_identifier, + (current_class_ref, vb, base_dtor_identifier, NULL_TREE)); } vbases = TREE_CHAIN (vbases); diff --git a/gcc/testsuite/g++.old-deja/g++.other/dtor9.C b/gcc/testsuite/g++.old-deja/g++.other/dtor9.C new file mode 100644 index 000000000000..6f0d5ac144bd --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/dtor9.C @@ -0,0 +1,23 @@ +int i; + +struct CC +{ + virtual ~CC () { ++i; } +}; + +class BB : virtual public CC +{ +}; + +class AA : public virtual BB +{ +}; + +int main () +{ + { + AA xx; + } + if (i != 1) + return 1; +}