summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2017-08-01 20:36:57 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2017-08-01 20:36:57 +0000
commit7a124f3ce5f9b195e11c07cf89b158aa6ad45f3e (patch)
tree3ac407d5b6d06e8b6eab958ace34df27c6a0d443 /clang/lib
parentdcc5afaad9e0fc807bb6741be783a99fa6e2c149 (diff)
downloadbcm5719-llvm-7a124f3ce5f9b195e11c07cf89b158aa6ad45f3e.tar.gz
bcm5719-llvm-7a124f3ce5f9b195e11c07cf89b158aa6ad45f3e.zip
Fix creating bitcasts with wrong address space
In a future commit AMDGPU will start passing aggregates directly to more functions, triggering asserts in test/CodeGenOpenCL/addr-space-struct-arg.cl llvm-svn: 309741
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/CodeGen/CGCall.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
index 316bf44cb1c..a0acb64be53 100644
--- a/clang/lib/CodeGen/CGCall.cpp
+++ b/clang/lib/CodeGen/CGCall.cpp
@@ -1223,7 +1223,8 @@ static llvm::Value *CreateCoercedLoad(Address Src, llvm::Type *Ty,
//
// FIXME: Assert that we aren't truncating non-padding bits when have access
// to that information.
- Src = CGF.Builder.CreateBitCast(Src, llvm::PointerType::getUnqual(Ty));
+ Src = CGF.Builder.CreateBitCast(Src,
+ Ty->getPointerTo(Src.getAddressSpace()));
return CGF.Builder.CreateLoad(Src);
}
@@ -3946,7 +3947,8 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
Builder.CreateMemCpy(TempAlloca, Src, SrcSize);
Src = TempAlloca;
} else {
- Src = Builder.CreateBitCast(Src, llvm::PointerType::getUnqual(STy));
+ Src = Builder.CreateBitCast(Src,
+ STy->getPointerTo(Src.getAddressSpace()));
}
auto SrcLayout = CGM.getDataLayout().getStructLayout(STy);
OpenPOWER on IntegriCloud