Fix a refacto that broke the clang-on-clang build.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95994 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Anders Carlsson 2010-02-12 18:14:46 +00:00
Родитель 52b2e1e077
Коммит c1eec891eb
2 изменённых файлов: 21 добавлений и 8 удалений

Просмотреть файл

@ -1924,8 +1924,6 @@ void CGVtableInfo::ComputeMethodVtableIndices(const CXXRecordDecl *RD) {
if (!MD->isVirtual()) if (!MD->isVirtual())
continue; continue;
bool ShouldAddEntryForMethod = true;
// Check if this method overrides a method in the primary base. // Check if this method overrides a method in the primary base.
if (const CXXMethodDecl *OverriddenMD = if (const CXXMethodDecl *OverriddenMD =
OverridesMethodInPrimaryBase(MD, PrimaryBases)) { OverridesMethodInPrimaryBase(MD, PrimaryBases)) {
@ -1948,14 +1946,10 @@ void CGVtableInfo::ComputeMethodVtableIndices(const CXXRecordDecl *RD) {
} }
// We don't need to add an entry for this method. // We don't need to add an entry for this method.
ShouldAddEntryForMethod = false; continue;
break;
} }
} }
if (!ShouldAddEntryForMethod)
continue;
if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) { if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) {
if (MD->isImplicit()) { if (MD->isImplicit()) {
assert(!ImplicitVirtualDtor && assert(!ImplicitVirtualDtor &&

Просмотреть файл

@ -1,6 +1,8 @@
// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
// PR5021 // PR5021
namespace PR5021 {
struct A { struct A {
virtual void f(char); virtual void f(char);
}; };
@ -17,3 +19,20 @@ struct B : virtual A {
void f(B * b) { void f(B * b) {
b->f(); b->f();
} }
}
namespace Test1 {
struct A {
virtual ~A();
};
struct B : A {
virtual ~B();
virtual void f();
};
void f(B *b) {
b->f();
}
}