Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
Show First 20 Lines • Show All 1,543 Lines • ▼ Show 20 Lines | VTableLayout::AddressPointLocation AddressPoint = | ||||
.getVTableLayout(VTableClass) | .getVTableLayout(VTableClass) | ||||
.getAddressPoint(Base); | .getAddressPoint(Base); | ||||
llvm::Value *Indices[] = { | llvm::Value *Indices[] = { | ||||
llvm::ConstantInt::get(CGM.Int32Ty, 0), | llvm::ConstantInt::get(CGM.Int32Ty, 0), | ||||
llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint.VTableIndex), | llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint.VTableIndex), | ||||
llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint.AddressPointIndex), | llvm::ConstantInt::get(CGM.Int32Ty, AddressPoint.AddressPointIndex), | ||||
}; | }; | ||||
return llvm::ConstantExpr::getInBoundsGetElementPtr(VTable->getValueType(), | return llvm::ConstantExpr::getGetElementPtr(VTable->getValueType(), VTable, | ||||
VTable, Indices); | Indices, /*InBounds=*/true, | ||||
/*InRangeIndex=*/1); | |||||
} | } | ||||
llvm::Value *ItaniumCXXABI::getVTableAddressPointInStructorWithVTT( | llvm::Value *ItaniumCXXABI::getVTableAddressPointInStructorWithVTT( | ||||
CodeGenFunction &CGF, const CXXRecordDecl *VTableClass, BaseSubobject Base, | CodeGenFunction &CGF, const CXXRecordDecl *VTableClass, BaseSubobject Base, | ||||
const CXXRecordDecl *NearestVBase) { | const CXXRecordDecl *NearestVBase) { | ||||
assert((Base.getBase()->getNumVBases() || NearestVBase != nullptr) && | assert((Base.getBase()->getNumVBases() || NearestVBase != nullptr) && | ||||
NeedsVTTParameter(CGF.CurGD) && "This class doesn't have VTT"); | NeedsVTTParameter(CGF.CurGD) && "This class doesn't have VTT"); | ||||
▲ Show 20 Lines • Show All 2,394 Lines • Show Last 20 Lines |