From 339c5d3b96e46bc35c69d888e79b4951a2692133 Mon Sep 17 00:00:00 2001 From: Evgenii Podkorytov Date: Mon, 8 Dec 2025 21:43:17 +0000 Subject: [PATCH] [GlobalOpt] Preserve Address Space when recreating GV --- llvm/lib/Transforms/IPO/GlobalOpt.cpp | 7 ++++--- llvm/test/Transforms/GlobalOpt/global-opt-addrspace.ll | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/llvm/lib/Transforms/IPO/GlobalOpt.cpp b/llvm/lib/Transforms/IPO/GlobalOpt.cpp index 939071725253f..23d5230d72b1e 100644 --- a/llvm/lib/Transforms/IPO/GlobalOpt.cpp +++ b/llvm/lib/Transforms/IPO/GlobalOpt.cpp @@ -2144,9 +2144,10 @@ static void setUsedInitializer(GlobalVariable &V, Module *M = V.getParent(); V.removeFromParent(); - GlobalVariable *NV = - new GlobalVariable(*M, ATy, false, GlobalValue::AppendingLinkage, - ConstantArray::get(ATy, UsedArray), ""); + GlobalVariable *NV = new GlobalVariable( + *M, ATy, false, GlobalValue::AppendingLinkage, + ConstantArray::get(ATy, UsedArray), "", nullptr, + GlobalVariable::NotThreadLocal, V.getType()->getAddressSpace()); NV->takeName(&V); NV->setSection("llvm.metadata"); delete &V; diff --git a/llvm/test/Transforms/GlobalOpt/global-opt-addrspace.ll b/llvm/test/Transforms/GlobalOpt/global-opt-addrspace.ll index 9df8a4bfbfae1..724402f5c663e 100644 --- a/llvm/test/Transforms/GlobalOpt/global-opt-addrspace.ll +++ b/llvm/test/Transforms/GlobalOpt/global-opt-addrspace.ll @@ -8,9 +8,9 @@ @_ZM2C = internal addrspace(1) global %struct.FakeDeviceGlobal zeroinitializer, align 8 @_ZL1C = internal addrspace(1) global %struct.FakeDeviceGlobal zeroinitializer, align 8 -@llvm.compiler.used = appending global [2 x ptr addrspace(4)] [ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZM2C to ptr addrspace(4)), ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZL1C to ptr addrspace(4))] +@llvm.compiler.used = appending addrspace(1) global [2 x ptr addrspace(4)] [ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZM2C to ptr addrspace(4)), ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZL1C to ptr addrspace(4))] -; CHECK: @llvm.compiler.used = appending global [2 x ptr addrspace(4)] [ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZL1C to ptr addrspace(4)), ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZM2C to ptr addrspace(4))] +; CHECK: @llvm.compiler.used = appending addrspace(1) global [2 x ptr addrspace(4)] [ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZL1C to ptr addrspace(4)), ptr addrspace(4) addrspacecast (ptr addrspace(1) @_ZM2C to ptr addrspace(4))] define weak_odr dso_local void @foo() { entry: