[llvm] [PGO][Offload] Fix missing names bug in GPU PGO (PR #166444)
Ethan Luis McDonough via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 4 13:08:49 PST 2025
https://github.com/EthanLuisMcDonough created https://github.com/llvm/llvm-project/pull/166444
After #163011 was merged, the tests in [`offload/test/offloading/gpupgo`](https://github.com/llvm/llvm-project/compare/main...EthanLuisMcDonough:llvm-project:gpupgo-names-fix-pr?expand=1#diff-f769f6cebd25fa527bd1c1150cc64eb585c41cb8a8b325c2bc80c690e47506a1) broke because the offload plugins were no longer able to find `__llvm_prf_nm`. This pull request explicitly makes `__llvm_prf_nm` visible to the host on GPU targets and reverses the changes made in f7e9968a5ba99521e6e51161f789f0cc1745193f.
>From 30eaf06d909e41b4e60a9cdd3b46cbbd45e65158 Mon Sep 17 00:00:00 2001
From: Ethan Luis McDonough <ethanluismcdonough at gmail.com>
Date: Tue, 4 Nov 2025 15:01:10 -0600
Subject: [PATCH] [PGO][Offload] Fix missing names bug in GPU PGO
---
llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp | 4 ++++
offload/test/offloading/gpupgo/pgo_atomic_teams.c | 1 -
offload/test/offloading/gpupgo/pgo_atomic_threads.c | 1 -
offload/test/offloading/gpupgo/pgo_device_and_host.c | 1 -
offload/test/offloading/gpupgo/pgo_device_only.c | 1 -
5 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
index b5548d4f24a2f..8c8d16a6e3d25 100644
--- a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
+++ b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp
@@ -1944,6 +1944,10 @@ void InstrLowerer::emitNameData() {
NamesVar = new GlobalVariable(M, NamesVal->getType(), true,
GlobalValue::PrivateLinkage, NamesVal,
getInstrProfNamesVarName());
+ if (isGPUProfTarget(M)) {
+ NamesVar->setLinkage(GlobalValue::ExternalLinkage);
+ NamesVar->setVisibility(GlobalValue::ProtectedVisibility);
+ }
NamesSize = CompressedNameStr.size();
setGlobalVariableLargeSection(TT, *NamesVar);
diff --git a/offload/test/offloading/gpupgo/pgo_atomic_teams.c b/offload/test/offloading/gpupgo/pgo_atomic_teams.c
index 42d8ae43beba1..b3b72db080392 100644
--- a/offload/test/offloading/gpupgo/pgo_atomic_teams.c
+++ b/offload/test/offloading/gpupgo/pgo_atomic_teams.c
@@ -18,7 +18,6 @@
// REQUIRES: amdgpu
// REQUIRES: pgo
-// XFAIL: amdgpu
int test1(int a) { return a / 2; }
int test2(int a) { return a * 2; }
diff --git a/offload/test/offloading/gpupgo/pgo_atomic_threads.c b/offload/test/offloading/gpupgo/pgo_atomic_threads.c
index 09a4dc1577822..440a6b533317d 100644
--- a/offload/test/offloading/gpupgo/pgo_atomic_threads.c
+++ b/offload/test/offloading/gpupgo/pgo_atomic_threads.c
@@ -18,7 +18,6 @@
// REQUIRES: amdgpu
// REQUIRES: pgo
-// XFAIL: amdgpu
int test1(int a) { return a / 2; }
diff --git a/offload/test/offloading/gpupgo/pgo_device_and_host.c b/offload/test/offloading/gpupgo/pgo_device_and_host.c
index c53e69a25e50d..3e95791ce9a50 100644
--- a/offload/test/offloading/gpupgo/pgo_device_and_host.c
+++ b/offload/test/offloading/gpupgo/pgo_device_and_host.c
@@ -50,7 +50,6 @@
// REQUIRES: amdgpu
// REQUIRES: pgo
-// XFAIL: amdgpu
int main() {
int host_var = 0;
diff --git a/offload/test/offloading/gpupgo/pgo_device_only.c b/offload/test/offloading/gpupgo/pgo_device_only.c
index 644df6e7b0339..2939af613b6dd 100644
--- a/offload/test/offloading/gpupgo/pgo_device_only.c
+++ b/offload/test/offloading/gpupgo/pgo_device_only.c
@@ -16,7 +16,6 @@
// REQUIRES: amdgpu
// REQUIRES: pgo
-// XFAIL: amdgpu
int test1(int a) { return a / 2; }
int test2(int a) { return a * 2; }
More information about the llvm-commits
mailing list