summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGExpr.cpp
diff options
context:
space:
mode:
authorIvan A. Kosarev <ikosarev@accesssoftek.com>2017-10-13 16:50:50 +0000
committerIvan A. Kosarev <ikosarev@accesssoftek.com>2017-10-13 16:50:50 +0000
commit1590fd3aa832cd2407d945418fc6934a6b3fd8b9 (patch)
tree8c979df489cdf10abe7b1a94cce052ef3070bb74 /clang/lib/CodeGen/CGExpr.cpp
parent9029564e8c8edafa078b91b0f6b16b19438dabf7 (diff)
downloadbcm5719-llvm-1590fd3aa832cd2407d945418fc6934a6b3fd8b9.tar.gz
bcm5719-llvm-1590fd3aa832cd2407d945418fc6934a6b3fd8b9.zip
[CodeGen] EmitLoadOfReference() to generate TBAA info along with LValue base info
This patch should not bring in any functional changes. Differential Revision: https://reviews.llvm.org/D38793 llvm-svn: 315705
Diffstat (limited to 'clang/lib/CodeGen/CGExpr.cpp')
-rw-r--r--clang/lib/CodeGen/CGExpr.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index bb2e8550bd2..2e609deabfe 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -2149,7 +2149,11 @@ static LValue EmitThreadPrivateVarDeclLValue(
Address CodeGenFunction::EmitLoadOfReference(Address Addr,
const ReferenceType *RefTy,
- LValueBaseInfo *BaseInfo) {
+ LValueBaseInfo *BaseInfo,
+ TBAAAccessInfo *TBAAInfo) {
+ if (TBAAInfo)
+ *TBAAInfo = CGM.getTBAAAccessInfo(RefTy->getPointeeType());
+
llvm::Value *Ptr = Builder.CreateLoad(Addr);
return Address(Ptr, getNaturalTypeAlignment(RefTy->getPointeeType(),
BaseInfo, /*forPointee*/ true));
@@ -2158,9 +2162,9 @@ Address CodeGenFunction::EmitLoadOfReference(Address Addr,
LValue CodeGenFunction::EmitLoadOfReferenceLValue(Address RefAddr,
const ReferenceType *RefTy) {
LValueBaseInfo BaseInfo;
- Address Addr = EmitLoadOfReference(RefAddr, RefTy, &BaseInfo);
- return MakeAddrLValue(Addr, RefTy->getPointeeType(), BaseInfo,
- CGM.getTBAAAccessInfo(RefTy->getPointeeType()));
+ TBAAAccessInfo TBAAInfo;
+ Address Addr = EmitLoadOfReference(RefAddr, RefTy, &BaseInfo, &TBAAInfo);
+ return MakeAddrLValue(Addr, RefTy->getPointeeType(), BaseInfo, TBAAInfo);
}
Address CodeGenFunction::EmitLoadOfPointer(Address Ptr,
OpenPOWER on IntegriCloud