[llvm] [CodeGen][NPM] Do not add required passes to pipeline (PR #135752)
Akshat Oke via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 14 23:42:12 PDT 2025
https://github.com/optimisan created https://github.com/llvm/llvm-project/pull/135752
None
>From b753440d121819a4b69a8f614a8335a3d2229020 Mon Sep 17 00:00:00 2001
From: Akshat Oke <Akshat.Oke at amd.com>
Date: Tue, 15 Apr 2025 06:34:55 +0000
Subject: [PATCH] [CodeGen][NPM] Do not add required passes to pipeline
---
llvm/include/llvm/Passes/CodeGenPassBuilder.h | 8 +-------
llvm/test/tools/llc/new-pm/pipeline.mir | 2 ++
2 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/llvm/include/llvm/Passes/CodeGenPassBuilder.h b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
index ab9e7b2d23b9f..8f0fc98f4a9c8 100644
--- a/llvm/include/llvm/Passes/CodeGenPassBuilder.h
+++ b/llvm/include/llvm/Passes/CodeGenPassBuilder.h
@@ -182,9 +182,6 @@ template <typename DerivedT, typename TargetMachineT> class CodeGenPassBuilder {
}
protected:
- template <typename PassT>
- using has_required_t = decltype(std::declval<PassT &>().isRequired());
-
template <typename PassT>
using is_module_pass_t = decltype(std::declval<PassT &>().run(
std::declval<Module &>(), std::declval<ModuleAnalysisManager &>()));
@@ -215,10 +212,7 @@ template <typename DerivedT, typename TargetMachineT> class CodeGenPassBuilder {
static_assert((is_detected<is_function_pass_t, PassT>::value ||
is_detected<is_module_pass_t, PassT>::value) &&
"Only module pass and function pass are supported.");
- bool Required = false;
- if constexpr (is_detected<has_required_t, PassT>::value)
- Required = PassT::isRequired();
- if (!PB.runBeforeAdding(Name) && !Required)
+ if (!PB.runBeforeAdding(Name))
return;
// Add Function Pass
diff --git a/llvm/test/tools/llc/new-pm/pipeline.mir b/llvm/test/tools/llc/new-pm/pipeline.mir
index 761a3a424ee67..8f8e443923b7b 100644
--- a/llvm/test/tools/llc/new-pm/pipeline.mir
+++ b/llvm/test/tools/llc/new-pm/pipeline.mir
@@ -1,8 +1,10 @@
# RUN: llc -mtriple=x86_64-pc-linux-gnu -x mir -passes=no-op-machine-function --print-pipeline-passes -filetype=null < %s | FileCheck %s --match-full-lines
# RUN: llc -mtriple=x86_64-pc-linux-gnu -x mir -passes='require<machine-dom-tree>,print<machine-dom-tree>' -print-pipeline-passes < %s | FileCheck --check-prefix=ANALYSIS %s
+# RUN: llc -mtriple=x86_64-pc-linux-gnu -x mir -enable-new-pm -stop-before=greedy -O3 -filetype=null --print-pipeline-passes < %s | FileCheck %s --check-prefix=CHECK-REQ
# CHECK: function(machine-function(no-op-machine-function)),PrintMIRPreparePass,function(machine-function(verify,print))
+# CHECK-REQ-NOT: greedy
# ANALYSIS: require<machine-dom-tree>,print<machine-dom-tree>
---
More information about the llvm-commits
mailing list