More work in preparation of getting rid of the submethods loop.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90535 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Anders Carlsson 2009-12-04 03:52:52 +00:00
Родитель 0e881169af
Коммит dd454bee6b
1 изменённых файлов: 6 добавлений и 4 удалений

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

@ -754,7 +754,9 @@ bool VtableBuilder::OverrideMethod(GlobalDecl GD, llvm::Constant *m,
if (submethods[i] != om) if (submethods[i] != om)
continue; continue;
assert(i == Methods.getIndex(OGD)); uint64_t Index = Methods.getIndex(OGD);
assert(i == Index);
QualType ReturnType = QualType ReturnType =
MD->getType()->getAs<FunctionType>()->getResultType(); MD->getType()->getAs<FunctionType>()->getResultType();
@ -778,7 +780,7 @@ bool VtableBuilder::OverrideMethod(GlobalDecl GD, llvm::Constant *m,
Methods.OverrideMethod(OGD, GD); Methods.OverrideMethod(OGD, GD);
submethods[i] = m; submethods[Index] = m;
ThisAdjustments.erase(i); ThisAdjustments.erase(i);
if (MorallyVirtual || VCall.count(OGD)) { if (MorallyVirtual || VCall.count(OGD)) {
Index_t &idx = VCall[OGD]; Index_t &idx = VCall[OGD];
@ -811,7 +813,7 @@ bool VtableBuilder::OverrideMethod(GlobalDecl GD, llvm::Constant *m,
VirtualAdjustment); VirtualAdjustment);
if (!isPure && !ThisAdjustment.isEmpty()) if (!isPure && !ThisAdjustment.isEmpty())
ThisAdjustments[i] = ThisAdjustment; ThisAdjustments[Index] = ThisAdjustment;
return true; return true;
} }
@ -822,7 +824,7 @@ bool VtableBuilder::OverrideMethod(GlobalDecl GD, llvm::Constant *m,
ThunkAdjustment ThisAdjustment(NonVirtualAdjustment, 0); ThunkAdjustment ThisAdjustment(NonVirtualAdjustment, 0);
if (!isPure) if (!isPure)
ThisAdjustments[i] = ThisAdjustment; ThisAdjustments[Index] = ThisAdjustment;
} }
return true; return true;
} }