diff options
author | Dan Gohman <gohman@apple.com> | 2010-10-26 18:44:08 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-10-26 18:44:08 +0000 |
commit | 043fb9a1fc0609285f60f0f87e5a18195408f34c (patch) | |
tree | 2de74b635ac0eba6fea286b11248e3b3e554f8cf /lib/CodeGen/CGCXX.cpp | |
parent | 808bedfd8cf18146bde5a181862375f1b1d261af (diff) |
Factor out the code for emitting code to load vtable pointer members
so that it's done in one place.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117386 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGCXX.cpp')
-rw-r--r-- | lib/CodeGen/CGCXX.cpp | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/lib/CodeGen/CGCXX.cpp b/lib/CodeGen/CGCXX.cpp index 02cd8f89a2..15d1469ffc 100644 --- a/lib/CodeGen/CGCXX.cpp +++ b/lib/CodeGen/CGCXX.cpp @@ -289,11 +289,9 @@ CodeGenModule::GetAddrOfCXXDestructor(const CXXDestructorDecl *D, static llvm::Value *BuildVirtualCall(CodeGenFunction &CGF, uint64_t VTableIndex, llvm::Value *This, const llvm::Type *Ty) { - Ty = Ty->getPointerTo()->getPointerTo()->getPointerTo(); - - llvm::Value *VTable = CGF.Builder.CreateBitCast(This, Ty); - VTable = CGF.Builder.CreateLoad(VTable); + Ty = Ty->getPointerTo()->getPointerTo(); + llvm::Value *VTable = CGF.GetVTablePtr(This, Ty); llvm::Value *VFuncPtr = CGF.Builder.CreateConstInBoundsGEP1_64(VTable, VTableIndex, "vfn"); return CGF.Builder.CreateLoad(VFuncPtr); |