diff options
author | Kostya Serebryany <kcc@google.com> | 2012-03-26 17:03:51 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2012-03-26 17:03:51 +0000 |
commit | 8cb4a070d491ddd671b049110cc8d0accb08b905 (patch) | |
tree | 069fdc3e8e7959280024f5ce210b4e2be3cd831a /lib/CodeGen/CGClass.cpp | |
parent | 1eb18afd931f626713c066ede0707ceb522fa061 (diff) |
add tbaa metadata to vtable pointer loads/stores
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153447 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGClass.cpp')
-rw-r--r-- | lib/CodeGen/CGClass.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/CodeGen/CGClass.cpp b/lib/CodeGen/CGClass.cpp index ee79c394ac..b452c1b7ab 100644 --- a/lib/CodeGen/CGClass.cpp +++ b/lib/CodeGen/CGClass.cpp @@ -1514,7 +1514,8 @@ CodeGenFunction::InitializeVTablePointer(BaseSubobject Base, llvm::Type *AddressPointPtrTy = VTableAddressPoint->getType()->getPointerTo(); VTableField = Builder.CreateBitCast(VTableField, AddressPointPtrTy); - Builder.CreateStore(VTableAddressPoint, VTableField); + llvm::StoreInst *Store = Builder.CreateStore(VTableAddressPoint, VTableField); + CGM.DecorateInstruction(Store, CGM.getTBAAInfoForVTablePtr()); } void @@ -1597,7 +1598,9 @@ void CodeGenFunction::InitializeVTablePointers(const CXXRecordDecl *RD) { llvm::Value *CodeGenFunction::GetVTablePtr(llvm::Value *This, llvm::Type *Ty) { llvm::Value *VTablePtrSrc = Builder.CreateBitCast(This, Ty->getPointerTo()); - return Builder.CreateLoad(VTablePtrSrc, "vtable"); + llvm::Instruction *VTable = Builder.CreateLoad(VTablePtrSrc, "vtable"); + CGM.DecorateInstruction(VTable, CGM.getTBAAInfoForVTablePtr()); + return VTable; } static const CXXRecordDecl *getMostDerivedClassDecl(const Expr *Base) { |