Skip to content
Snippets Groups Projects
Commit de3a53a8 authored by Reid Kleckner's avatar Reid Kleckner
Browse files

Reduce indentation of some VFTableBuilder code.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@198085 91177308-0d34-0410-b5e6-96231b3b80d8
parent 4f1d76ff
No related branches found
No related tags found
No related merge requests found
......@@ -2916,30 +2916,30 @@ void VFTableBuilder::AddMethods(BaseSubobject Base, unsigned BaseDepth,
"Should not have method info for this method yet!");
MethodInfoMap.insert(std::make_pair(MD, MI));
continue;
} else {
// In case we need a return adjustment, we'll add a new slot for
// the overrider and put a return-adjusting thunk where the overridden
// method was in the vftable.
// For now, just mark the overriden method as shadowed by a new slot.
OverriddenMethodInfo.Shadowed = true;
ForceThunk = true;
// Also apply this adjustment to the shadowed slots.
if (!ThisAdjustmentOffset.isEmpty()) {
// FIXME: this is O(N^2), can be O(N).
const CXXMethodDecl *SubOverride = OverriddenMD;
while ((SubOverride =
FindNearestOverriddenMethod(SubOverride, VisitedBases))) {
MethodInfoMapTy::iterator SubOverrideIterator =
MethodInfoMap.find(SubOverride);
if (SubOverrideIterator == MethodInfoMap.end())
break;
MethodInfo &SubOverrideMI = SubOverrideIterator->second;
assert(SubOverrideMI.Shadowed);
VTableThunks[SubOverrideMI.VFTableIndex].This =
ThisAdjustmentOffset;
AddThunk(MD, VTableThunks[SubOverrideMI.VFTableIndex]);
}
}
// In case we need a return adjustment, we'll add a new slot for
// the overrider and put a return-adjusting thunk where the overridden
// method was in the vftable.
// For now, just mark the overriden method as shadowed by a new slot.
OverriddenMethodInfo.Shadowed = true;
ForceThunk = true;
// Also apply this adjustment to the shadowed slots.
if (!ThisAdjustmentOffset.isEmpty()) {
// FIXME: this is O(N^2), can be O(N).
const CXXMethodDecl *SubOverride = OverriddenMD;
while ((SubOverride =
FindNearestOverriddenMethod(SubOverride, VisitedBases))) {
MethodInfoMapTy::iterator SubOverrideIterator =
MethodInfoMap.find(SubOverride);
if (SubOverrideIterator == MethodInfoMap.end())
break;
MethodInfo &SubOverrideMI = SubOverrideIterator->second;
assert(SubOverrideMI.Shadowed);
VTableThunks[SubOverrideMI.VFTableIndex].This =
ThisAdjustmentOffset;
AddThunk(MD, VTableThunks[SubOverrideMI.VFTableIndex]);
}
}
} else if (Base.getBaseOffset() != WhichVFPtr.VFPtrFullOffset ||
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment