@@ -232,31 +232,37 @@ class ARCSequenceOpts : public SILFunctionTransform {
232
232
if (!getOptions ().EnableARCOptimizations )
233
233
return ;
234
234
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
+
235
247
auto *LA = getAnalysis<SILLoopAnalysis>();
236
248
auto *LI = LA->get (F);
249
+ auto *DA = getAnalysis<DominanceAnalysis>();
250
+ auto *DI = DA->get (F);
237
251
238
252
// 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 ();
251
260
}
252
261
253
262
auto *AA = getAnalysis<AliasAnalysis>();
254
263
auto *POTA = getAnalysis<PostOrderAnalysis>();
255
264
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);
260
266
261
267
if (processFunction (*F, false , AA, POTA, LRFI, LI, RCFI)) {
262
268
processFunction (*F, true , AA, POTA, LRFI, LI, RCFI);
0 commit comments