Skip to content

Commit 122ed55

Browse files
authored
[CodeGen] Remove MachinePassKey (#79406)
We now use PassT::name to distinguish Passes.
1 parent f7a615a commit 122ed55

File tree

4 files changed

+4
-28
lines changed

4 files changed

+4
-28
lines changed

llvm/include/llvm/CodeGen/MachinePassManager.h

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,13 @@ class MachineFunction;
3737

3838
extern template class AnalysisManager<MachineFunction>;
3939

40-
/// Like \c AnalysisKey, but only for machine passes.
41-
struct alignas(8) MachinePassKey {};
42-
4340
/// A CRTP mix-in that provides informational APIs needed for machine passes.
4441
///
4542
/// This provides some boilerplate for types that are machine passes. It
4643
/// automatically mixes in \c PassInfoMixin.
4744
template <typename DerivedT>
4845
struct MachinePassInfoMixin : public PassInfoMixin<DerivedT> {
49-
static MachinePassKey *ID() {
50-
static_assert(std::is_base_of<MachinePassInfoMixin, DerivedT>::value,
51-
"Must pass the derived type as the template argument!");
52-
return &DerivedT::Key;
53-
}
46+
// TODO: Add MachineFunctionProperties support.
5447
};
5548

5649
/// An AnalysisManager<MachineFunction> that also exposes IR analysis results.

llvm/include/llvm/Passes/CodeGenPassBuilder.h

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ namespace llvm {
9494
MachineFunctionAnalysisManager &) { \
9595
llvm_unreachable("this api is to make new PM api happy"); \
9696
} \
97-
static MachinePassKey Key; \
9897
};
9998
#define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR) \
10099
struct PASS_NAME : public MachinePassInfoMixin<PASS_NAME> { \
@@ -103,7 +102,6 @@ namespace llvm {
103102
MachineFunctionAnalysisManager &) { \
104103
return PreservedAnalyses::all(); \
105104
} \
106-
static MachinePassKey Key; \
107105
};
108106
#define DUMMY_MACHINE_FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR) \
109107
struct PASS_NAME : public AnalysisInfoMixin<PASS_NAME> { \
@@ -164,8 +162,6 @@ template <typename DerivedT> class CodeGenPassBuilder {
164162
}
165163

166164
protected:
167-
template <typename PassT> using has_key_t = decltype(PassT::Key);
168-
169165
template <typename PassT>
170166
using is_module_pass_t = decltype(std::declval<PassT &>().run(
171167
std::declval<Module &>(), std::declval<ModuleAnalysisManager &>()));
@@ -225,10 +221,6 @@ template <typename DerivedT> class CodeGenPassBuilder {
225221
: PM(PM), PB(PB) {}
226222

227223
template <typename PassT> void operator()(PassT &&Pass) {
228-
static_assert(
229-
is_detected<has_key_t, PassT>::value,
230-
"Machine function pass must define a static member variable `Key`.");
231-
232224
if (!PB.runBeforeAdding(PassT::name()))
233225
return;
234226

@@ -238,10 +230,10 @@ template <typename DerivedT> class CodeGenPassBuilder {
238230
C(PassT::name());
239231
}
240232

241-
template <typename PassT> void insertPass(MachinePassKey *ID, PassT Pass) {
233+
template <typename PassT> void insertPass(StringRef PassName, PassT Pass) {
242234
PB.AfterCallbacks.emplace_back(
243-
[this, ID, Pass = std::move(Pass)](MachinePassKey *PassID) {
244-
if (PassID == ID)
235+
[this, PassName, Pass = std::move(Pass)](StringRef Name) {
236+
if (PassName == Name)
245237
this->PM.addPass(std::move(Pass));
246238
});
247239
}

llvm/lib/Passes/CodeGenPassBuilder.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@
1616
using namespace llvm;
1717

1818
namespace llvm {
19-
#define DUMMY_MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR) \
20-
MachinePassKey PASS_NAME::Key;
21-
#include "llvm/Passes/MachinePassRegistry.def"
22-
#define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR) \
23-
MachinePassKey PASS_NAME::Key;
2419
#define DUMMY_MACHINE_FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR) \
2520
AnalysisKey PASS_NAME::Key;
2621
#include "llvm/Passes/MachinePassRegistry.def"

llvm/unittests/MIR/PassBuilderCallbacksTest.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,6 @@ template <typename DerivedT> class MockPassHandleBase {
248248
}
249249

250250
public:
251-
static MachinePassKey Key;
252251
PreservedAnalyses run(MachineFunction &IR,
253252
MachineFunctionAnalysisManager::Base &AM) {
254253
return Handle->run(IR, AM);
@@ -279,9 +278,6 @@ struct MockAnalysisHandle : public MockAnalysisHandleBase<MockAnalysisHandle> {
279278
MockAnalysisHandle() { setDefaults(); }
280279
};
281280

282-
template <typename DerivedT>
283-
MachinePassKey MockPassHandleBase<DerivedT>::Pass::Key;
284-
285281
template <typename DerivedT>
286282
AnalysisKey MockAnalysisHandleBase<DerivedT>::Analysis::Key;
287283

0 commit comments

Comments
 (0)