[OpenCL] Fix for TBAA information of pointer after addresspacecast
Summary: When addresspacecast is generated resulting pointer should preserve TBAA information from original value.
Reviewers: rjmccall, yaxunl, Anastasia
Reviewed By: rjmccall
Subscribers: asavonic, kosarev, cfe-commits, llvm-commits
Differential Revision: https://reviews.llvm.org/D55262
llvm-svn: 348919
diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp
index 3c5eea4..b6f26a6 100644
--- a/clang/lib/CodeGen/CGExpr.cpp
+++ b/clang/lib/CodeGen/CGExpr.cpp
@@ -4269,8 +4269,9 @@
QualType DestTy = getContext().getPointerType(E->getType());
llvm::Value *V = getTargetHooks().performAddrSpaceCast(
*this, LV.getPointer(), E->getSubExpr()->getType().getAddressSpace(),
- DestTy.getAddressSpace(), ConvertType(DestTy));
- return MakeNaturalAlignPointeeAddrLValue(V, DestTy);
+ E->getType().getAddressSpace(), ConvertType(DestTy));
+ return MakeAddrLValue(Address(V, LV.getAddress().getAlignment()),
+ E->getType(), LV.getBaseInfo(), LV.getTBAAInfo());
}
case CK_ObjCObjectLValueCast: {
LValue LV = EmitLValue(E->getSubExpr());