https://github.com/jmmartinez updated 
https://github.com/llvm/llvm-project/pull/164432

From f4b068a508fe198391fb611afe330e228bf47b9b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?= <[email protected]>
Date: Tue, 21 Oct 2025 15:45:36 +0200
Subject: [PATCH 1/3] [Clang] Make the address space of llvm.compiler.used &
 llvm.used 0

---
 clang/lib/CodeGen/CodeGenModule.cpp                  | 12 ++++++------
 .../CodeGen/embed-bitcode-marker-with-nonzero-as.c   |  2 +-
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/clang/lib/CodeGen/CodeGenModule.cpp 
b/clang/lib/CodeGen/CodeGenModule.cpp
index 0fea57b2e1799..af5be95aec1cd 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]), CGM.Int8PtrTy);
+    UsedArray[i] = llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast(
+        cast<llvm::Constant>(&*List[i]), UnqualPtr);
   }
 
-  if (UsedArray.empty())
-    return;
-  llvm::ArrayType *ATy = llvm::ArrayType::get(CGM.Int8PtrTy, UsedArray.size());
+  llvm::ArrayType *ATy = llvm::ArrayType::get(UnqualPtr, 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 df7118859c764..8af9708a1bfb8 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 
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"
+// 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"
 
 __attribute__((managed)) int foo = 42;

From 3330535d6b8ebf8f4675359662e6a16282176ce2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?= <[email protected]>
Date: Wed, 22 Oct 2025 10:01:23 +0200
Subject: [PATCH 2/3] [Review] Add test

---
 .../llvm_compiler_used_elements_are_unqual.c  | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c

diff --git a/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c 
b/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
new file mode 100644
index 0000000000000..38bc5c893f4bc
--- /dev/null
+++ b/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
@@ -0,0 +1,38 @@
+// RUN: %clang_cc1 -triple x86_64-- -emit-llvm -x c %s -o - \
+// RUN:   | FileCheck %s --check-prefix=X86
+// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
+// RUN:   | FileCheck %s --check-prefix=AMDGCN
+// RUN: %clang_cc1 -triple spirv64-- -emit-llvm -x c %s -o - \
+// RUN:   | FileCheck %s --check-prefix=SPIRV
+// RUN: %clang_cc1 -triple spirv64-amd-amdhsa -emit-llvm -x c %s -o - \
+// RUN:   | FileCheck %s --check-prefix=SPIRV_AMD
+
+static __attribute__((__used__)) int foo = 42;
+
+
+// X86: @foo = internal global i32 42, align 4
+// X86: @llvm.compiler.used = appending global [2 x ptr] [ptr @foo, ptr @bar], 
section "llvm.metadata"
+//.
+// AMDGCN: @foo = internal addrspace(1) global i32 42, align 4
+// AMDGCN: @llvm.compiler.used = appending addrspace(1) global [2 x ptr] [ptr 
addrspacecast (ptr addrspace(1) @foo to ptr), ptr @bar], section "llvm.metadata"
+//.
+// SPIRV: @foo = internal global i32 42, align 4
+// SPIRV: @llvm.used = appending addrspace(1) global [2 x ptr] [ptr @foo, ptr 
@bar], section "llvm.metadata"
+//.
+// SPIRV_AMD: @foo = internal addrspace(1) global i32 42, align 4
+// 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"
+//.
+// X86-LABEL: define internal void @bar(
+// X86-SAME: ) #[[ATTR0:[0-9]+]] {
+//
+// AMDGCN-LABEL: define internal void @bar(
+// AMDGCN-SAME: ) #[[ATTR0:[0-9]+]] {
+//
+// SPIRV-LABEL: define internal spir_func void @bar(
+// SPIRV-SAME: ) #[[ATTR0:[0-9]+]] {
+//
+// SPIRV_AMD-LABEL: define internal spir_func void @bar(
+// SPIRV_AMD-SAME: ) addrspace(4) #[[ATTR0:[0-9]+]] {
+//
+static void __attribute__((__used__)) bar() {
+}

From 9b8250048663a29f2ecd9a3f134a48cf4e5d4f58 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?=
 <[email protected]>
Date: Mon, 3 Nov 2025 11:21:13 +0100
Subject: [PATCH 3/3] [Review] Add OpenCL 1.2 and 2.0 test cases

---
 .../llvm_compiler_used_elements_are_unqual.c  | 70 +++++++++++++------
 1 file changed, 48 insertions(+), 22 deletions(-)

diff --git a/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c 
b/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
index 38bc5c893f4bc..b6550fb1e5c77 100644
--- a/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
+++ b/clang/test/CodeGen/llvm_compiler_used_elements_are_unqual.c
@@ -1,38 +1,64 @@
-// RUN: %clang_cc1 -triple x86_64-- -emit-llvm -x c %s -o - \
+// RUN: %clang_cc1 -x c -triple x86_64-- -emit-llvm -x c %s -o - \
 // RUN:   | FileCheck %s --check-prefix=X86
-// RUN: %clang_cc1 -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
+// RUN: %clang_cc1 -x c -triple amdgcn-amd-amdhsa -emit-llvm -x c %s -o - \
 // RUN:   | FileCheck %s --check-prefix=AMDGCN
-// RUN: %clang_cc1 -triple spirv64-- -emit-llvm -x c %s -o - \
+// RUN: %clang_cc1 -x c -triple spirv64-- -emit-llvm -x c %s -o - \
 // RUN:   | FileCheck %s --check-prefix=SPIRV
-// RUN: %clang_cc1 -triple spirv64-amd-amdhsa -emit-llvm -x c %s -o - \
+// 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
 
-static __attribute__((__used__)) int foo = 42;
+#ifndef __OPENCL_C_VERSION__
+#define __constant const
+#endif
 
+static __constant __attribute__((__used__)) int foo = 42;
 
-// X86: @foo = internal global i32 42, align 4
+
+// 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(1) global i32 42, align 4
-// AMDGCN: @llvm.compiler.used = appending addrspace(1) global [2 x ptr] [ptr 
addrspacecast (ptr addrspace(1) @foo to ptr), ptr @bar], section "llvm.metadata"
-//.
-// SPIRV: @foo = internal global i32 42, align 4
+//
+// 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_AMD: @foo = internal addrspace(1) global i32 42, align 4
+//
+// 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"
-//.
-// X86-LABEL: define internal void @bar(
-// X86-SAME: ) #[[ATTR0:[0-9]+]] {
 //
-// AMDGCN-LABEL: define internal void @bar(
-// AMDGCN-SAME: ) #[[ATTR0:[0-9]+]] {
+// 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-LABEL: define internal spir_func void @bar(
-// SPIRV-SAME: ) #[[ATTR0:[0-9]+]] {
+// SPIRV_AMD: define internal spir_func void @bar() addrspace(4) #{{[0-9]}} {
 //
-// SPIRV_AMD-LABEL: define internal spir_func void @bar(
-// SPIRV_AMD-SAME: ) addrspace(4) #[[ATTR0:[0-9]+]] {
+// SPIRV_AMD_CL: define internal spir_func void @bar() addrspace(4) #{{[0-9]}} 
{
 //
 static void __attribute__((__used__)) bar() {
 }

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to