Skip to content

Commit ec406e8

Browse files
authored
[GlobalISel] Add a GISelValueTracker printing pass (#139687)
This adds a GISelValueTrackingPrinterPass that can print the known bits and sign bit of each def in a function. It is built on the new pass manager and so adds a NPM GISelValueTrackingAnalysis, renaming the older class to GISelValueTrackingAnalysisLegacy. The first 2 functions from the AArch64GISelMITest are ported over to an mir test to show it working. It also runs successfully on all files in llvm/test/CodeGen/AArch64/GlobalISel/*.mir that are not invalid. It can hopefully be used to test GlobalISel known bits analysis more directly in common cases, without jumping through the hoops that the C++ tests requires.
1 parent 82b179c commit ec406e8

24 files changed

+175
-116
lines changed

llvm/docs/GlobalISel/KnownBits.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,18 @@ dependency with ``INITIALIZE_PASS_DEPENDENCY``.
6666
...
6767

6868
INITIALIZE_PASS_BEGIN(...)
69-
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysis)
69+
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysisLegacy)
7070
INITIALIZE_PASS_END(...)
7171

7272
and require the pass in ``getAnalysisUsage``.
7373

7474
.. code-block:: c++
7575

7676
void MyPass::getAnalysisUsage(AnalysisUsage &AU) const {
77-
AU.addRequired<GISelValueTrackingAnalysis>();
77+
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
7878
// Optional: If your pass preserves known bits analysis (many do) then
7979
// indicate that it's preserved for re-use by another pass here.
80-
AU.addPreserved<GISelValueTrackingAnalysis>();
80+
AU.addPreserved<GISelValueTrackingAnalysisLegacy>();
8181
}
8282

8383
Then it's just a matter of fetching the analysis and using it:
@@ -86,7 +86,7 @@ Then it's just a matter of fetching the analysis and using it:
8686

8787
bool MyPass::runOnMachineFunction(MachineFunction &MF) {
8888
...
89-
GISelValueTracking &VT = getAnalysis<GISelValueTrackingAnalysis>().get(MF);
89+
GISelValueTracking &VT = getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
9090
...
9191
MachineInstr *MI = ...;
9292
KnownBits Known = VT->getKnownBits(MI->getOperand(0).getReg());

llvm/include/llvm/CodeGen/GlobalISel/GISelValueTracking.h

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h"
1919
#include "llvm/CodeGen/MachineFunctionPass.h"
2020
#include "llvm/CodeGen/Register.h"
21+
#include "llvm/IR/PassManager.h"
2122
#include "llvm/InitializePasses.h"
2223
#include "llvm/Support/KnownBits.h"
2324

@@ -104,19 +105,42 @@ class GISelValueTracking : public GISelChangeObserver {
104105
/// Eventually add other features such as caching/ser/deserializing
105106
/// to MIR etc. Those implementations can derive from GISelValueTracking
106107
/// and override computeKnownBitsImpl.
107-
class GISelValueTrackingAnalysis : public MachineFunctionPass {
108+
class GISelValueTrackingAnalysisLegacy : public MachineFunctionPass {
108109
std::unique_ptr<GISelValueTracking> Info;
109110

110111
public:
111112
static char ID;
112-
GISelValueTrackingAnalysis() : MachineFunctionPass(ID) {
113-
initializeGISelValueTrackingAnalysisPass(*PassRegistry::getPassRegistry());
113+
GISelValueTrackingAnalysisLegacy() : MachineFunctionPass(ID) {
114+
initializeGISelValueTrackingAnalysisLegacyPass(
115+
*PassRegistry::getPassRegistry());
114116
}
115117
GISelValueTracking &get(MachineFunction &MF);
116118
void getAnalysisUsage(AnalysisUsage &AU) const override;
117119
bool runOnMachineFunction(MachineFunction &MF) override;
118120
void releaseMemory() override { Info.reset(); }
119121
};
122+
123+
class GISelValueTrackingAnalysis
124+
: public AnalysisInfoMixin<GISelValueTrackingAnalysis> {
125+
friend AnalysisInfoMixin<GISelValueTrackingAnalysis>;
126+
static AnalysisKey Key;
127+
128+
public:
129+
using Result = GISelValueTracking;
130+
131+
Result run(MachineFunction &MF, MachineFunctionAnalysisManager &MFAM);
132+
};
133+
134+
class GISelValueTrackingPrinterPass
135+
: public PassInfoMixin<GISelValueTrackingPrinterPass> {
136+
raw_ostream &OS;
137+
138+
public:
139+
GISelValueTrackingPrinterPass(raw_ostream &OS) : OS(OS) {}
140+
141+
PreservedAnalyses run(MachineFunction &MF,
142+
MachineFunctionAnalysisManager &MFAM);
143+
};
120144
} // namespace llvm
121145

122146
#endif // LLVM_CODEGEN_GLOBALISEL_GISELVALUETRACKING_H

llvm/include/llvm/InitializePasses.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ void initializeLazyValueInfoWrapperPassPass(PassRegistry &);
155155
void initializeLegacyLICMPassPass(PassRegistry &);
156156
void initializeLegalizerPass(PassRegistry &);
157157
void initializeGISelCSEAnalysisWrapperPassPass(PassRegistry &);
158-
void initializeGISelValueTrackingAnalysisPass(PassRegistry &);
158+
void initializeGISelValueTrackingAnalysisLegacyPass(PassRegistry &);
159159
void initializeLiveDebugValuesLegacyPass(PassRegistry &);
160160
void initializeLiveDebugVariablesWrapperLegacyPass(PassRegistry &);
161161
void initializeLiveIntervalsWrapperPassPass(PassRegistry &);

llvm/include/llvm/Passes/MachinePassRegistry.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ LOOP_PASS("loop-term-fold", LoopTermFoldPass())
9898
// computed. (We still either need to regenerate kill flags after regalloc, or
9999
// preferably fix the scavenger to not depend on them).
100100
MACHINE_FUNCTION_ANALYSIS("edge-bundles", EdgeBundlesAnalysis())
101+
MACHINE_FUNCTION_ANALYSIS("gisel-value-tracking", GISelValueTrackingAnalysis())
101102
MACHINE_FUNCTION_ANALYSIS("livedebugvars", LiveDebugVariablesAnalysis())
102103
MACHINE_FUNCTION_ANALYSIS("live-intervals", LiveIntervalsAnalysis())
103104
MACHINE_FUNCTION_ANALYSIS("live-reg-matrix", LiveRegMatrixAnalysis())
@@ -165,6 +166,7 @@ MACHINE_FUNCTION_PASS("post-RA-sched", PostRASchedulerPass(TM))
165166
MACHINE_FUNCTION_PASS("postmisched", PostMachineSchedulerPass(TM))
166167
MACHINE_FUNCTION_PASS("post-ra-pseudos", ExpandPostRAPseudosPass())
167168
MACHINE_FUNCTION_PASS("print", PrintMIRPass())
169+
MACHINE_FUNCTION_PASS("print<gisel-value-tracking>", GISelValueTrackingPrinterPass(errs()))
168170
MACHINE_FUNCTION_PASS("print<livedebugvars>", LiveDebugVariablesPrinterPass(errs()))
169171
MACHINE_FUNCTION_PASS("print<live-intervals>", LiveIntervalsPrinterPass(errs()))
170172
MACHINE_FUNCTION_PASS("print<live-stacks>", LiveStacksPrinterPass(errs()))

llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727

2828
using namespace llvm;
2929

30-
char llvm::GISelValueTrackingAnalysis::ID = 0;
30+
char llvm::GISelValueTrackingAnalysisLegacy::ID = 0;
3131

32-
INITIALIZE_PASS(GISelValueTrackingAnalysis, DEBUG_TYPE,
32+
INITIALIZE_PASS(GISelValueTrackingAnalysisLegacy, DEBUG_TYPE,
3333
"Analysis for ComputingKnownBits", false, true)
3434

3535
GISelValueTracking::GISelValueTracking(MachineFunction &MF, unsigned MaxDepth)
@@ -893,20 +893,57 @@ unsigned GISelValueTracking::computeNumSignBits(Register R, unsigned Depth) {
893893
return computeNumSignBits(R, DemandedElts, Depth);
894894
}
895895

896-
void GISelValueTrackingAnalysis::getAnalysisUsage(AnalysisUsage &AU) const {
896+
void GISelValueTrackingAnalysisLegacy::getAnalysisUsage(
897+
AnalysisUsage &AU) const {
897898
AU.setPreservesAll();
898899
MachineFunctionPass::getAnalysisUsage(AU);
899900
}
900901

901-
bool GISelValueTrackingAnalysis::runOnMachineFunction(MachineFunction &MF) {
902+
bool GISelValueTrackingAnalysisLegacy::runOnMachineFunction(
903+
MachineFunction &MF) {
902904
return false;
903905
}
904906

905-
GISelValueTracking &GISelValueTrackingAnalysis::get(MachineFunction &MF) {
907+
GISelValueTracking &GISelValueTrackingAnalysisLegacy::get(MachineFunction &MF) {
906908
if (!Info) {
907909
unsigned MaxDepth =
908910
MF.getTarget().getOptLevel() == CodeGenOptLevel::None ? 2 : 6;
909911
Info = std::make_unique<GISelValueTracking>(MF, MaxDepth);
910912
}
911913
return *Info;
912914
}
915+
916+
AnalysisKey GISelValueTrackingAnalysis::Key;
917+
918+
GISelValueTracking
919+
GISelValueTrackingAnalysis::run(MachineFunction &MF,
920+
MachineFunctionAnalysisManager &MFAM) {
921+
return Result(MF);
922+
}
923+
924+
PreservedAnalyses
925+
GISelValueTrackingPrinterPass::run(MachineFunction &MF,
926+
MachineFunctionAnalysisManager &MFAM) {
927+
auto &VTA = MFAM.getResult<GISelValueTrackingAnalysis>(MF);
928+
const auto &MRI = MF.getRegInfo();
929+
OS << "name: ";
930+
MF.getFunction().printAsOperand(OS, /*PrintType=*/false);
931+
OS << '\n';
932+
933+
for (MachineBasicBlock &BB : MF) {
934+
for (MachineInstr &MI : BB) {
935+
for (MachineOperand &MO : MI.defs()) {
936+
if (!MO.isReg() || MO.getReg().isPhysical())
937+
continue;
938+
Register Reg = MO.getReg();
939+
if (!MRI.getType(Reg).isValid())
940+
continue;
941+
KnownBits Known = VTA.getKnownBits(Reg);
942+
unsigned SignedBits = VTA.computeNumSignBits(Reg);
943+
OS << " " << MO << " KnownBits:" << Known << " SignBits:" << SignedBits
944+
<< '\n';
945+
};
946+
}
947+
}
948+
return PreservedAnalyses::all();
949+
}

llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ INITIALIZE_PASS_BEGIN(InstructionSelect, DEBUG_TYPE,
5656
"Select target instructions out of generic instructions",
5757
false, false)
5858
INITIALIZE_PASS_DEPENDENCY(TargetPassConfig)
59-
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysis)
59+
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysisLegacy)
6060
INITIALIZE_PASS_DEPENDENCY(ProfileSummaryInfoWrapperPass)
6161
INITIALIZE_PASS_DEPENDENCY(LazyBlockFrequencyInfoPass)
6262
INITIALIZE_PASS_END(InstructionSelect, DEBUG_TYPE,
@@ -120,8 +120,8 @@ class InstructionSelect::MIIteratorMaintainer : public GISelChangeObserver {
120120

121121
void InstructionSelect::getAnalysisUsage(AnalysisUsage &AU) const {
122122
AU.addRequired<TargetPassConfig>();
123-
AU.addRequired<GISelValueTrackingAnalysis>();
124-
AU.addPreserved<GISelValueTrackingAnalysis>();
123+
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
124+
AU.addPreserved<GISelValueTrackingAnalysisLegacy>();
125125

126126
if (OptLevel != CodeGenOptLevel::None) {
127127
AU.addRequired<ProfileSummaryInfoWrapperPass>();
@@ -146,7 +146,7 @@ bool InstructionSelect::runOnMachineFunction(MachineFunction &MF) {
146146
OptLevel = MF.getFunction().hasOptNone() ? CodeGenOptLevel::None
147147
: MF.getTarget().getOptLevel();
148148

149-
VT = &getAnalysis<GISelValueTrackingAnalysis>().get(MF);
149+
VT = &getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
150150
if (OptLevel != CodeGenOptLevel::None) {
151151
PSI = &getAnalysis<ProfileSummaryInfoWrapperPass>().getPSI();
152152
if (PSI && PSI->hasProfileSummary())

llvm/lib/CodeGen/GlobalISel/Legalizer.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ INITIALIZE_PASS_BEGIN(Legalizer, DEBUG_TYPE,
7575
false)
7676
INITIALIZE_PASS_DEPENDENCY(TargetPassConfig)
7777
INITIALIZE_PASS_DEPENDENCY(GISelCSEAnalysisWrapperPass)
78-
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysis)
78+
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysisLegacy)
7979
INITIALIZE_PASS_END(Legalizer, DEBUG_TYPE,
8080
"Legalize the Machine IR a function's Machine IR", false,
8181
false)
@@ -86,8 +86,8 @@ void Legalizer::getAnalysisUsage(AnalysisUsage &AU) const {
8686
AU.addRequired<TargetPassConfig>();
8787
AU.addRequired<GISelCSEAnalysisWrapperPass>();
8888
AU.addPreserved<GISelCSEAnalysisWrapperPass>();
89-
AU.addRequired<GISelValueTrackingAnalysis>();
90-
AU.addPreserved<GISelValueTrackingAnalysis>();
89+
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
90+
AU.addPreserved<GISelValueTrackingAnalysisLegacy>();
9191
getSelectionDAGFallbackAnalysisUsage(AU);
9292
MachineFunctionPass::getAnalysisUsage(AU);
9393
}
@@ -341,7 +341,8 @@ bool Legalizer::runOnMachineFunction(MachineFunction &MF) {
341341
AuxObservers.push_back(&LocObserver);
342342

343343
// This allows Known Bits Analysis in the legalizer.
344-
GISelValueTracking *VT = &getAnalysis<GISelValueTrackingAnalysis>().get(MF);
344+
GISelValueTracking *VT =
345+
&getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
345346

346347
const LegalizerInfo &LI = *MF.getSubtarget().getLegalizerInfo();
347348
MFResult Result = legalizeMachineFunction(MF, LI, AuxObservers, LocObserver,

llvm/lib/Passes/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ add_llvm_component_library(LLVMPasses
1919
Analysis
2020
CFGuard
2121
CodeGen
22+
GlobalISel
2223
Core
2324
Coroutines
2425
HipStdPar

llvm/lib/Passes/PassBuilder.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
#include "llvm/CodeGen/FinalizeISel.h"
100100
#include "llvm/CodeGen/FixupStatepointCallerSaved.h"
101101
#include "llvm/CodeGen/GCMetadata.h"
102+
#include "llvm/CodeGen/GlobalISel/GISelValueTracking.h"
102103
#include "llvm/CodeGen/GlobalMerge.h"
103104
#include "llvm/CodeGen/GlobalMergeFunctions.h"
104105
#include "llvm/CodeGen/HardwareLoops.h"

llvm/lib/Target/AArch64/GISel/AArch64O0PreLegalizerCombiner.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,8 @@ void AArch64O0PreLegalizerCombiner::getAnalysisUsage(AnalysisUsage &AU) const {
135135
AU.addRequired<TargetPassConfig>();
136136
AU.setPreservesCFG();
137137
getSelectionDAGFallbackAnalysisUsage(AU);
138-
AU.addRequired<GISelValueTrackingAnalysis>();
139-
AU.addPreserved<GISelValueTrackingAnalysis>();
138+
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
139+
AU.addPreserved<GISelValueTrackingAnalysisLegacy>();
140140
MachineFunctionPass::getAnalysisUsage(AU);
141141
}
142142

@@ -153,7 +153,8 @@ bool AArch64O0PreLegalizerCombiner::runOnMachineFunction(MachineFunction &MF) {
153153
auto &TPC = getAnalysis<TargetPassConfig>();
154154

155155
const Function &F = MF.getFunction();
156-
GISelValueTracking *VT = &getAnalysis<GISelValueTrackingAnalysis>().get(MF);
156+
GISelValueTracking *VT =
157+
&getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
157158

158159
const AArch64Subtarget &ST = MF.getSubtarget<AArch64Subtarget>();
159160

@@ -174,7 +175,7 @@ INITIALIZE_PASS_BEGIN(AArch64O0PreLegalizerCombiner, DEBUG_TYPE,
174175
"Combine AArch64 machine instrs before legalization",
175176
false, false)
176177
INITIALIZE_PASS_DEPENDENCY(TargetPassConfig)
177-
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysis)
178+
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysisLegacy)
178179
INITIALIZE_PASS_DEPENDENCY(GISelCSEAnalysisWrapperPass)
179180
INITIALIZE_PASS_END(AArch64O0PreLegalizerCombiner, DEBUG_TYPE,
180181
"Combine AArch64 machine instrs before legalization", false,

llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerCombiner.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -636,8 +636,8 @@ void AArch64PostLegalizerCombiner::getAnalysisUsage(AnalysisUsage &AU) const {
636636
AU.addRequired<TargetPassConfig>();
637637
AU.setPreservesCFG();
638638
getSelectionDAGFallbackAnalysisUsage(AU);
639-
AU.addRequired<GISelValueTrackingAnalysis>();
640-
AU.addPreserved<GISelValueTrackingAnalysis>();
639+
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
640+
AU.addPreserved<GISelValueTrackingAnalysisLegacy>();
641641
if (!IsOptNone) {
642642
AU.addRequired<MachineDominatorTreeWrapperPass>();
643643
AU.addPreserved<MachineDominatorTreeWrapperPass>();
@@ -668,7 +668,8 @@ bool AArch64PostLegalizerCombiner::runOnMachineFunction(MachineFunction &MF) {
668668
const AArch64Subtarget &ST = MF.getSubtarget<AArch64Subtarget>();
669669
const auto *LI = ST.getLegalizerInfo();
670670

671-
GISelValueTracking *VT = &getAnalysis<GISelValueTrackingAnalysis>().get(MF);
671+
GISelValueTracking *VT =
672+
&getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
672673
MachineDominatorTree *MDT =
673674
IsOptNone ? nullptr
674675
: &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree();
@@ -883,7 +884,7 @@ INITIALIZE_PASS_BEGIN(AArch64PostLegalizerCombiner, DEBUG_TYPE,
883884
"Combine AArch64 MachineInstrs after legalization", false,
884885
false)
885886
INITIALIZE_PASS_DEPENDENCY(TargetPassConfig)
886-
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysis)
887+
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysisLegacy)
887888
INITIALIZE_PASS_END(AArch64PostLegalizerCombiner, DEBUG_TYPE,
888889
"Combine AArch64 MachineInstrs after legalization", false,
889890
false)

llvm/lib/Target/AArch64/GISel/AArch64PreLegalizerCombiner.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -820,8 +820,8 @@ void AArch64PreLegalizerCombiner::getAnalysisUsage(AnalysisUsage &AU) const {
820820
AU.addRequired<TargetPassConfig>();
821821
AU.setPreservesCFG();
822822
getSelectionDAGFallbackAnalysisUsage(AU);
823-
AU.addRequired<GISelValueTrackingAnalysis>();
824-
AU.addPreserved<GISelValueTrackingAnalysis>();
823+
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
824+
AU.addPreserved<GISelValueTrackingAnalysisLegacy>();
825825
AU.addRequired<MachineDominatorTreeWrapperPass>();
826826
AU.addPreserved<MachineDominatorTreeWrapperPass>();
827827
AU.addRequired<GISelCSEAnalysisWrapperPass>();
@@ -852,7 +852,8 @@ bool AArch64PreLegalizerCombiner::runOnMachineFunction(MachineFunction &MF) {
852852
const Function &F = MF.getFunction();
853853
bool EnableOpt =
854854
MF.getTarget().getOptLevel() != CodeGenOptLevel::None && !skipFunction(F);
855-
GISelValueTracking *VT = &getAnalysis<GISelValueTrackingAnalysis>().get(MF);
855+
GISelValueTracking *VT =
856+
&getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
856857
MachineDominatorTree *MDT =
857858
&getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree();
858859
CombinerInfo CInfo(/*AllowIllegalOps*/ true, /*ShouldLegalizeIllegal*/ false,
@@ -874,7 +875,7 @@ INITIALIZE_PASS_BEGIN(AArch64PreLegalizerCombiner, DEBUG_TYPE,
874875
"Combine AArch64 machine instrs before legalization",
875876
false, false)
876877
INITIALIZE_PASS_DEPENDENCY(TargetPassConfig)
877-
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysis)
878+
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysisLegacy)
878879
INITIALIZE_PASS_DEPENDENCY(GISelCSEAnalysisWrapperPass)
879880
INITIALIZE_PASS_END(AArch64PreLegalizerCombiner, DEBUG_TYPE,
880881
"Combine AArch64 machine instrs before legalization", false,

llvm/lib/Target/AMDGPU/AMDGPUPostLegalizerCombiner.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -462,8 +462,8 @@ void AMDGPUPostLegalizerCombiner::getAnalysisUsage(AnalysisUsage &AU) const {
462462
AU.addRequired<TargetPassConfig>();
463463
AU.setPreservesCFG();
464464
getSelectionDAGFallbackAnalysisUsage(AU);
465-
AU.addRequired<GISelValueTrackingAnalysis>();
466-
AU.addPreserved<GISelValueTrackingAnalysis>();
465+
AU.addRequired<GISelValueTrackingAnalysisLegacy>();
466+
AU.addPreserved<GISelValueTrackingAnalysisLegacy>();
467467
if (!IsOptNone) {
468468
AU.addRequired<MachineDominatorTreeWrapperPass>();
469469
AU.addPreserved<MachineDominatorTreeWrapperPass>();
@@ -490,7 +490,8 @@ bool AMDGPUPostLegalizerCombiner::runOnMachineFunction(MachineFunction &MF) {
490490
const AMDGPULegalizerInfo *LI =
491491
static_cast<const AMDGPULegalizerInfo *>(ST.getLegalizerInfo());
492492

493-
GISelValueTracking *VT = &getAnalysis<GISelValueTrackingAnalysis>().get(MF);
493+
GISelValueTracking *VT =
494+
&getAnalysis<GISelValueTrackingAnalysisLegacy>().get(MF);
494495
MachineDominatorTree *MDT =
495496
IsOptNone ? nullptr
496497
: &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree();
@@ -512,7 +513,7 @@ INITIALIZE_PASS_BEGIN(AMDGPUPostLegalizerCombiner, DEBUG_TYPE,
512513
"Combine AMDGPU machine instrs after legalization", false,
513514
false)
514515
INITIALIZE_PASS_DEPENDENCY(TargetPassConfig)
515-
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysis)
516+
INITIALIZE_PASS_DEPENDENCY(GISelValueTrackingAnalysisLegacy)
516517
INITIALIZE_PASS_END(AMDGPUPostLegalizerCombiner, DEBUG_TYPE,
517518
"Combine AMDGPU machine instrs after legalization", false,
518519
false)

0 commit comments

Comments
 (0)