-
Notifications
You must be signed in to change notification settings - Fork 15.1k
Revert "[Clang] Make the AS of llvm.compiler.used & llvm.used elements addrspace(0)" #166242
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…s addrsp…" This reverts commit bf2f577.
You can test this locally with the following command:git-clang-format --diff origin/main HEAD --extensions c,cpp -- clang/lib/CodeGen/CodeGenModule.cpp clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c --diff_from_common_commit
View the diff from clang-format here.diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 0fea57b2e..e3d6a6876 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -3335,9 +3335,8 @@ static void emitUsed(CodeGenModule &CGM, StringRef Name,
SmallVector<llvm::Constant*, 8> UsedArray;
UsedArray.resize(List.size());
for (unsigned i = 0, e = List.size(); i != e; ++i) {
- UsedArray[i] =
- llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
- cast<llvm::Constant>(&*List[i]), CGM.Int8PtrTy);
+ UsedArray[i] = llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
+ cast<llvm::Constant>(&*List[i]), CGM.Int8PtrTy);
}
if (UsedArray.empty())
|
|
@llvm/pr-subscribers-clang Author: Jacob Lambert (lamb-j) ChangesReverts llvm/llvm-project#164432 Breaks Comgr tests with the following: [2025-11-03T19:18:20.564Z] + clang -x hip --offload-arch=amdgcnspirv -nogpulib -nogpuinc --no-gpu-bundle-output --offload-device-only -O3 /jenkins/workspace/compiler-psdb-amd-staging/repos/llvm-project/amd/comgr/test-lit/spirv-tests/spirv-to-reloc.hip -o /jenkins/workspace/compiler-psdb-amd-staging/repos/out/ubuntu-22.04/22.04/build/amd_comgr/test-lit/spirv-tests/Output/spirv-to-reloc.hip.tmp.spv -fvisibility=hidden -fno-autolink -fexceptions -fcolor-diagnostics [2025-11-03T19:18:20.564Z] InvalidModule: Invalid SPIR-V module: Casts from private/local/global address space are allowed only to generic [2025-11-03T19:18:20.564Z] [2025-11-03T19:18:20.564Z] <badref> = addrspacecast ptr addrspace(1) @__hip_cuid_94fb83be5559070 to ptr [2025-11-03T19:18:20.564Z] clang: error: amdgcn-link command failed with exit code 10 (use -v to see invocation) Full diff: https://github.com/llvm/llvm-project/pull/166242.diff 3 Files Affected:
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index af5be95aec1cd..0fea57b2e1799 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -3331,18 +3331,18 @@ static void emitUsed(CodeGenModule &CGM, StringRef Name,
if (List.empty())
return;
- llvm::PointerType *UnqualPtr =
- llvm::PointerType::getUnqual(CGM.getLLVMContext());
-
// Convert List to what ConstantArray needs.
SmallVector<llvm::Constant*, 8> UsedArray;
UsedArray.resize(List.size());
for (unsigned i = 0, e = List.size(); i != e; ++i) {
- UsedArray[i] = llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
- cast<llvm::Constant>(&*List[i]), UnqualPtr);
+ UsedArray[i] =
+ llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
+ cast<llvm::Constant>(&*List[i]), CGM.Int8PtrTy);
}
- llvm::ArrayType *ATy = llvm::ArrayType::get(UnqualPtr, UsedArray.size());
+ if (UsedArray.empty())
+ return;
+ llvm::ArrayType *ATy = llvm::ArrayType::get(CGM.Int8PtrTy, UsedArray.size());
auto *GV = new llvm::GlobalVariable(
CGM.getModule(), ATy, false, llvm::GlobalValue::AppendingLinkage,
diff --git a/clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c b/clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c
index 8af9708a1bfb8..df7118859c764 100644
--- a/clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c
+++ b/clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c
@@ -3,6 +3,6 @@
// CHECK: @llvm.embedded.module = private addrspace(1) constant [0 x i8] zeroinitializer, section ".llvmbc", align 1
// CHECK-NEXT: @llvm.cmdline = private addrspace(1) constant [{{[0-9]+}} x i8] c"{{.*}}", section ".llvmcmd", align 1
-// CHECK-NEXT: @llvm.compiler.used = appending addrspace(1) global [5 x ptr] [ptr addrspacecast (ptr addrspace(1) @foo.managed to ptr), ptr addrspacecast (ptr addrspace(1) @foo to ptr), ptr addrspacecast (ptr addrspace(1) @__hip_cuid_ to ptr), ptr addrspacecast (ptr addrspace(1) @llvm.embedded.module to ptr), ptr addrspacecast (ptr addrspace(1) @llvm.cmdline to ptr)], section "llvm.metadata"
+// 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"
__attribute__((managed)) int foo = 42;
diff --git a/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c b/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
deleted file mode 100644
index b6550fb1e5c77..0000000000000
--- a/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
+++ /dev/null
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -x c -triple x86_64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=X86
-// RUN: %clang_cc1 -x c -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=AMDGCN
-// RUN: %clang_cc1 -x c -triple spirv64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV
-// RUN: %clang_cc1 -x c -triple spirv64-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_AMD
-// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -triple x86_64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=X86
-// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=AMDGCN
-// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -triple spirv64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_CL
-// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -triple spirv64-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_AMD_CL
-// RUN: %clang_cc1 -x cl -cl-std=CL2.0 -triple x86_64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=X86
-// RUN: %clang_cc1 -x cl -cl-std=CL2.0 -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=AMDGCN
-// RUN: %clang_cc1 -x cl -cl-std=CL2.0 -triple spirv64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_CL
-// RUN: %clang_cc1 -x cl -cl-std=CL2.0 -triple spirv64-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_AMD_CL
-
-#ifndef __OPENCL_C_VERSION__
-#define __constant const
-#endif
-
-static __constant __attribute__((__used__)) int foo = 42;
-
-
-// X86: @foo = internal constant i32 42
-// X86: @llvm.compiler.used = appending global [2 x ptr] [ptr @foo, ptr @bar], section "llvm.metadata"
-//
-// AMDGCN: @foo = internal addrspace(4) constant i32 42
-// AMDGCN: @llvm.compiler.used = appending addrspace(1) global [2 x ptr] [ptr addrspacecast (ptr addrspace(4) @foo to ptr), ptr @bar], section "llvm.metadata"
-//
-// SPIRV: @foo = internal constant i32 42
-// SPIRV: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr @foo, ptr @bar], section "llvm.metadata"
-//
-// SPIRV_CL: @foo = internal addrspace(2) constant i32 42
-// SPIRV_CL: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr addrspacecast (ptr addrspace(2) @foo to ptr), ptr @bar], section "llvm.metadata"
-//
-// SPIRV_AMD: @foo = internal addrspace(1) constant i32 42
-// SPIRV_AMD: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr addrspacecast (ptr addrspace(1) @foo to ptr), ptr addrspacecast (ptr addrspace(4) @bar to ptr)], section "llvm.metadata"
-//
-// SPIRV_AMD_CL: @foo = internal addrspace(2) constant i32 42
-// SPIRV_AMD_CL: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr addrspacecast (ptr addrspace(2) @foo to ptr), ptr addrspacecast (ptr addrspace(4) @bar to ptr)], section "llvm.metadata"
-//
-// X86: define internal void @bar() #{{[0-9]}} {
-//
-// AMDGCN: define internal void @bar() #{{[0-9]}} {
-//
-// SPIRV: define internal spir_func void @bar() #{{[0-9]}} {
-//
-// SPIRV_CL: define internal spir_func void @bar() #{{[0-9]}} {
-//
-// SPIRV_AMD: define internal spir_func void @bar() addrspace(4) #{{[0-9]}} {
-//
-// SPIRV_AMD_CL: define internal spir_func void @bar() addrspace(4) #{{[0-9]}} {
-//
-static void __attribute__((__used__)) bar() {
-}
|
|
@llvm/pr-subscribers-clang-codegen Author: Jacob Lambert (lamb-j) ChangesReverts llvm/llvm-project#164432 Breaks Comgr tests with the following: [2025-11-03T19:18:20.564Z] + clang -x hip --offload-arch=amdgcnspirv -nogpulib -nogpuinc --no-gpu-bundle-output --offload-device-only -O3 /jenkins/workspace/compiler-psdb-amd-staging/repos/llvm-project/amd/comgr/test-lit/spirv-tests/spirv-to-reloc.hip -o /jenkins/workspace/compiler-psdb-amd-staging/repos/out/ubuntu-22.04/22.04/build/amd_comgr/test-lit/spirv-tests/Output/spirv-to-reloc.hip.tmp.spv -fvisibility=hidden -fno-autolink -fexceptions -fcolor-diagnostics [2025-11-03T19:18:20.564Z] InvalidModule: Invalid SPIR-V module: Casts from private/local/global address space are allowed only to generic [2025-11-03T19:18:20.564Z] [2025-11-03T19:18:20.564Z] <badref> = addrspacecast ptr addrspace(1) @__hip_cuid_94fb83be5559070 to ptr [2025-11-03T19:18:20.564Z] clang: error: amdgcn-link command failed with exit code 10 (use -v to see invocation) Full diff: https://github.com/llvm/llvm-project/pull/166242.diff 3 Files Affected:
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index af5be95aec1cd..0fea57b2e1799 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -3331,18 +3331,18 @@ static void emitUsed(CodeGenModule &CGM, StringRef Name,
if (List.empty())
return;
- llvm::PointerType *UnqualPtr =
- llvm::PointerType::getUnqual(CGM.getLLVMContext());
-
// Convert List to what ConstantArray needs.
SmallVector<llvm::Constant*, 8> UsedArray;
UsedArray.resize(List.size());
for (unsigned i = 0, e = List.size(); i != e; ++i) {
- UsedArray[i] = llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
- cast<llvm::Constant>(&*List[i]), UnqualPtr);
+ UsedArray[i] =
+ llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
+ cast<llvm::Constant>(&*List[i]), CGM.Int8PtrTy);
}
- llvm::ArrayType *ATy = llvm::ArrayType::get(UnqualPtr, UsedArray.size());
+ if (UsedArray.empty())
+ return;
+ llvm::ArrayType *ATy = llvm::ArrayType::get(CGM.Int8PtrTy, UsedArray.size());
auto *GV = new llvm::GlobalVariable(
CGM.getModule(), ATy, false, llvm::GlobalValue::AppendingLinkage,
diff --git a/clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c b/clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c
index 8af9708a1bfb8..df7118859c764 100644
--- a/clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c
+++ b/clang/test/CodeGen/embed-bitcode-marker-with-nonzero-as.c
@@ -3,6 +3,6 @@
// CHECK: @llvm.embedded.module = private addrspace(1) constant [0 x i8] zeroinitializer, section ".llvmbc", align 1
// CHECK-NEXT: @llvm.cmdline = private addrspace(1) constant [{{[0-9]+}} x i8] c"{{.*}}", section ".llvmcmd", align 1
-// CHECK-NEXT: @llvm.compiler.used = appending addrspace(1) global [5 x ptr] [ptr addrspacecast (ptr addrspace(1) @foo.managed to ptr), ptr addrspacecast (ptr addrspace(1) @foo to ptr), ptr addrspacecast (ptr addrspace(1) @__hip_cuid_ to ptr), ptr addrspacecast (ptr addrspace(1) @llvm.embedded.module to ptr), ptr addrspacecast (ptr addrspace(1) @llvm.cmdline to ptr)], section "llvm.metadata"
+// 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"
__attribute__((managed)) int foo = 42;
diff --git a/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c b/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
deleted file mode 100644
index b6550fb1e5c77..0000000000000
--- a/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
+++ /dev/null
@@ -1,64 +0,0 @@
-// RUN: %clang_cc1 -x c -triple x86_64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=X86
-// RUN: %clang_cc1 -x c -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=AMDGCN
-// RUN: %clang_cc1 -x c -triple spirv64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV
-// RUN: %clang_cc1 -x c -triple spirv64-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_AMD
-// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -triple x86_64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=X86
-// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=AMDGCN
-// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -triple spirv64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_CL
-// RUN: %clang_cc1 -x cl -cl-std=CL1.2 -triple spirv64-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_AMD_CL
-// RUN: %clang_cc1 -x cl -cl-std=CL2.0 -triple x86_64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=X86
-// RUN: %clang_cc1 -x cl -cl-std=CL2.0 -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=AMDGCN
-// RUN: %clang_cc1 -x cl -cl-std=CL2.0 -triple spirv64-- -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_CL
-// RUN: %clang_cc1 -x cl -cl-std=CL2.0 -triple spirv64-amd-amdhsa -emit-llvm -x c %s -o - \
-// RUN: | FileCheck %s --check-prefix=SPIRV_AMD_CL
-
-#ifndef __OPENCL_C_VERSION__
-#define __constant const
-#endif
-
-static __constant __attribute__((__used__)) int foo = 42;
-
-
-// X86: @foo = internal constant i32 42
-// X86: @llvm.compiler.used = appending global [2 x ptr] [ptr @foo, ptr @bar], section "llvm.metadata"
-//
-// AMDGCN: @foo = internal addrspace(4) constant i32 42
-// AMDGCN: @llvm.compiler.used = appending addrspace(1) global [2 x ptr] [ptr addrspacecast (ptr addrspace(4) @foo to ptr), ptr @bar], section "llvm.metadata"
-//
-// SPIRV: @foo = internal constant i32 42
-// SPIRV: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr @foo, ptr @bar], section "llvm.metadata"
-//
-// SPIRV_CL: @foo = internal addrspace(2) constant i32 42
-// SPIRV_CL: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr addrspacecast (ptr addrspace(2) @foo to ptr), ptr @bar], section "llvm.metadata"
-//
-// SPIRV_AMD: @foo = internal addrspace(1) constant i32 42
-// SPIRV_AMD: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr addrspacecast (ptr addrspace(1) @foo to ptr), ptr addrspacecast (ptr addrspace(4) @bar to ptr)], section "llvm.metadata"
-//
-// SPIRV_AMD_CL: @foo = internal addrspace(2) constant i32 42
-// SPIRV_AMD_CL: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr addrspacecast (ptr addrspace(2) @foo to ptr), ptr addrspacecast (ptr addrspace(4) @bar to ptr)], section "llvm.metadata"
-//
-// X86: define internal void @bar() #{{[0-9]}} {
-//
-// AMDGCN: define internal void @bar() #{{[0-9]}} {
-//
-// SPIRV: define internal spir_func void @bar() #{{[0-9]}} {
-//
-// SPIRV_CL: define internal spir_func void @bar() #{{[0-9]}} {
-//
-// SPIRV_AMD: define internal spir_func void @bar() addrspace(4) #{{[0-9]}} {
-//
-// SPIRV_AMD_CL: define internal spir_func void @bar() addrspace(4) #{{[0-9]}} {
-//
-static void __attribute__((__used__)) bar() {
-}
|
Reverts #164432
Breaks Comgr tests with the following:
[2025-11-03T19:18:20.564Z] + clang -x hip --offload-arch=amdgcnspirv -nogpulib -nogpuinc --no-gpu-bundle-output --offload-device-only -O3 /jenkins/workspace/compiler-psdb-amd-staging/repos/llvm-project/amd/comgr/test-lit/spirv-tests/spirv-to-reloc.hip -o /jenkins/workspace/compiler-psdb-amd-staging/repos/out/ubuntu-22.04/22.04/build/amd_comgr/test-lit/spirv-tests/Output/spirv-to-reloc.hip.tmp.spv -fvisibility=hidden -fno-autolink -fexceptions -fcolor-diagnostics
[2025-11-03T19:18:20.564Z] InvalidModule: Invalid SPIR-V module: Casts from private/local/global address space are allowed only to generic
[2025-11-03T19:18:20.564Z]
[2025-11-03T19:18:20.564Z] = addrspacecast ptr addrspace(1) @__hip_cuid_94fb83be5559070 to ptr
[2025-11-03T19:18:20.564Z] clang: error: amdgcn-link command failed with exit code 10 (use -v to see invocation)