Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c02e49a

Browse files
authored
[CodeGen] Port dot-machine-cfg to new pass manager (#195901)
1 parent f366045 commit c02e49a

8 files changed

Lines changed: 39 additions & 10 deletions

File tree

llvm/include/llvm/CodeGen/MachineCFGPrinter.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,11 @@ struct DOTGraphTraits<DOTMachineFuncInfo *> : public DefaultDOTGraphTraits {
8989
"' function";
9090
}
9191
};
92+
93+
class MachineCFGPrinterPass : public PassInfoMixin<MachineCFGPrinterPass> {
94+
public:
95+
LLVM_ABI PreservedAnalyses run(MachineFunction &MF,
96+
MachineFunctionAnalysisManager &MFAM);
97+
};
98+
9299
} // namespace llvm

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ LLVM_ABI void initializeMachineBlockPlacementLegacyPass(PassRegistry &);
198198
LLVM_ABI void initializeMachineBlockPlacementStatsLegacyPass(PassRegistry &);
199199
LLVM_ABI void
200200
initializeMachineBranchProbabilityInfoWrapperPassPass(PassRegistry &);
201-
LLVM_ABI void initializeMachineCFGPrinterPass(PassRegistry &);
201+
LLVM_ABI void initializeMachineCFGPrinterLegacyPass(PassRegistry &);
202202
LLVM_ABI void initializeMachineCSELegacyPass(PassRegistry &);
203203
LLVM_ABI void initializeMachineCombinerPass(PassRegistry &);
204204
LLVM_ABI void initializeMachineCopyPropagationLegacyPass(PassRegistry &);

llvm/include/llvm/Passes/MachinePassRegistry.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ MACHINE_FUNCTION_PASS("block-placement-stats", MachineBlockPlacementStatsPass())
110110
MACHINE_FUNCTION_PASS("branch-relaxation", BranchRelaxationPass())
111111
MACHINE_FUNCTION_PASS("dead-mi-elimination", DeadMachineInstructionElimPass())
112112
MACHINE_FUNCTION_PASS("detect-dead-lanes", DetectDeadLanesPass())
113+
MACHINE_FUNCTION_PASS("dot-machine-cfg", MachineCFGPrinterPass())
113114
MACHINE_FUNCTION_PASS("early-ifcvt", EarlyIfConverterPass())
114115
MACHINE_FUNCTION_PASS("early-machinelicm", EarlyMachineLICMPass())
115116
MACHINE_FUNCTION_PASS("early-tailduplication", EarlyTailDuplicatePass())
@@ -276,7 +277,6 @@ DUMMY_MACHINE_FUNCTION_PASS("break-false-deps", BreakFalseDepsPass)
276277
DUMMY_MACHINE_FUNCTION_PASS("cfguard-longjmp", CFGuardLongjmpPass)
277278
DUMMY_MACHINE_FUNCTION_PASS("cfi-fixup", CFIFixupPass)
278279
DUMMY_MACHINE_FUNCTION_PASS("cfi-instr-inserter", CFIInstrInserterPass)
279-
DUMMY_MACHINE_FUNCTION_PASS("dot-machine-cfg", MachineCFGPrinter)
280280
DUMMY_MACHINE_FUNCTION_PASS("eh-cont-guard-targets", EHContGuardTargetsPass)
281281
DUMMY_MACHINE_FUNCTION_PASS("fs-profile-loader", MIRProfileLoaderNewPass)
282282
DUMMY_MACHINE_FUNCTION_PASS("funclet-layout", FuncletLayoutPass)

llvm/lib/CodeGen/CodeGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
8686
initializeMachineBlockPlacementLegacyPass(Registry);
8787
initializeMachineBlockPlacementStatsLegacyPass(Registry);
8888
initializeMachineBranchProbabilityInfoWrapperPassPass(Registry);
89-
initializeMachineCFGPrinterPass(Registry);
89+
initializeMachineCFGPrinterLegacyPass(Registry);
9090
initializeMachineCSELegacyPass(Registry);
9191
initializeMachineCombinerPass(Registry);
9292
initializeMachineDominanceFrontierWrapperPassPass(Registry);

