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

via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 20 19:38:34 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-amdgpu

Author: Matt Arsenault (arsenm)

<details>
<summary>Changes</summary>

31f39c83259401a26b3660dd75f645002258571d claimed to have removed it,
but it's still here so really remove it.

---
Full diff: https://github.com/llvm/llvm-project/pull/145136.diff


1 Files Affected:

- (removed) llvm/lib/Target/AMDGPU/AMDGPUAnnotateKernelFeatures.cpp (-128) 


``````````diff
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;
-}

``````````

</details>


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


More information about the llvm-commits mailing list