[llvm] [PassBuilder] Run trivial loop unswitching after late function-simpli… (PR #215899)

Abhay Kanhere via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 8 13:54:30 PDT 2026


https://github.com/AbhayKanhere updated https://github.com/llvm/llvm-project/pull/215899

>From f97cb923f111fb9a01c0ed8d3cbbe8abd29d6d6f Mon Sep 17 00:00:00 2001
From: Abhay Kanhere <a_kanhere at apple.com>
Date: Tue, 11 Aug 2026 16:05:54 -0700
Subject: [PATCH 1/3] [PassBuilder] Run trivial loop unswitching after late
 function-simplification LICM

IndVarSimplify exit predication can leave a loop-invariant exit branch inside a
loop (e.g. a guard-dead trap check). A later LICM hoists the invariant condition
to the preheader, but nothing removes the branch, so it stays in the loop.
---
 llvm/lib/Passes/PassBuilderPipelines.cpp      | 14 ++-
 llvm/test/Other/new-pm-defaults.ll            |  1 +
 .../Other/new-pm-thinlto-postlink-defaults.ll |  1 +
 .../new-pm-thinlto-postlink-pgo-defaults.ll   |  1 +
 ...-pm-thinlto-postlink-samplepgo-defaults.ll |  1 +
 .../Other/new-pm-thinlto-prelink-defaults.ll  |  1 +
 .../new-pm-thinlto-prelink-pgo-defaults.ll    |  1 +
 ...w-pm-thinlto-prelink-samplepgo-defaults.ll |  1 +
 .../hoist-loop-invariant-guarded-trap.ll      | 86 +++++++++++++++++++
 9 files changed, 103 insertions(+), 4 deletions(-)
 create mode 100644 llvm/test/Transforms/PhaseOrdering/hoist-loop-invariant-guarded-trap.ll

diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index b8c5b1eab2f97..1e7366c32d16f 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -812,10 +812,16 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
   FPM.addPass(DSEPass());
   FPM.addPass(MoveAutoInitPass());
 
-  FPM.addPass(createFunctionToLoopPassAdaptor(
-      LICMPass(PTO.LicmMssaOptCap, PTO.LicmMssaNoAccForPromotionCap,
-               /*AllowSpeculation=*/true),
-      /*UseMemorySSA=*/true));
+  {
+    LoopPassManager LPM;
+    LPM.addPass(LICMPass(PTO.LicmMssaOptCap, PTO.LicmMssaNoAccForPromotionCap,
+                         /*AllowSpeculation=*/true));
+    // LICM can hoist a loop-invariant exit condition into the preheader;
+    // trivial unswitching then hoists the invariant exit branch out of the loop.
+    LPM.addPass(SimpleLoopUnswitchPass(/*NonTrivial=*/false, /*Trivial=*/true));
+    FPM.addPass(
+        createFunctionToLoopPassAdaptor(std::move(LPM), /*UseMemorySSA=*/true));
+  }
 
   FPM.addPass(CoroElidePass());
 
diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll
index 6b2edf339dfdf..ed1d1ba9b1d1f 100644
--- a/llvm/test/Other/new-pm-defaults.ll
+++ b/llvm/test/Other/new-pm-defaults.ll
@@ -205,6 +205,7 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
+; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-EP-SCALAR-LATE-NEXT: Running pass: NoOpFunctionPass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
index 0361db887cb61..dfc4a2e036abd 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
@@ -142,6 +142,7 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass on loop
+; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass on loop
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
index 667033cfce2b4..a52b79f31a7c4 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
@@ -127,6 +127,7 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
+; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
index 60971a852b413..d52ec471f2c04 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
@@ -134,6 +134,7 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
+; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
index 30f49dffaeeac..26c3be3574cc8 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
@@ -168,6 +168,7 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass on loop
+; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass on loop
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
index 742ecb36c6f05..a1b1247b7d1d8 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
@@ -174,6 +174,7 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
+; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
index 2a91901450917..a7278cc83d9cc 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
@@ -138,6 +138,7 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
+; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Transforms/PhaseOrdering/hoist-loop-invariant-guarded-trap.ll b/llvm/test/Transforms/PhaseOrdering/hoist-loop-invariant-guarded-trap.ll
new file mode 100644
index 0000000000000..62c3c66f91b30
--- /dev/null
+++ b/llvm/test/Transforms/PhaseOrdering/hoist-loop-invariant-guarded-trap.ll
@@ -0,0 +1,86 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -passes='default<O2>' -S < %s | FileCheck %s
+
+; A loop-invariant exit branch, made invariant by IndVarSimplify exit
+; predication, is hoisted out of the surviving outer loop rather than
+; re-evaluated every iteration.
+
+define void @nested_guarded_trap(ptr %p, i64 %bp0, i64 %n, i64 %umax, i64 %rows) {
+; CHECK-LABEL: define void @nested_guarded_trap(
+; CHECK-SAME: ptr nofree writeonly captures(none) [[P:%.*]], i64 [[BP0:%.*]], i64 [[N:%.*]], i64 [[UMAX:%.*]], i64 [[ROWS:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT:  [[ENTRY:.*:]]
+; CHECK-NEXT:    [[SUM:%.*]] = add i64 [[N]], [[BP0]]
+; CHECK-NEXT:    [[BAD:%.*]] = icmp ugt i64 [[SUM]], [[UMAX]]
+; CHECK-NEXT:    br i1 [[BAD]], label %[[GUARD_TRAP:.*]], label %[[OUTER_PREHEADER:.*]]
+; CHECK:       [[OUTER_PREHEADER]]:
+; CHECK-NEXT:    [[N0:%.*]] = icmp eq i64 [[N]], 0
+; CHECK-NEXT:    br i1 [[N0]], label %[[EXIT_SPLIT:.*]], label %[[OUTER_PREHEADER1:.*]]
+; CHECK:       [[OUTER_PREHEADER1]]:
+; CHECK-NEXT:    [[TMP0:%.*]] = sub i64 [[UMAX]], [[BP0]]
+; CHECK-NEXT:    [[TMP1:%.*]] = add i64 [[N]], -1
+; CHECK-NEXT:    [[DOTNOT:%.*]] = icmp ugt i64 [[TMP0]], [[TMP1]]
+; CHECK-NEXT:    [[TMP2:%.*]] = getelementptr i8, ptr [[P]], i64 [[BP0]]
+; CHECK-NEXT:    br i1 [[DOTNOT]], label %[[OUTER:.*]], label %[[OOB_TRAP:.*]]
+; CHECK:       [[OUTER]]:
+; CHECK-NEXT:    [[R:%.*]] = phi i64 [ [[R_NEXT:%.*]], %[[OUTER]] ], [ 0, %[[OUTER_PREHEADER1]] ]
+; CHECK-NEXT:    [[V:%.*]] = trunc i64 [[R]] to i8
+; CHECK-NEXT:    [[TMP3:%.*]] = mul i64 [[N]], [[R]]
+; CHECK-NEXT:    [[SCEVGEP:%.*]] = getelementptr i8, ptr [[TMP2]], i64 [[TMP3]]
+; CHECK-NEXT:    tail call void @llvm.memset.p0.i64(ptr align 1 [[SCEVGEP]], i8 [[V]], i64 [[N]], i1 false)
+; CHECK-NEXT:    [[R_NEXT]] = add i64 [[R]], 1
+; CHECK-NEXT:    [[ODONE:%.*]] = icmp eq i64 [[R_NEXT]], [[ROWS]]
+; CHECK-NEXT:    br i1 [[ODONE]], label %[[EXIT_SPLIT]], label %[[OUTER]]
+; CHECK:       [[GUARD_TRAP]]:
+; CHECK-NEXT:    tail call void @llvm.trap()
+; CHECK-NEXT:    unreachable
+; CHECK:       [[OOB_TRAP]]:
+; CHECK-NEXT:    tail call void @llvm.trap()
+; CHECK-NEXT:    unreachable
+; CHECK:       [[EXIT_SPLIT]]:
+; CHECK-NEXT:    ret void
+;
+entry:
+  %sum = add i64 %bp0, %n
+  %bad = icmp ugt i64 %sum, %umax
+  br i1 %bad, label %guard.trap, label %outer          ; dominating guard
+
+outer:
+  %r = phi i64 [ 0, %entry ], [ %r.next, %inner.done ]
+  %n0 = icmp eq i64 %n, 0
+  br i1 %n0, label %inner.done, label %inner
+
+inner:
+  %bp = phi i64 [ %bp0, %outer ], [ %bp.next, %cont ]
+  %cnt = phi i64 [ %n, %outer ], [ %cnt.next, %cont ]
+  %oob = icmp eq i64 %bp, %umax
+  br i1 %oob, label %oob.trap, label %cont             ; guard-dead per-element check
+
+cont:
+  %roff = mul i64 %r, %n
+  %aidx = add i64 %roff, %bp
+  %gep = getelementptr i8, ptr %p, i64 %aidx
+  %v = trunc i64 %r to i8
+  store i8 %v, ptr %gep                                 ; distinct window per row
+  %bp.next = add i64 %bp, 1
+  %cnt.next = add i64 %cnt, -1
+  %idone = icmp eq i64 %cnt.next, 0
+  br i1 %idone, label %inner.done, label %inner
+
+inner.done:
+  %r.next = add i64 %r, 1
+  %odone = icmp eq i64 %r.next, %rows
+  br i1 %odone, label %exit, label %outer
+
+guard.trap:
+  tail call void @llvm.trap()
+  unreachable
+
+oob.trap:
+  tail call void @llvm.trap()
+  unreachable
+
+exit:
+  ret void
+}
+
+declare void @llvm.trap()

>From 7df29aed5fe64dd3396538b77e0fe41c75c4994a Mon Sep 17 00:00:00 2001
From: Abhay Kanhere <a_kanhere at apple.com>
Date: Wed, 12 Aug 2026 14:32:04 -0700
Subject: [PATCH 2/3] Apply clang-format

---
 llvm/lib/Passes/PassBuilderPipelines.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index 1e7366c32d16f..edcb119c669b2 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -817,7 +817,8 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
     LPM.addPass(LICMPass(PTO.LicmMssaOptCap, PTO.LicmMssaNoAccForPromotionCap,
                          /*AllowSpeculation=*/true));
     // LICM can hoist a loop-invariant exit condition into the preheader;
-    // trivial unswitching then hoists the invariant exit branch out of the loop.
+    // trivial unswitching then hoists the invariant exit branch out of the
+    // loop.
     LPM.addPass(SimpleLoopUnswitchPass(/*NonTrivial=*/false, /*Trivial=*/true));
     FPM.addPass(
         createFunctionToLoopPassAdaptor(std::move(LPM), /*UseMemorySSA=*/true));

>From 7ed8350c15a4a09fe057469604bc2b69c2cc82d8 Mon Sep 17 00:00:00 2001
From: Abhay Kanhere <a_kanhere at apple.com>
Date: Tue, 8 Sep 2026 13:45:45 -0700
Subject: [PATCH 3/3] [PassBuilder] Gate post-LICM trivial unswitch on
 ShouldRunExtraSimpleLoopUnswitch

Only run the extra trivial SimpleLoopUnswitch after late-simplification LICM
when LICM changed the loop. LICMPass now requests and preserves the
ShouldRunExtraSimpleLoopUnswitch marker on change, and the pipeline wraps the
unswitch in ExtraLoopPassManager<ShouldRunExtraSimpleLoopUnswitch>.
---
 llvm/lib/Passes/PassBuilderPipelines.cpp                   | 7 +++++--
 llvm/lib/Transforms/Scalar/LICM.cpp                        | 6 ++++++
 llvm/test/Other/new-pm-defaults.ll                         | 1 -
 llvm/test/Other/new-pm-thinlto-postlink-defaults.ll        | 1 -
 llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll    | 1 -
 .../Other/new-pm-thinlto-postlink-samplepgo-defaults.ll    | 1 -
 llvm/test/Other/new-pm-thinlto-prelink-defaults.ll         | 1 -
 llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll     | 1 -
 .../Other/new-pm-thinlto-prelink-samplepgo-defaults.ll     | 1 -
 9 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp
index edcb119c669b2..73282dd008b61 100644
--- a/llvm/lib/Passes/PassBuilderPipelines.cpp
+++ b/llvm/lib/Passes/PassBuilderPipelines.cpp
@@ -818,8 +818,11 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,
                          /*AllowSpeculation=*/true));
     // LICM can hoist a loop-invariant exit condition into the preheader;
     // trivial unswitching then hoists the invariant exit branch out of the
-    // loop.
-    LPM.addPass(SimpleLoopUnswitchPass(/*NonTrivial=*/false, /*Trivial=*/true));
+    // loop. Only run it when LICM changed the loop.
+    ExtraLoopPassManager<ShouldRunExtraSimpleLoopUnswitch> ExtraPasses;
+    ExtraPasses.addPass(
+        SimpleLoopUnswitchPass(/*NonTrivial=*/false, /*Trivial=*/true));
+    LPM.addPass(std::move(ExtraPasses));
     FPM.addPass(
         createFunctionToLoopPassAdaptor(std::move(LPM), /*UseMemorySSA=*/true));
   }
diff --git a/llvm/lib/Transforms/Scalar/LICM.cpp b/llvm/lib/Transforms/Scalar/LICM.cpp
index fed0b96ddc089..9c3e1c66be0f0 100644
--- a/llvm/lib/Transforms/Scalar/LICM.cpp
+++ b/llvm/lib/Transforms/Scalar/LICM.cpp
@@ -78,6 +78,7 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Transforms/Scalar.h"
+#include "llvm/Transforms/Scalar/SimpleLoopUnswitch.h"
 #include "llvm/Transforms/Utils/AssumeBundleBuilder.h"
 #include "llvm/Transforms/Utils/BasicBlockUtils.h"
 #include "llvm/Transforms/Utils/Local.h"
@@ -325,6 +326,11 @@ PreservedAnalyses LICMPass::run(Loop &L, LoopAnalysisManager &AM,
   auto PA = getLoopPassPreservedAnalyses();
   PA.preserve<MemorySSAAnalysis>();
 
+  // Hoisting an invariant exit condition can leave a now loop-invariant exit
+  // branch in the loop; request extra trivial unswitching to remove it.
+  AM.getResult<ShouldRunExtraSimpleLoopUnswitch>(L, AR);
+  PA.preserve<ShouldRunExtraSimpleLoopUnswitch>();
+
   return PA;
 }
 
diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll
index ed1d1ba9b1d1f..6b2edf339dfdf 100644
--- a/llvm/test/Other/new-pm-defaults.ll
+++ b/llvm/test/Other/new-pm-defaults.ll
@@ -205,7 +205,6 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
-; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-EP-SCALAR-LATE-NEXT: Running pass: NoOpFunctionPass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
index dfc4a2e036abd..0361db887cb61 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
@@ -142,7 +142,6 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass on loop
-; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass on loop
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
index a52b79f31a7c4..667033cfce2b4 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-pgo-defaults.ll
@@ -127,7 +127,6 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
-; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
index d52ec471f2c04..60971a852b413 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-samplepgo-defaults.ll
@@ -134,7 +134,6 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
-; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
index 26c3be3574cc8..30f49dffaeeac 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-defaults.ll
@@ -168,7 +168,6 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass on loop
-; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass on loop
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
index a1b1247b7d1d8..742ecb36c6f05 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-pgo-defaults.ll
@@ -174,7 +174,6 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
-; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass
diff --git a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
index a7278cc83d9cc..2a91901450917 100644
--- a/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-prelink-samplepgo-defaults.ll
@@ -138,7 +138,6 @@
 ; CHECK-O23-NEXT: Running pass: LoopSimplifyPass
 ; CHECK-O23-NEXT: Running pass: LCSSAPass
 ; CHECK-O23-NEXT: Running pass: LICMPass
-; CHECK-O23-NEXT: Running pass: SimpleLoopUnswitchPass
 ; CHECK-O23-NEXT: Running pass: CoroElidePass
 ; CHECK-O-NEXT: Running pass: SimplifyCFGPass
 ; CHECK-O-NEXT: Running pass: InstCombinePass



More information about the llvm-commits mailing list