diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-08-01 20:36:57 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-08-01 20:36:57 +0000 |
| commit | 7a124f3ce5f9b195e11c07cf89b158aa6ad45f3e (patch) | |
| tree | 3ac407d5b6d06e8b6eab958ace34df27c6a0d443 /clang/lib | |
| parent | dcc5afaad9e0fc807bb6741be783a99fa6e2c149 (diff) | |
| download | bcm5719-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.cpp | 6 |
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); |

