Skip to content

Commit fde91d1

Browse files
authored
Reland "[Pass][CodeGen] Add some necessary passes for codegen" (#71783)
Unfortunately, there are two `KCFI` passes in source tree, `CodeGen/KCFI.cpp` and `Transforms/Instrumentation/KCFI.cpp`, use `MachineKCFIPass` for machine function pass. `MIRProfileLoaderPass` is resolved to the legacy one when `LLVM_ENABLE_MODULES=ON`, use `MIRProfileLoaderNewPass` as a workaround.
1 parent 2a21260 commit fde91d1

File tree

3 files changed

+51
-4
lines changed

3 files changed

+51
-4
lines changed

llvm/include/llvm/CodeGen/CodeGenPassBuilder.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,18 @@ namespace llvm {
105105
} \
106106
static AnalysisKey Key; \
107107
};
108-
#include "MachinePassRegistry.def"
108+
#define DUMMY_MACHINE_FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR) \
109+
struct PASS_NAME : public AnalysisInfoMixin<PASS_NAME> { \
110+
template <typename... Ts> PASS_NAME(Ts &&...) {} \
111+
using Result = struct {}; \
112+
template <typename IRUnitT, typename AnalysisManagerT, \
113+
typename... ExtraArgTs> \
114+
Result run(IRUnitT &, AnalysisManagerT &, ExtraArgTs &&...) { \
115+
return {}; \
116+
} \
117+
static AnalysisKey Key; \
118+
};
119+
#include "llvm/CodeGen/MachinePassRegistry.def"
109120

110121
/// This class provides access to building LLVM's passes.
111122
///

llvm/include/llvm/CodeGen/MachinePassRegistry.def

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ FUNCTION_PASS("cfguard", CFGuardPass, ())
4444
FUNCTION_PASS("consthoist", ConstantHoistingPass, ())
4545
FUNCTION_PASS("dwarf-eh-prepare", DwarfEHPreparePass, (TM))
4646
FUNCTION_PASS("ee-instrument", EntryExitInstrumenterPass, (false))
47-
FUNCTION_PASS("expand-large-div-rem", ExpandLargeDivRemPass, ())
48-
FUNCTION_PASS("expand-large-fp-convert", ExpandLargeFpConvertPass, ())
47+
FUNCTION_PASS("expand-large-div-rem", ExpandLargeDivRemPass, (TM))
48+
FUNCTION_PASS("expand-large-fp-convert", ExpandLargeFpConvertPass, (TM))
4949
FUNCTION_PASS("expand-memcmp", ExpandMemCmpPass, (TM))
5050
FUNCTION_PASS("expand-reductions", ExpandReductionsPass, ())
5151
FUNCTION_PASS("expandvp", ExpandVectorPredicationPass, ())
@@ -146,17 +146,26 @@ DUMMY_MODULE_PASS("lower-emutls", LowerEmuTLSPass, ())
146146
#define DUMMY_MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
147147
#endif
148148
DUMMY_MACHINE_MODULE_PASS("machine-outliner", MachineOutlinerPass, ())
149+
DUMMY_MACHINE_MODULE_PASS("pseudo-probe-inserter", PseudoProbeInserterPass, ())
150+
DUMMY_MACHINE_MODULE_PASS("mir-debugify", DebugifyMachineModule, ())
151+
DUMMY_MACHINE_MODULE_PASS("mir-check-debugify", CheckDebugMachineModulePass, ())
152+
DUMMY_MACHINE_MODULE_PASS("mir-strip-debug", StripDebugMachineModulePass,
153+
(OnlyDebugified))
149154
#undef DUMMY_MACHINE_MODULE_PASS
150155

151156
#ifndef DUMMY_MACHINE_FUNCTION_PASS
152157
#define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
153158
#endif
159+
DUMMY_MACHINE_FUNCTION_PASS("bbsections-prepare", BasicBlockSectionsPass, ())
160+
DUMMY_MACHINE_FUNCTION_PASS("bbsections-profile-reader",
161+
BasicBlockSectionsProfileReaderPass, (Buf))
154162
DUMMY_MACHINE_FUNCTION_PASS("block-placement", MachineBlockPlacementPass, ())
155163
DUMMY_MACHINE_FUNCTION_PASS("block-placement-stats",
156164
MachineBlockPlacementStatsPass, ())
157165
DUMMY_MACHINE_FUNCTION_PASS("branch-folder", BranchFolderPass, ())
158166
DUMMY_MACHINE_FUNCTION_PASS("break-false-deps", BreakFalseDepsPass, ())
159167
DUMMY_MACHINE_FUNCTION_PASS("cfguard-longjmp", CFGuardLongjmpPass, ())
168+
DUMMY_MACHINE_FUNCTION_PASS("cfi-fixup", CFIFixupPass, ())
160169
DUMMY_MACHINE_FUNCTION_PASS("cfi-instr-inserter", CFIInstrInserterPass, ())
161170
DUMMY_MACHINE_FUNCTION_PASS("dead-mi-elimination",
162171
DeadMachineInstructionElimPass, ())
@@ -167,12 +176,18 @@ DUMMY_MACHINE_FUNCTION_PASS("early-machinelicm", EarlyMachineLICMPass, ())
167176
DUMMY_MACHINE_FUNCTION_PASS("early-tailduplication", EarlyTailDuplicatePass, ())
168177
DUMMY_MACHINE_FUNCTION_PASS("fentry-insert", FEntryInserterPass, ())
169178
DUMMY_MACHINE_FUNCTION_PASS("finalize-isel", FinalizeISelPass, ())
179+
DUMMY_MACHINE_FUNCTION_PASS("fixup-statepoint-caller-saved",
180+
FixupStatepointCallerSavedPass, ())
170181
DUMMY_MACHINE_FUNCTION_PASS("free-machine-function", FreeMachineFunctionPass,
171182
())
183+
DUMMY_MACHINE_FUNCTION_PASS("fs-profile-loader", MIRProfileLoaderNewPass,
184+
(File, ProfileFile, P, FS))
172185
DUMMY_MACHINE_FUNCTION_PASS("funclet-layout", FuncletLayoutPass, ())
186+
DUMMY_MACHINE_FUNCTION_PASS("gc-empty-basic-blocks", GCEmptyBasicBlocksPass, ())
173187
DUMMY_MACHINE_FUNCTION_PASS("implicit-null-checks", ImplicitNullChecksPass, ())
174188
DUMMY_MACHINE_FUNCTION_PASS("instruction-select", InstructionSelectPass, ())
175189
DUMMY_MACHINE_FUNCTION_PASS("irtranslator", IRTranslatorPass, ())
190+
DUMMY_MACHINE_FUNCTION_PASS("kcfi", MachineKCFIPass, ())
176191
DUMMY_MACHINE_FUNCTION_PASS("legalizer", LegalizerPass, ())
177192
DUMMY_MACHINE_FUNCTION_PASS("livedebugvalues", LiveDebugValuesPass, ())
178193
DUMMY_MACHINE_FUNCTION_PASS("liveintervals", LiveIntervalsPass, ())
@@ -181,16 +196,22 @@ DUMMY_MACHINE_FUNCTION_PASS("lrshrink", LiveRangeShrinkPass, ())
181196
DUMMY_MACHINE_FUNCTION_PASS("machine-combiner", MachineCombinerPass, ())
182197
DUMMY_MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass, ())
183198
DUMMY_MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass, ())
199+
DUMMY_MACHINE_FUNCTION_PASS("machine-function-splitter",
200+
MachineFunctionSplitterPass, ())
184201
DUMMY_MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass,
185202
())
186203
DUMMY_MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadata, ())
187204
DUMMY_MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass, ())
188205
DUMMY_MACHINE_FUNCTION_PASS("machine-sink", MachineSinkingPass, ())
189206
DUMMY_MACHINE_FUNCTION_PASS("machine-uniformity",
190207
MachineUniformityInfoWrapperPass, ())
208+
DUMMY_MACHINE_FUNCTION_PASS("machineinstr-printer", MachineFunctionPrinterPass,
209+
(OS, Banner))
191210
DUMMY_MACHINE_FUNCTION_PASS("machinelicm", MachineLICMPass, ())
192-
DUMMY_MACHINE_FUNCTION_PASS("machineverifier", MachineVerifierPass, ())
211+
DUMMY_MACHINE_FUNCTION_PASS("machineverifier", MachineVerifierPass, (Banner))
193212
DUMMY_MACHINE_FUNCTION_PASS("mir-printer", PrintMIRPass, ())
213+
DUMMY_MACHINE_FUNCTION_PASS("mirfs-discriminators", MIRAddFSDiscriminatorsPass,
214+
(P))
194215
DUMMY_MACHINE_FUNCTION_PASS("opt-phis", OptimizePHIsPass, ())
195216
DUMMY_MACHINE_FUNCTION_PASS("patchable-function", PatchableFunctionPass, ())
196217
DUMMY_MACHINE_FUNCTION_PASS("peephole-opt", PeepholeOptimizerPass, ())
@@ -205,6 +226,8 @@ DUMMY_MACHINE_FUNCTION_PASS("print-machine-uniformity",
205226
MachineUniformityInfoPrinterPass, ())
206227
DUMMY_MACHINE_FUNCTION_PASS("processimpdefs", ProcessImplicitDefsPass, ())
207228
DUMMY_MACHINE_FUNCTION_PASS("prologepilog", PrologEpilogInserterPass, ())
229+
DUMMY_MACHINE_FUNCTION_PASS("prologepilog-code", PrologEpilogCodeInserterPass,
230+
())
208231
DUMMY_MACHINE_FUNCTION_PASS("ra-basic", RABasicPass, ())
209232
DUMMY_MACHINE_FUNCTION_PASS("ra-fast", RAFastPass, ())
210233
DUMMY_MACHINE_FUNCTION_PASS("ra-greedy", RAGreedyPass, ())
@@ -214,6 +237,7 @@ DUMMY_MACHINE_FUNCTION_PASS("reg-usage-collector", RegUsageInfoCollectorPass,
214237
DUMMY_MACHINE_FUNCTION_PASS("reg-usage-propagation",
215238
RegUsageInfoPropagationPass, ())
216239
DUMMY_MACHINE_FUNCTION_PASS("regalloc", RegAllocPass, ())
240+
DUMMY_MACHINE_FUNCTION_PASS("regallocscoringpass", RegAllocScoringPass, ())
217241
DUMMY_MACHINE_FUNCTION_PASS("regbankselect", RegBankSelectPass, ())
218242
DUMMY_MACHINE_FUNCTION_PASS("removeredundantdebugvalues",
219243
RemoveRedundantDebugValuesPass, ())
@@ -225,11 +249,21 @@ DUMMY_MACHINE_FUNCTION_PASS("shrink-wrap", ShrinkWrapPass, ())
225249
DUMMY_MACHINE_FUNCTION_PASS("simple-register-coalescing", RegisterCoalescerPass,
226250
())
227251
DUMMY_MACHINE_FUNCTION_PASS("stack-coloring", StackColoringPass, ())
252+
DUMMY_MACHINE_FUNCTION_PASS("stack-frame-layout", StackFrameLayoutAnalysisPass,
253+
())
228254
DUMMY_MACHINE_FUNCTION_PASS("stack-slot-coloring", StackSlotColoringPass, ())
229255
DUMMY_MACHINE_FUNCTION_PASS("stackmap-liveness", StackMapLivenessPass, ())
230256
DUMMY_MACHINE_FUNCTION_PASS("tailduplication", TailDuplicatePass, ())
231257
DUMMY_MACHINE_FUNCTION_PASS("twoaddressinstruction", TwoAddressInstructionPass,
232258
())
259+
DUMMY_MACHINE_FUNCTION_PASS("unpack-mi-bundles", UnpackMachineBundlesPass,
260+
(Ftor))
233261
DUMMY_MACHINE_FUNCTION_PASS("virtregrewriter", VirtRegRewriterPass, ())
234262
DUMMY_MACHINE_FUNCTION_PASS("xray-instrumentation", XRayInstrumentationPass, ())
235263
#undef DUMMY_MACHINE_FUNCTION_PASS
264+
265+
#ifndef DUMMY_MACHINE_FUNCTION_ANALYSIS
266+
#define DUMMY_MACHINE_FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR)
267+
#endif
268+
DUMMY_MACHINE_FUNCTION_ANALYSIS("gc-analysis", GCMachineCodeAnalysisPass, ())
269+
#undef DUMMY_MACHINE_FUNCTION_ANALYSIS

llvm/lib/CodeGen/CodeGenPassBuilder.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,7 @@ namespace llvm {
2121
#include "llvm/CodeGen/MachinePassRegistry.def"
2222
#define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR) \
2323
AnalysisKey PASS_NAME::Key;
24+
#define DUMMY_MACHINE_FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR) \
25+
AnalysisKey PASS_NAME::Key;
2426
#include "llvm/CodeGen/MachinePassRegistry.def"
2527
} // namespace llvm

0 commit comments

Comments
 (0)