Skip to content

Commit d0c8ed3

Browse files
authored
Fix SPIR-V invalid casts for @__hip_cuid_ to ptr in @llvm.used (llvm#2461)
2 parents 0203927 + 6a62f34 commit d0c8ed3

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3072,13 +3072,15 @@ static void emitUsed(CodeGenModule &CGM, StringRef Name,
30723072
for (unsigned i = 0, e = List.size(); i != e; ++i) {
30733073
UsedArray[i] = llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
30743074
cast<llvm::Constant>(&*List[i]),
3075-
llvm::PointerType::getUnqual(CGM.getLLVMContext()));
3075+
CGM.getTarget().getTriple().isAMDGCN() ?
3076+
llvm::PointerType::getUnqual(CGM.getLLVMContext()) :
3077+
CGM.Int8PtrTy);
30763078
}
30773079

30783080
if (UsedArray.empty())
30793081
return;
3080-
llvm::ArrayType *ATy = llvm::ArrayType::get(
3081-
llvm::PointerType::getUnqual(CGM.getLLVMContext()), UsedArray.size());
3082+
llvm::ArrayType *ATy = llvm::ArrayType::get(UsedArray.front()->getType(),
3083+
UsedArray.size());
30823084

30833085
auto *GV = new llvm::GlobalVariable(
30843086
CGM.getModule(), ATy, false, llvm::GlobalValue::AppendingLinkage,

clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// RUN: %clang_cc1 -triple spirv64-amd-amdhsa -emit-llvm -fcuda-is-device -fembed-bitcode=marker -x hip %s -o - \
22
// RUN: | FileCheck %s --check-prefix=CHECK
3-
// XFAIL: *
43
// CHECK: @llvm.embedded.module = private addrspace(1) constant [0 x i8] zeroinitializer, section ".llvmbc", align 1
54
// CHECK-NEXT: @llvm.cmdline = private addrspace(1) constant [{{[0-9]+}} x i8] c"{{.*}}", section ".llvmcmd", align 1
65
// CHECK-NEXT: @llvm.compiler.used = appending addrspace(1) global [5 x ptr addrspace(4)] [ptr addrspace(4) addrspacecast (ptr addrspace(1) @foo.managed to ptr addrspace(4)), ptr addrspace(4) addrspacecast (ptr addrspace(1) @foo to ptr addrspace(4)), ptr addrspace(4) addrspacecast (ptr addrspace(1) @__hip_cuid_ to ptr addrspace(4)), ptr addrspace(4) addrspacecast (ptr addrspace(1) @llvm.embedded.module to ptr addrspace(4)), ptr addrspace(4) addrspacecast (ptr addrspace(1) @llvm.cmdline to ptr addrspace(4))], section "llvm.metadata"

0 commit comments

Comments
 (0)