aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Stump <mrs@apple.com>2009-09-05 08:45:02 +0000
committerMike Stump <mrs@apple.com>2009-09-05 08:45:02 +0000
commitb4d2861371d84a5cc98462676da4e6bb8c2d7c03 (patch)
tree44c54719330722917aac2f7f21bb2f21b303a1e6
parent078d778d8ea4a3975a985da4e8aaef2d269c82fa (diff)
Cleanups.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@81074 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/CGCXX.cpp31
1 files changed, 10 insertions, 21 deletions
diff --git a/lib/CodeGen/CGCXX.cpp b/lib/CodeGen/CGCXX.cpp
index e6b1acd01b..c054871c8f 100644
--- a/lib/CodeGen/CGCXX.cpp
+++ b/lib/CodeGen/CGCXX.cpp
@@ -1028,7 +1028,7 @@ public:
uint64_t o = Offset + Layout.getBaseClassOffset(Base);
StartNewTable();
Index_t AP;
- AP = GenerateVtableForBase(Base, true, true, MorallyVirtual, o, false);
+ AP = GenerateVtableForBase(Base, true, MorallyVirtual, o, false);
OverrideMethods(RD, AP, MorallyVirtual, o);
InstallThunks(AP);
}
@@ -1087,13 +1087,10 @@ public:
std::vector<llvm::Constant *> offsets;
- bool Top = true;
-
// vtables are composed from the chain of primaries.
if (PrimaryBase) {
if (PrimaryBaseWasVirtual)
IndirectPrimary.insert(PrimaryBase);
- Top = false;
Primaries(PrimaryBase, PrimaryBaseWasVirtual|MorallyVirtual, Offset);
}
@@ -1102,8 +1099,8 @@ public:
}
int64_t GenerateVtableForBase(const CXXRecordDecl *RD, bool forPrimary,
- bool Bottom, bool MorallyVirtual,
- int64_t Offset, bool ForVirtualBase) {
+ bool MorallyVirtual, int64_t Offset,
+ bool ForVirtualBase) {
if (!RD->isDynamicClass())
return 0;
@@ -1112,29 +1109,21 @@ public:
const bool PrimaryBaseWasVirtual = Layout.getPrimaryBaseWasVirtual();
std::vector<llvm::Constant *> offsets;
- // FIXME: Audit, is this right?
- if (Bottom) {
- extra = 0;
- GenerateVBaseOffsets(offsets, RD, Offset);
- if (ForVirtualBase)
- extra = offsets.size();
- }
-
- bool Top = true;
+ extra = 0;
+ GenerateVBaseOffsets(offsets, RD, Offset);
+ if (ForVirtualBase)
+ extra = offsets.size();
// vtables are composed from the chain of primaries.
if (PrimaryBase) {
if (PrimaryBaseWasVirtual)
IndirectPrimary.insert(PrimaryBase);
- Top = false;
Primaries(PrimaryBase, PrimaryBaseWasVirtual|MorallyVirtual, Offset);
}
// And add the virtuals for the class to the primary vtable.
AddMethods(RD, MorallyVirtual, Offset);
- if (!Bottom)
- return 0;
return end(RD, offsets, Layout, PrimaryBase, PrimaryBaseWasVirtual,
MorallyVirtual, Offset, ForVirtualBase);
}
@@ -1150,7 +1139,7 @@ public:
StartNewTable();
int64_t BaseOffset = BLayout.getVBaseClassOffset(Base);
Index_t AP;
- AP = GenerateVtableForBase(Base, false, true, true, BaseOffset, true);
+ AP = GenerateVtableForBase(Base, false, true, BaseOffset, true);
OverrideMethods(RD, AP, true, BaseOffset);
InstallThunks(AP);
}
@@ -1184,7 +1173,7 @@ public:
if (I == IndexFor.end()) {
std::vector<llvm::Constant *> methods;
VtableBuilder b(methods, RD, CGM);
- b.GenerateVtableForBase(RD, true, true, false, 0, false);
+ b.GenerateVtableForBase(RD, true, false, 0, false);
b.GenerateVtableForVBases(RD);
register_index(RD, b.getIndex());
I = IndexFor.find(RD);
@@ -1212,7 +1201,7 @@ llvm::Value *CodeGenFunction::GenerateVtable(const CXXRecordDecl *RD) {
VtableBuilder b(methods, RD, CGM);
// First comes the vtables for all the non-virtual bases...
- Offset = b.GenerateVtableForBase(RD, true, true, false, 0, false);
+ Offset = b.GenerateVtableForBase(RD, true, false, 0, false);
// then the vtables for all the virtual bases.
b.GenerateVtableForVBases(RD);