From cd683bd32cecd97b9d9fd345c4e6c067d84fefd4 Mon Sep 17 00:00:00 2001 From: "Yaxun (Sam) Liu" Date: Thu, 2 May 2024 09:34:52 -0400 Subject: [PATCH] [HipStdPar] Fix globle variable (#90627) HipStdParAcceleratorCodeSelectionPass changes linkage of global variables to extern_weak, which does not allow initializer. An extern_weak global variable with initializer will cause llvm-as and llc to fail. --- llvm/lib/Transforms/HipStdPar/HipStdPar.cpp | 1 + llvm/test/Transforms/HipStdPar/global-var.ll | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 llvm/test/Transforms/HipStdPar/global-var.ll diff --git a/llvm/lib/Transforms/HipStdPar/HipStdPar.cpp b/llvm/lib/Transforms/HipStdPar/HipStdPar.cpp index fb7cba9edbdb..1a8096f647d8 100644 --- a/llvm/lib/Transforms/HipStdPar/HipStdPar.cpp +++ b/llvm/lib/Transforms/HipStdPar/HipStdPar.cpp @@ -133,6 +133,7 @@ static inline void maybeHandleGlobals(Module &M) { continue; G.setLinkage(GlobalVariable::ExternalWeakLinkage); + G.setInitializer(nullptr); G.setExternallyInitialized(true); } } diff --git a/llvm/test/Transforms/HipStdPar/global-var.ll b/llvm/test/Transforms/HipStdPar/global-var.ll new file mode 100644 index 000000000000..30340bd6c7ca --- /dev/null +++ b/llvm/test/Transforms/HipStdPar/global-var.ll @@ -0,0 +1,11 @@ +; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -passes=hipstdpar-select-accelerator-code \ +; RUN: %s | FileCheck %s + +; CHECK: @var = extern_weak addrspace(1) externally_initialized global i32, align 4 +@var = addrspace(1) global i32 0, align 4 + +define amdgpu_kernel void @kernel() { +entry: + store i32 1, ptr addrspace(1) @var, align 4 + ret void +}