From 33f3ebc86e7d3afcb65c551feba5bbc2421b42ed Mon Sep 17 00:00:00 2001 From: Anshil Gandhi <95053726+gandhi56@users.noreply.github.com> Date: Sun, 25 Aug 2024 14:06:29 -0400 Subject: [PATCH] [AMDGPU][LTO] Assume closed world after linking (#105845) --- llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp | 4 ++++ llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp | 8 ++++++-- llvm/test/LTO/AMDGPU/gpu-rdc-amdgpu-attrs.ll | 10 ++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 llvm/test/LTO/AMDGPU/gpu-rdc-amdgpu-attrs.ll diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp index d65e0ae92308e6..81932cc2c3c3bc 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp @@ -1066,6 +1066,10 @@ static bool runImpl(Module &M, AnalysisGetter &AG, TargetMachine &TM, Attributor A(Functions, InfoCache, AC); + LLVM_DEBUG(dbgs() << "Module " << M.getName() << " is " + << (AC.IsClosedWorldModule ? "" : "not ") + << "assumed to be a closed world.\n"); + for (Function &F : M) { if (F.isIntrinsic()) continue; diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp index 7ac7b3315bb972..307774ea3da9eb 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp @@ -760,8 +760,12 @@ void AMDGPUTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) { // module is partitioned for codegen. if (EnableLowerModuleLDS) PM.addPass(AMDGPULowerModuleLDSPass(*this)); - if (EnableAMDGPUAttributor && Level != OptimizationLevel::O0) - PM.addPass(AMDGPUAttributorPass(*this)); + + if (EnableAMDGPUAttributor && Level != OptimizationLevel::O0) { + AMDGPUAttributorOptions Opts; + Opts.IsClosedWorld = true; + PM.addPass(AMDGPUAttributorPass(*this, Opts)); + } }); PB.registerRegClassFilterParsingCallback( diff --git a/llvm/test/LTO/AMDGPU/gpu-rdc-amdgpu-attrs.ll b/llvm/test/LTO/AMDGPU/gpu-rdc-amdgpu-attrs.ll new file mode 100644 index 00000000000000..6966c702e741cc --- /dev/null +++ b/llvm/test/LTO/AMDGPU/gpu-rdc-amdgpu-attrs.ll @@ -0,0 +1,10 @@ +; RUN: opt -O3 -debug-only=amdgpu-attributor -S -o - %s 2>&1 | FileCheck %s --check-prefix=PRE-LINK +; RUN: opt -passes="lto" -debug-only=amdgpu-attributor -S -o - %s 2>&1 | FileCheck %s --check-prefix=POST-LINK + +target triple = "amdgcn-amd-amdhsa" + +; PRE-LINK: Module {{.*}} is not assumed to be a closed world. +; POST-LINK: Module {{.*}} is assumed to be a closed world. +define hidden noundef i32 @_Z3foov() { + ret i32 1 +}