Skip to content

Commit 2faaa34

Browse files
committed
[loop-arc] Small refactoring in preparation for changing ARCSequenceOpts to use a loop visitor.
1 parent 3a34b30 commit 2faaa34

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

lib/SILPasses/ARC/ARCSequenceOpts.cpp

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -232,31 +232,37 @@ class ARCSequenceOpts : public SILFunctionTransform {
232232
if (!getOptions().EnableARCOptimizations)
233233
return;
234234

235+
if (!EnableLoopARC) {
236+
auto *AA = getAnalysis<AliasAnalysis>();
237+
auto *POTA = getAnalysis<PostOrderAnalysis>();
238+
auto *RCFI = getAnalysis<RCIdentityAnalysis>()->get(F);
239+
240+
if (processFunction(*F, false, AA, POTA, nullptr, nullptr, RCFI)) {
241+
processFunction(*F, true, AA, POTA, nullptr, nullptr, RCFI);
242+
invalidateAnalysis(SILAnalysis::InvalidationKind::CallsAndInstructions);
243+
}
244+
return;
245+
}
246+
235247
auto *LA = getAnalysis<SILLoopAnalysis>();
236248
auto *LI = LA->get(F);
249+
auto *DA = getAnalysis<DominanceAnalysis>();
250+
auto *DI = DA->get(F);
237251

238252
// Canonicalize the loops, invalidating if we need to.
239-
if (EnableLoopARC) {
240-
auto *DA = getAnalysis<DominanceAnalysis>();
241-
auto *DI = DA->get(F);
242-
243-
if (canonicalizeAllLoops(DI, LI)) {
244-
// We preserve loop info and the dominator tree.
245-
DA->lockInvalidation();
246-
LA->lockInvalidation();
247-
PM->invalidateAnalysis(F, SILAnalysis::InvalidationKind::FunctionBody);
248-
DA->unlockInvalidation();
249-
LA->unlockInvalidation();
250-
}
253+
if (canonicalizeAllLoops(DI, LI)) {
254+
// We preserve loop info and the dominator tree.
255+
DA->lockInvalidation();
256+
LA->lockInvalidation();
257+
PM->invalidateAnalysis(F, SILAnalysis::InvalidationKind::FunctionBody);
258+
DA->unlockInvalidation();
259+
LA->unlockInvalidation();
251260
}
252261

253262
auto *AA = getAnalysis<AliasAnalysis>();
254263
auto *POTA = getAnalysis<PostOrderAnalysis>();
255264
auto *RCFI = getAnalysis<RCIdentityAnalysis>()->get(F);
256-
LoopRegionFunctionInfo *LRFI = nullptr;
257-
258-
if (EnableLoopARC)
259-
LRFI = getAnalysis<LoopRegionAnalysis>()->get(F);
265+
auto *LRFI = getAnalysis<LoopRegionAnalysis>()->get(F);
260266

261267
if (processFunction(*F, false, AA, POTA, LRFI, LI, RCFI)) {
262268
processFunction(*F, true, AA, POTA, LRFI, LI, RCFI);

0 commit comments

Comments
 (0)