[llvm] AMDGPU: Really delete AMDGPUAnnotateKernelFeatures (PR #145136)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 20 20:19:37 PDT 2025


https://github.com/arsenm updated https://github.com/llvm/llvm-project/pull/145136

>From 2e9b85b4b14c1a4404913348fc13e6ddf270b908 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Sat, 21 Jun 2025 11:28:42 +0900
Subject: [PATCH] AMDGPU: Really delete AMDGPUAnnotateKernelFeatures

31f39c83259401a26b3660dd75f645002258571d claimed to have removed it,
but it's still here so really remove it.
---
 .../AMDGPU/AMDGPUAnnotateKernelFeatures.cpp   | 128 ------------------
 .../lib/Target/AMDGPU/AMDGPUTargetMachine.cpp |   3 -
 llvm/lib/Target/AMDGPU/CMakeLists.txt         |   1 -
 .../secondary/llvm/lib/Target/AMDGPU/BUILD.gn |   1 -
 4 files changed, 133 deletions(-)
 delete mode 100644 llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp

diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
deleted file mode 100644
index 9c9fa5c6e2f0f..0000000000000
--- a/llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-//===- AMDGPUAnnotateKernelFeaturesPass.cpp -------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-/// \file This pass propagates the uniform-work-group-size attribute from
-/// kernels to leaf functions when possible. It also adds additional attributes
-/// to hint ABI lowering optimizations later.
-//
-//===----------------------------------------------------------------------===//
-
-#include "AMDGPU.h"
-#include "GCNSubtarget.h"
-#include "llvm/Analysis/CallGraph.h"
-#include "llvm/Analysis/CallGraphSCCPass.h"
-#include "llvm/CodeGen/TargetPassConfig.h"
-#include "llvm/Target/TargetMachine.h"
-
-#define DEBUG_TYPE "amdgpu-annotate-kernel-features"
-
-using namespace llvm;
-
-namespace {
-class AMDGPUAnnotateKernelFeatures : public CallGraphSCCPass {
-private:
-  const TargetMachine *TM = nullptr;
-
-  bool addFeatureAttributes(Function &F);
-
-public:
-  static char ID;
-
-  AMDGPUAnnotateKernelFeatures() : CallGraphSCCPass(ID) {}
-
-  bool doInitialization(CallGraph &CG) override;
-  bool runOnSCC(CallGraphSCC &SCC) override;
-
-  StringRef getPassName() const override {
-    return "AMDGPU Annotate Kernel Features";
-  }
-
-  void getAnalysisUsage(AnalysisUsage &AU) const override {
-    AU.setPreservesAll();
-    CallGraphSCCPass::getAnalysisUsage(AU);
-  }
-};
-
-} // end anonymous namespace
-
-char AMDGPUAnnotateKernelFeatures::ID = 0;
-
-bool AMDGPUAnnotateKernelFeatures::addFeatureAttributes(Function &F) {
-  bool HaveStackObjects = false;
-  bool Changed = false;
-  bool HaveCall = false;
-  bool IsFunc = !AMDGPU::isEntryFunctionCC(F.getCallingConv());
-
-  for (BasicBlock &BB : F) {
-    for (Instruction &I : BB) {
-      if (isa<AllocaInst>(I)) {
-        HaveStackObjects = true;
-        continue;
-      }
-
-      if (auto *CB = dyn_cast<CallBase>(&I)) {
-        const Function *Callee =
-            dyn_cast<Function>(CB->getCalledOperand()->stripPointerCasts());
-
-        // Note the occurrence of indirect call.
-        if (!Callee) {
-          if (!CB->isInlineAsm())
-            HaveCall = true;
-
-          continue;
-        }
-
-        Intrinsic::ID IID = Callee->getIntrinsicID();
-        if (IID == Intrinsic::not_intrinsic) {
-          HaveCall = true;
-          Changed = true;
-        }
-      }
-    }
-  }
-
-  // TODO: We could refine this to captured pointers that could possibly be
-  // accessed by flat instructions. For now this is mostly a poor way of
-  // estimating whether there are calls before argument lowering.
-  if (!IsFunc && HaveCall) {
-    F.addFnAttr("amdgpu-calls");
-    Changed = true;
-  }
-
-  if (HaveStackObjects) {
-    F.addFnAttr("amdgpu-stack-objects");
-    Changed = true;
-  }
-
-  return Changed;
-}
-
-bool AMDGPUAnnotateKernelFeatures::runOnSCC(CallGraphSCC &SCC) {
-  bool Changed = false;
-
-  for (CallGraphNode *I : SCC) {
-    Function *F = I->getFunction();
-    // Ignore functions with graphics calling conventions, these are currently
-    // not allowed to have kernel arguments.
-    if (!F || F->isDeclaration() || AMDGPU::isGraphics(F->getCallingConv()))
-      continue;
-    // Add feature attributes
-    Changed |= addFeatureAttributes(*F);
-  }
-
-  return Changed;
-}
-
-bool AMDGPUAnnotateKernelFeatures::doInitialization(CallGraph &CG) {
-  auto *TPC = getAnalysisIfAvailable<TargetPassConfig>();
-  if (!TPC)
-    report_fatal_error("TargetMachine is required");
-
-  TM = &TPC->getTM<TargetMachine>();
-  return false;
-}
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index 1ea7dd01d15c0..c28f407391c11 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -2073,9 +2073,6 @@ void AMDGPUCodeGenPassBuilder::addIRPasses(AddIRPass &addPass) const {
 }
 
 void AMDGPUCodeGenPassBuilder::addCodeGenPrepare(AddIRPass &addPass) const {
-  // AMDGPUAnnotateKernelFeaturesPass is missing here, but it will hopefully be
-  // deleted soon.
-
   if (TM.getOptLevel() > CodeGenOptLevel::None)
     addPass(AMDGPUPreloadKernelArgumentsPass(TM));
 
diff --git a/llvm/lib/Target/AMDGPU/CMakeLists.txt b/llvm/lib/Target/AMDGPU/CMakeLists.txt
index c6d70ee39202e..928a5001e0c98 100644
--- a/llvm/lib/Target/AMDGPU/CMakeLists.txt
+++ b/llvm/lib/Target/AMDGPU/CMakeLists.txt
@@ -43,7 +43,6 @@ add_public_tablegen_target(InstCombineTableGen)
 add_llvm_target(AMDGPUCodeGen
   AMDGPUAliasAnalysis.cpp
   AMDGPUAlwaysInlinePass.cpp
-  AMDGPUAnnotateKernelFeatures.cpp
   AMDGPUAnnotateUniformValues.cpp
   AMDGPUArgumentUsageInfo.cpp
   AMDGPUAsanInstrumentation.cpp
diff --git a/llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn
index facdde20454de..628e544a687e5 100644
--- a/llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/lib/Target/AMDGPU/BUILD.gn
@@ -131,7 +131,6 @@ static_library("LLVMAMDGPUCodeGen") {
   sources = [
     "AMDGPUAliasAnalysis.cpp",
     "AMDGPUAlwaysInlinePass.cpp",
-    "AMDGPUAnnotateKernelFeatures.cpp",
     "AMDGPUAnnotateUniformValues.cpp",
     "AMDGPUArgumentUsageInfo.cpp",
     "AMDGPUAsanInstrumentation.cpp",



More information about the llvm-commits mailing list