@@ -218,8 +218,8 @@ class SIWholeQuadMode : public MachineFunctionPass {
218218 bool IsWQM);
219219 MachineInstr *lowerKillF32 (MachineBasicBlock &MBB, MachineInstr &MI);
220220
221- void lowerBlock (MachineBasicBlock &MBB);
222- void processBlock (MachineBasicBlock &MBB, bool IsEntry);
221+ void lowerBlock (MachineBasicBlock &MBB, BlockInfo &BI );
222+ void processBlock (MachineBasicBlock &MBB, BlockInfo &BI, bool IsEntry);
223223
224224 bool lowerLiveMaskQueries ();
225225 bool lowerCopyInstrs ();
@@ -1035,12 +1035,7 @@ MachineInstr *SIWholeQuadMode::lowerKillI1(MachineBasicBlock &MBB,
10351035// Replace (or supplement) instructions accessing live mask.
10361036// This can only happen once all the live mask registers have been created
10371037// and the execute state (WQM/StrictWWM/Exact) of instructions is known.
1038- void SIWholeQuadMode::lowerBlock (MachineBasicBlock &MBB) {
1039- auto *BII = Blocks.find (&MBB);
1040- if (BII == Blocks.end ())
1041- return ;
1042-
1043- const BlockInfo &BI = BII->second ;
1038+ void SIWholeQuadMode::lowerBlock (MachineBasicBlock &MBB, BlockInfo &BI) {
10441039 if (!BI.NeedsLowering )
10451040 return ;
10461041
@@ -1052,8 +1047,9 @@ void SIWholeQuadMode::lowerBlock(MachineBasicBlock &MBB) {
10521047
10531048 for (MachineInstr &MI : llvm::make_early_inc_range (
10541049 llvm::make_range (MBB.getFirstNonPHI (), MBB.end ()))) {
1055- if (StateTransition.count (&MI))
1056- State = StateTransition[&MI];
1050+ auto MIState = StateTransition.find (&MI);
1051+ if (MIState != StateTransition.end ())
1052+ State = MIState->second ;
10571053
10581054 MachineInstr *SplitPoint = nullptr ;
10591055 switch (MI.getOpcode ()) {
@@ -1260,13 +1256,8 @@ void SIWholeQuadMode::fromStrictMode(MachineBasicBlock &MBB,
12601256 StateTransition[MI] = NonStrictState;
12611257}
12621258
1263- void SIWholeQuadMode::processBlock (MachineBasicBlock &MBB, bool IsEntry) {
1264- auto *BII = Blocks.find (&MBB);
1265- if (BII == Blocks.end ())
1266- return ;
1267-
1268- BlockInfo &BI = BII->second ;
1269-
1259+ void SIWholeQuadMode::processBlock (MachineBasicBlock &MBB, BlockInfo &BI,
1260+ bool IsEntry) {
12701261 // This is a non-entry block that is WQM throughout, so no need to do
12711262 // anything.
12721263 if (!IsEntry && BI.Needs == StateWQM && BI.OutNeeds != StateExact) {
@@ -1809,11 +1800,11 @@ bool SIWholeQuadMode::runOnMachineFunction(MachineFunction &MF) {
18091800 if (GlobalFlags & StateWQM)
18101801 Blocks[&Entry].InNeeds |= StateWQM;
18111802 // Wave mode switching requires full lowering pass.
1812- for (auto BII : Blocks)
1813- processBlock (*BII.first , BII.first == &Entry);
1803+ for (auto & BII : Blocks)
1804+ processBlock (*BII.first , BII.second , BII. first == &Entry);
18141805 // Lowering blocks causes block splitting so perform as a second pass.
1815- for (auto BII : Blocks)
1816- lowerBlock (*BII.first );
1806+ for (auto & BII : Blocks)
1807+ lowerBlock (*BII.first , BII. second );
18171808 Changed = true ;
18181809 }
18191810
0 commit comments