Skip to content

Commit 54be7f5

Browse files
rajatdpleath
authored andcommitted
1 parent 0050a98 commit 54be7f5

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

lib/Backend/FlowGraph.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5266,7 +5266,7 @@ BasicBlock::MergePredBlocksValueMaps(GlobOpt* globOpt)
52665266
}
52675267
if(symsRequiringCompensationToMergedValueInfoMap.Count() != 0)
52685268
{
5269-
globOpt->InsertValueCompensation(pred, &symsRequiringCompensationToMergedValueInfoMap);
5269+
globOpt->InsertValueCompensation(pred, this, &symsRequiringCompensationToMergedValueInfoMap);
52705270
}
52715271
}
52725272
} NEXT_PREDECESSOR_EDGE_EDITING;

lib/Backend/GlobOpt.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ GlobOpt::OptBlock(BasicBlock *block)
601601

602602
if (block->loop->symsRequiringCompensationToMergedValueInfoMap)
603603
{
604-
InsertValueCompensation(block, block->loop->symsRequiringCompensationToMergedValueInfoMap);
604+
InsertValueCompensation(block, succ, block->loop->symsRequiringCompensationToMergedValueInfoMap);
605605
}
606606

607607
// Now that we're done with the liveFields within this loop, trim the set to those syms
@@ -1156,9 +1156,12 @@ void GlobOpt::FieldPRE(Loop *loop)
11561156

11571157
void GlobOpt::InsertValueCompensation(
11581158
BasicBlock *const predecessor,
1159+
BasicBlock *const successor,
11591160
const SymToValueInfoMap *symsRequiringCompensationToMergedValueInfoMap)
11601161
{
11611162
Assert(predecessor);
1163+
Assert(successor);
1164+
AssertOrFailFast(predecessor != successor);
11621165
Assert(symsRequiringCompensationToMergedValueInfoMap->Count() != 0);
11631166

11641167
IR::Instr *insertBeforeInstr = predecessor->GetLastInstr();
@@ -1182,7 +1185,7 @@ void GlobOpt::InsertValueCompensation(
11821185
}
11831186

11841187
GlobOptBlockData &predecessorBlockData = predecessor->globOptData;
1185-
GlobOptBlockData &successorBlockData = *CurrentBlockData();
1188+
GlobOptBlockData &successorBlockData = successor->globOptData;
11861189
struct DelayChangeValueInfo
11871190
{
11881191
Value* predecessorValue;

lib/Backend/GlobOpt.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ class GlobOpt
737737
void PreLowerCanonicalize(IR::Instr *instr, Value **pSrc1Val, Value **pSrc2Val);
738738
void ProcessKills(IR::Instr *instr);
739739
void InsertCloneStrs(BasicBlock *toBlock, GlobOptBlockData *toData, GlobOptBlockData *fromData);
740-
void InsertValueCompensation(BasicBlock *const predecessor, const SymToValueInfoMap *symsRequiringCompensationToMergedValueInfoMap);
740+
void InsertValueCompensation(BasicBlock *const predecessor, BasicBlock *const successor, const SymToValueInfoMap *symsRequiringCompensationToMergedValueInfoMap);
741741
IR::Instr * ToVarUses(IR::Instr *instr, IR::Opnd *opnd, bool isDst, Value *val);
742742
void ToVar(BVSparse<JitArenaAllocator> *bv, BasicBlock *block);
743743
IR::Instr * ToVar(IR::Instr *instr, IR::RegOpnd *regOpnd, BasicBlock *block, Value *val, bool needsUpdate);

0 commit comments

Comments
 (0)