llvm/lib/CodeGen/MachineCFGPrinter.cpp

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "llvm/CodeGen/MachineCFGPrinter.h"
1515
#include "llvm/CodeGen/MachineBasicBlock.h"
1616
#include "llvm/CodeGen/MachineFunctionPass.h"
17+
#include "llvm/CodeGen/MachinePassManager.h"
1718
#include "llvm/CodeGen/TargetSubtargetInfo.h"
1819
#include "llvm/InitializePasses.h"
1920
#include "llvm/Pass.h"
@@ -56,11 +57,11 @@ static void writeMCFGToDotFile(MachineFunction &MF) {
5657

5758
namespace {
5859

59-
class MachineCFGPrinter : public MachineFunctionPass {
60+
class MachineCFGPrinterLegacy : public MachineFunctionPass {
6061
public:
6162
static char ID;
6263

63-
MachineCFGPrinter();
64+
MachineCFGPrinterLegacy();
6465

6566
bool runOnMachineFunction(MachineFunction &MF) override;
6667

@@ -72,17 +73,17 @@ class MachineCFGPrinter : public MachineFunctionPass {
7273

7374
} // namespace
7475

75-
char MachineCFGPrinter::ID = 0;
76+
char MachineCFGPrinterLegacy::ID = 0;
7677

77-
char &llvm::MachineCFGPrinterID = MachineCFGPrinter::ID;
78+
char &llvm::MachineCFGPrinterID = MachineCFGPrinterLegacy::ID;
7879

79-
INITIALIZE_PASS(MachineCFGPrinter, DEBUG_TYPE, "Machine CFG Printer Pass",
80+
INITIALIZE_PASS(MachineCFGPrinterLegacy, DEBUG_TYPE, "Machine CFG Printer Pass",
8081
false, true)
8182

8283
/// Default construct and initialize the pass.
83-
MachineCFGPrinter::MachineCFGPrinter() : MachineFunctionPass(ID) {}
84+
MachineCFGPrinterLegacy::MachineCFGPrinterLegacy() : MachineFunctionPass(ID) {}
8485

85-
bool MachineCFGPrinter::runOnMachineFunction(MachineFunction &MF) {
86+
bool MachineCFGPrinterLegacy::runOnMachineFunction(MachineFunction &MF) {
8687
if (!MCFGFuncName.empty() && !MF.getName().contains(MCFGFuncName))
8788
return false;
8889
errs() << "Writing Machine CFG for function ";
@@ -91,3 +92,15 @@ bool MachineCFGPrinter::runOnMachineFunction(MachineFunction &MF) {
9192
writeMCFGToDotFile(MF);
9293
return false;
9394
}
95+
96+
PreservedAnalyses
97+
MachineCFGPrinterPass::run(MachineFunction &MF,
98+
MachineFunctionAnalysisManager &MFAM) {
99+
if (!MCFGFuncName.empty() && !MF.getName().contains(MCFGFuncName))
100+
return PreservedAnalyses::all();
101+
errs() << "Writing Machine CFG for function ";
102+
errs().write_escaped(MF.getName()) << '\n';
103+
104+
writeMCFGToDotFile(MF);
105+
return PreservedAnalyses::all();
106+
}

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@
123123
#include "llvm/CodeGen/MachineBlockHashInfo.h"
124124
#include "llvm/CodeGen/MachineBlockPlacement.h"
125125
#include "llvm/CodeGen/MachineBranchProbabilityInfo.h"
126+
#include "llvm/CodeGen/MachineCFGPrinter.h"
126127
#include "llvm/CodeGen/MachineCSE.h"
127128
#include "llvm/CodeGen/MachineCopyPropagation.h"
128129
#include "llvm/CodeGen/MachineDebugify.h"

llvm/test/Analysis/DotMachineCFG/AMDGPU/functions.mir

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
# RUN: llc -mtriple=amdgcn-- -run-pass=dot-machine-cfg -mcfg-dot-filename-prefix=%t -mcfg-func-name=func2 -o - %s -filetype=null 2>&1
22
# RUN: FileCheck %s -input-file=%t.func2.dot --check-prefix=MCFG
33

4+
# RUN: llc -mtriple=amdgcn-- -passes=dot-machine-cfg -mcfg-dot-filename-prefix=%t -mcfg-func-name=func2 -o - %s -filetype=null 2>&1
5+
# RUN: FileCheck %s -input-file=%t.func2.dot --check-prefix=MCFG
6+
47
# MCFG-NOT: digraph "Machine CFG for 'func1' function"
58
name: func1
69
body: |

llvm/test/Analysis/DotMachineCFG/AMDGPU/irreducible.mir

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
# RUN: llc -mtriple=amdgcn-- -run-pass=dot-machine-cfg -mcfg-dot-filename-prefix=%t -dot-mcfg-only -o - %s -filetype=null 2>&1
44
# RUN: FileCheck %s -input-file=%t.irreducible.dot --check-prefix=MCFG-ONLY
55

6+
# RUN: llc -mtriple=amdgcn-- -passes=dot-machine-cfg -mcfg-dot-filename-prefix=%t -o - %s -filetype=null 2>&1
7+
# RUN: FileCheck %s -input-file=%t.irreducible.dot --check-prefix=MCFG
8+
# RUN: llc -mtriple=amdgcn-- -passes=dot-machine-cfg -mcfg-dot-filename-prefix=%t -dot-mcfg-only -o - %s -filetype=null 2>&1
9+
# RUN: FileCheck %s -input-file=%t.irreducible.dot --check-prefix=MCFG-ONLY
10+
611
# MCFG: digraph "Machine CFG for 'irreducible' function"
712
# MCFG-NEXT: label="Machine CFG for 'irreducible' function"
813
# MCFG: Node{{[0-9A-Za-z]*}} [shape=record,label="{bb.0:\l| successors: %bb.1(0x40000000), %bb.2(0x40000000)\l liveins: $vgpr0, $vgpr1, $vgpr2, $sgpr4_sgpr5, $sgpr6_sgpr7, $sgpr8_sgpr9,\l... $sgpr10_sgpr11, $sgpr14, $sgpr15, $sgpr16\l %0:sreg_32 = IMPLICIT_DEF\l %1:vgpr_32 = COPY $vgpr0\l %2:vgpr_32 = V_MOV_B32_e32 0, implicit $exec\l S_CMP_EQ_U32 %0:sreg_32, 0, implicit-def $scc\l S_CBRANCH_SCC1 %bb.1, implicit $scc\l S_BRANCH %bb.2\l}"];

0 commit comments

Comments
 (0)