diff options
| author | Justin Holewinski <jholewinski@nvidia.com> | 2015-02-02 21:05:49 +0000 | 
|---|---|---|
| committer | Justin Holewinski <jholewinski@nvidia.com> | 2015-02-02 21:05:49 +0000 | 
| commit | f37f3d35eb4f3bf4a69cfc4eedaea1caa43d096c (patch) | |
| tree | 6d1f2af88524a58ee1fc703c471c4748c5326cbd /clang/lib/CodeGen | |
| parent | 2f746d4c943a59626925ac625583ddc081b34388 (diff) | |
| download | bcm5719-llvm-f37f3d35eb4f3bf4a69cfc4eedaea1caa43d096c.tar.gz bcm5719-llvm-f37f3d35eb4f3bf4a69cfc4eedaea1caa43d096c.zip  | |
When generating llvm.used, we may need an addrspacecast instead of a bitcast.
Summary:
This is especially important for targets that use multiple address spaces,
and commonly place global variables in address spaces other than zero.
Fixes PR22383
Test Plan: New test case added: llvm-used.cu
Reviewers: jingyue
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7345
llvm-svn: 227861
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 4 | 
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index c710b5bdad0..dc7ec6f6548 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -935,8 +935,8 @@ static void emitUsed(CodeGenModule &CGM, StringRef Name,    UsedArray.resize(List.size());    for (unsigned i = 0, e = List.size(); i != e; ++i) {      UsedArray[i] = -     llvm::ConstantExpr::getBitCast(cast<llvm::Constant>(&*List[i]), -                                    CGM.Int8PtrTy); +        llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast( +            cast<llvm::Constant>(&*List[i]), CGM.Int8PtrTy);    }    if (UsedArray.empty())  | 

