Skip to content

Commit 3cb967a

Browse files
authored
[NFCI][PromoteMem2Reg] Don't handle the first successor out of order (#142464)
Just for consistency, to avoid confusing conditions. `reverse` helps to avoid tests updates as nothing is changing for for successors count <=2. For #142461
1 parent cbd2768 commit 3cb967a

File tree

3 files changed

+13
-17
lines changed

3 files changed

+13
-17
lines changed

llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1215,24 +1215,20 @@ void PromoteMem2Reg::RenamePass(BasicBlock *BB, BasicBlock *Pred,
12151215
}
12161216

12171217
// 'Recurse' to our successors.
1218-
succ_iterator I = succ_begin(BB), E = succ_end(BB);
1219-
if (I == E)
1220-
return;
12211218

12221219
// Keep track of the successors so we don't visit the same successor twice
12231220
SmallPtrSet<BasicBlock *, 8> VisitedSuccs;
12241221

1225-
// Handle the first successor after the rest, to mimic legacy behaviour.
1226-
// FIXME: Handle them in regular order.
1227-
VisitedSuccs.insert(*I);
1228-
++I;
1229-
1230-
for (; I != E; ++I)
1231-
if (VisitedSuccs.insert(*I).second)
1232-
Worklist.emplace_back(*I, BB, IncomingVals, IncomingLocs);
1233-
1234-
Worklist.emplace_back(*succ_begin(BB), BB, std::move(IncomingVals),
1235-
std::move(IncomingLocs));
1222+
for (BasicBlock *S : reverse(successors(BB)))
1223+
if (VisitedSuccs.insert(S).second) {
1224+
if (VisitedSuccs.size() > 1) {
1225+
// Let the first successor own allocated arrays, other will make a copy.
1226+
IncomingVals = Worklist.back().Values;
1227+
IncomingLocs = Worklist.back().Locations;
1228+
}
1229+
Worklist.emplace_back(S, BB, std::move(IncomingVals),
1230+
std::move(IncomingLocs));
1231+
}
12361232
}
12371233

12381234
void llvm::PromoteMemToReg(ArrayRef<AllocaInst *> Allocas, DominatorTree &DT,

llvm/test/Transforms/InstCombine/2009-02-20-InstCombine-SROA.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ define ptr @_Z3fooRSt6vectorIiSaIiEE(ptr %X) {
215215
; IC_SROA-NEXT: [[TMP27:%.*]] = getelementptr i8, ptr [[__FIRST_ADDR_I_I_SROA_0_0]], i32 4
216216
; IC_SROA-NEXT: br label [[BB18_I_I]]
217217
; IC_SROA: bb18.i.i:
218-
; IC_SROA-NEXT: [[__FIRST_ADDR_I_I_SROA_0_1:%.*]] = phi ptr [ [[TMP27]], [[BB17_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0_0]], [[BB13_I_I]] ]
218+
; IC_SROA-NEXT: [[__FIRST_ADDR_I_I_SROA_0_1:%.*]] = phi ptr [ [[__FIRST_ADDR_I_I_SROA_0_0]], [[BB13_I_I]] ], [ [[TMP27]], [[BB17_I_I]] ]
219219
; IC_SROA-NEXT: [[TMP28:%.*]] = load i32, ptr [[__FIRST_ADDR_I_I_SROA_0_1]], align 4
220220
; IC_SROA-NEXT: [[TMP29:%.*]] = icmp eq i32 [[TMP28]], 42
221221
; IC_SROA-NEXT: br i1 [[TMP29]], label [[BB20_I_I:%.*]], label [[BB21_I_I:%.*]]
@@ -225,7 +225,7 @@ define ptr @_Z3fooRSt6vectorIiSaIiEE(ptr %X) {
225225
; IC_SROA-NEXT: [[TMP30:%.*]] = getelementptr i8, ptr [[__FIRST_ADDR_I_I_SROA_0_1]], i32 4
226226
; IC_SROA-NEXT: br label [[BB22_I_I]]
227227
; IC_SROA: bb22.i.i:
228-
; IC_SROA-NEXT: [[__FIRST_ADDR_I_I_SROA_0_2:%.*]] = phi ptr [ [[TMP30]], [[BB21_I_I]] ], [ [[__FIRST_ADDR_I_I_SROA_0_0]], [[BB13_I_I]] ]
228+
; IC_SROA-NEXT: [[__FIRST_ADDR_I_I_SROA_0_2:%.*]] = phi ptr [ [[__FIRST_ADDR_I_I_SROA_0_0]], [[BB13_I_I]] ], [ [[TMP30]], [[BB21_I_I]] ]
229229
; IC_SROA-NEXT: [[TMP31:%.*]] = load i32, ptr [[__FIRST_ADDR_I_I_SROA_0_2]], align 4
230230
; IC_SROA-NEXT: [[TMP32:%.*]] = icmp eq i32 [[TMP31]], 42
231231
; IC_SROA-NEXT: br i1 [[TMP32]], label [[BB24_I_I:%.*]], label [[BB25_I_I:%.*]]

llvm/test/Transforms/SimplifyCFG/Hexagon/switch-to-lookup-table.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ define i32 @foo(i32 %x) #0 section ".tcm_text" {
4343
; DISABLE: sw.default:
4444
; DISABLE-NEXT: br label [[RETURN]]
4545
; DISABLE: return:
46-
; DISABLE-NEXT: [[RETVAL_0:%.*]] = phi i32 [ 19, [[SW_DEFAULT]] ], [ 33, [[SW_BB5]] ], [ 12, [[SW_BB4]] ], [ 22, [[SW_BB3]] ], [ 14, [[SW_BB2]] ], [ 20, [[SW_BB1]] ], [ 9, [[ENTRY:%.*]] ]
46+
; DISABLE-NEXT: [[RETVAL_0:%.*]] = phi i32 [ 19, [[SW_DEFAULT]] ], [ 20, [[SW_BB1]] ], [ 14, [[SW_BB2]] ], [ 22, [[SW_BB3]] ], [ 12, [[SW_BB4]] ], [ 33, [[SW_BB5]] ], [ 9, [[ENTRY:%.*]] ]
4747
; DISABLE-NEXT: ret i32 [[RETVAL_0]]
4848
;
4949
entry:

0 commit comments

Comments
 (0)