|
38 | 38 | #include "llvm/CodeGen/MachineLoopInfo.h"
|
39 | 39 | #include "llvm/CodeGen/MachineOperand.h"
|
40 | 40 | #include "llvm/CodeGen/MachinePostDominators.h"
|
| 41 | +#include "llvm/CodeGen/MachineRegisterClassInfo.h" |
41 | 42 | #include "llvm/CodeGen/MachineRegisterInfo.h"
|
42 | 43 | #include "llvm/CodeGen/MachineSizeOpts.h"
|
43 | 44 | #include "llvm/CodeGen/RegisterClassInfo.h"
|
@@ -127,7 +128,7 @@ class MachineSinking : public MachineFunctionPass {
|
127 | 128 | MachineBlockFrequencyInfo *MBFI = nullptr;
|
128 | 129 | const MachineBranchProbabilityInfo *MBPI = nullptr;
|
129 | 130 | AliasAnalysis *AA = nullptr;
|
130 |
| - RegisterClassInfo RegClassInfo; |
| 131 | + RegisterClassInfo *RegClassInfo = nullptr; |
131 | 132 |
|
132 | 133 | // Remember which edges have been considered for breaking.
|
133 | 134 | SmallSet<std::pair<MachineBasicBlock *, MachineBasicBlock *>, 8>
|
@@ -200,6 +201,7 @@ class MachineSinking : public MachineFunctionPass {
|
200 | 201 | AU.addRequired<MachineBranchProbabilityInfoWrapperPass>();
|
201 | 202 | AU.addPreserved<MachineCycleInfoWrapperPass>();
|
202 | 203 | AU.addPreserved<MachineLoopInfoWrapperPass>();
|
| 204 | + AU.addRequired<MachineRegisterClassInfoWrapperPass>(); |
203 | 205 | AU.addRequired<ProfileSummaryInfoWrapperPass>();
|
204 | 206 | if (UseBlockFreqInfo)
|
205 | 207 | AU.addRequired<MachineBlockFrequencyInfoWrapperPass>();
|
@@ -290,6 +292,7 @@ INITIALIZE_PASS_DEPENDENCY(ProfileSummaryInfoWrapperPass)
|
290 | 292 | INITIALIZE_PASS_DEPENDENCY(MachineBranchProbabilityInfoWrapperPass)
|
291 | 293 | INITIALIZE_PASS_DEPENDENCY(MachineDominatorTreeWrapperPass)
|
292 | 294 | INITIALIZE_PASS_DEPENDENCY(MachineCycleInfoWrapperPass)
|
| 295 | +INITIALIZE_PASS_DEPENDENCY(MachineRegisterClassInfoWrapperPass) |
293 | 296 | INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass)
|
294 | 297 | INITIALIZE_PASS_END(MachineSinking, DEBUG_TYPE, "Machine code sinking", false,
|
295 | 298 | false)
|
@@ -731,7 +734,7 @@ bool MachineSinking::runOnMachineFunction(MachineFunction &MF) {
|
731 | 734 | : nullptr;
|
732 | 735 | MBPI = &getAnalysis<MachineBranchProbabilityInfoWrapperPass>().getMBPI();
|
733 | 736 | AA = &getAnalysis<AAResultsWrapperPass>().getAAResults();
|
734 |
| - RegClassInfo.runOnMachineFunction(MF); |
| 737 | + RegClassInfo = &getAnalysis<MachineRegisterClassInfoWrapperPass>().getRCI(); |
735 | 738 | TargetPassConfig *PassConfig = &getAnalysis<TargetPassConfig>();
|
736 | 739 | EnableSinkAndFold = PassConfig->getEnableSinkAndFold();
|
737 | 740 |
|
@@ -1068,7 +1071,7 @@ MachineSinking::getBBRegisterPressure(const MachineBasicBlock &MBB) {
|
1068 | 1071 | RegPressureTracker RPTracker(Pressure);
|
1069 | 1072 |
|
1070 | 1073 | // Initialize the register pressure tracker.
|
1071 |
| - RPTracker.init(MBB.getParent(), &RegClassInfo, nullptr, &MBB, MBB.end(), |
| 1074 | + RPTracker.init(MBB.getParent(), RegClassInfo, nullptr, &MBB, MBB.end(), |
1072 | 1075 | /*TrackLaneMasks*/ false, /*TrackUntiedDefs=*/true);
|
1073 | 1076 |
|
1074 | 1077 | for (MachineBasicBlock::const_iterator MII = MBB.instr_end(),
|
@@ -1098,7 +1101,7 @@ bool MachineSinking::registerPressureSetExceedsLimit(
|
1098 | 1101 | std::vector<unsigned> BBRegisterPressure = getBBRegisterPressure(MBB);
|
1099 | 1102 | for (; *PS != -1; PS++)
|
1100 | 1103 | if (Weight + BBRegisterPressure[*PS] >=
|
1101 |
| - RegClassInfo.getRegPressureSetLimit(*PS)) |
| 1104 | + RegClassInfo->getRegPressureSetLimit(*PS)) |
1102 | 1105 | return true;
|
1103 | 1106 | return false;
|
1104 | 1107 | }
|
|
0 commit comments