[llvm] [LoopVectorize] Compute BlockFrequencyInfo eagerly to fix assertion failure (PR #215237)

Karthika Devi C via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 13 04:33:02 PDT 2026


https://github.com/kartcq updated https://github.com/llvm/llvm-project/pull/215237

>From 1435a866d11762526ba9696e1bae87fcf14986a0 Mon Sep 17 00:00:00 2001
From: Karthika Devi C <kartc at qti.qualcomm.com>
Date: Mon, 10 Aug 2026 03:20:50 -0700
Subject: [PATCH 1/6] [LoopVectorize] Compute BlockFrequencyInfo eagerly to fix
 assertion failure

After a6af12620778, LoopVectorizePass crashes when processing
functions with multiple loops. The lazy BFI lambda requests
BlockFrequencyAnalysis after earlier loops have been vectorized,
at which point the cached CycleInfo holds stale pointers to
blocks that no longer exist in the function.

Compute BFI eagerly at the top of run(), before runImpl()
mutates the function, so that CycleInfo is read while the CFG
is still consistent.

Fixes #215236
---
 llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index 3c65eda187a6e..bc313849b7b82 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -8478,8 +8478,14 @@ PreservedAnalyses LoopVectorizePass::run(Function &F,
 
   auto &MAMProxy = AM.getResult<ModuleAnalysisManagerFunctionProxy>(F);
   PSI = MAMProxy.getCachedResult<ProfileSummaryAnalysis>(*F.getParent());
-  GetBFI = [&AM, &F]() -> BlockFrequencyInfo & {
-    return AM.getResult<BlockFrequencyAnalysis>(F);
+  // Compute BFI eagerly rather than lazily. LoopVectorize may modify the
+  // function (vectorizing earlier loops) before requesting BFI for later loops.
+  // If BFI is computed lazily after such modifications, its dependency
+  // CycleAnalysis may be stale (holding pointers to deleted blocks), causing
+  // crashes.
+  BlockFrequencyInfo &BFIRef = AM.getResult<BlockFrequencyAnalysis>(F);
+  GetBFI = [&BFIRef]() -> BlockFrequencyInfo & {
+    return BFIRef;
   };
   LoopVectorizeResult Result = runImpl(F);
   if (!Result.MadeAnyChange)

>From ff5a6dfa183d3a593fe4b2bd939b1073a14ce54a Mon Sep 17 00:00:00 2001
From: Karthika Devi C <kartc at qti.qualcomm.com>
Date: Mon, 10 Aug 2026 04:48:39 -0700
Subject: [PATCH 2/6] NFC: clang-format LoopVectorize.cpp

---
 llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index bc313849b7b82..1333724b755a6 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -8484,9 +8484,7 @@ PreservedAnalyses LoopVectorizePass::run(Function &F,
   // CycleAnalysis may be stale (holding pointers to deleted blocks), causing
   // crashes.
   BlockFrequencyInfo &BFIRef = AM.getResult<BlockFrequencyAnalysis>(F);
-  GetBFI = [&BFIRef]() -> BlockFrequencyInfo & {
-    return BFIRef;
-  };
+  GetBFI = [&BFIRef]() -> BlockFrequencyInfo & { return BFIRef; };
   LoopVectorizeResult Result = runImpl(F);
   if (!Result.MadeAnyChange)
     return PreservedAnalyses::all();

>From 0245aa32550651c677fa4c6ad6a95349cb2a18d0 Mon Sep 17 00:00:00 2001
From: Karthika Devi C <kartc at qti.qualcomm.com>
Date: Mon, 10 Aug 2026 05:22:32 -0700
Subject: [PATCH 3/6] Add regression test for BFI crash

---
 .../LoopVectorize/bfi-stale-crash.ll          | 52 +++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 llvm/test/Transforms/LoopVectorize/bfi-stale-crash.ll

diff --git a/llvm/test/Transforms/LoopVectorize/bfi-stale-crash.ll b/llvm/test/Transforms/LoopVectorize/bfi-stale-crash.ll
new file mode 100644
index 0000000000000..6ff84b3268139
--- /dev/null
+++ b/llvm/test/Transforms/LoopVectorize/bfi-stale-crash.ll
@@ -0,0 +1,52 @@
+; RUN: opt < %s -passes='dse,loop-vectorize' -S | FileCheck %s
+;
+; Verify that LoopVectorize does not crash when BlockFrequencyInfo is computed
+; after an earlier loop has been vectorized and a prior pass (DSE) has cached
+; CycleAnalysis.
+;
+; CHECK-LABEL: @InitializeMasks(
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
+target triple = "aarch64-unknown-linux-gnu"
+
+ at clear_mask = external global [65 x i64]
+
+define void @InitializeMasks(ptr %mask_1) {
+entry:
+  br label %for.body
+
+for.body:
+  %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
+  %arrayidx = getelementptr [8 x i8], ptr @clear_mask, i64 %indvars.iv
+  store i64 1, ptr %arrayidx, align 8
+  %indvars.iv.next = add i64 %indvars.iv, 1
+  %exitcond.not = icmp eq i64 %indvars.iv.next, 64
+  br i1 %exitcond.not, label %for.end, label %for.body
+
+for.end:
+  store i64 0, ptr %mask_1, align 8
+  br label %for.body98
+
+for.body98:
+  %indvars.iv3551 = phi i64 [ 0, %for.end ], [ %indvars.iv.next356, %for.inc140 ]
+  %indvars.iv.next356 = add i64 %indvars.iv3551, 1
+  %cmp107 = icmp ugt i64 %indvars.iv3551, 15
+  br i1 %cmp107, label %if.end, label %if.end.thread
+
+if.end.thread:
+  store i64 0, ptr %mask_1, align 8
+  br label %for.inc140
+
+if.end:
+  br i1 false, label %if.end.if.then128_crit_edge, label %for.inc140
+
+if.end.if.then128_crit_edge:
+  ret void
+
+for.inc140:
+  %exitcond358.not = icmp eq i64 %indvars.iv3551, 56
+  br i1 %exitcond358.not, label %for.cond180.loopexit.7, label %for.body98
+
+for.cond180.loopexit.7:
+  ret void
+}

>From 4cbef7057545587d2fa09653edffa6d0c1806b10 Mon Sep 17 00:00:00 2001
From: Karthika Devi C <kartc at qti.qualcomm.com>
Date: Mon, 10 Aug 2026 07:16:40 -0700
Subject: [PATCH 4/6] Update pass manager tests

---
 llvm/test/Other/new-pm-defaults.ll                  | 3 +++
 llvm/test/Other/new-pm-lto-defaults.ll              | 2 ++
 llvm/test/Other/new-pm-thinlto-postlink-defaults.ll | 3 +++
 3 files changed, 8 insertions(+)

diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll
index 2c1a57e00c9f1..0bbb9ec18bf15 100644
--- a/llvm/test/Other/new-pm-defaults.ll
+++ b/llvm/test/Other/new-pm-defaults.ll
@@ -245,6 +245,9 @@
 ; CHECK-O-NEXT: Running analysis: LoopAccessAnalysis on foo
 ; CHECK-O-NEXT: Running pass: InjectTLIMappings
 ; CHECK-O-NEXT: Running pass: LoopVectorizePass
+; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis
+; CHECK-O-NEXT: Running analysis: BranchProbabilityAnalysis
+; CHECK-O1-NEXT: Running analysis: CycleAnalysis
 ; CHECK-DEFAULT-NEXT: Running pass: DropUnnecessaryAssumesPass
 ; CHECK-O-NEXT: Running pass: InferAlignmentPass
 ; CHECK-O-NEXT: Running pass: LoopLoadEliminationPass
diff --git a/llvm/test/Other/new-pm-lto-defaults.ll b/llvm/test/Other/new-pm-lto-defaults.ll
index 14f189194d0e3..af09eddfa470a 100644
--- a/llvm/test/Other/new-pm-lto-defaults.ll
+++ b/llvm/test/Other/new-pm-lto-defaults.ll
@@ -128,6 +128,8 @@
 ; CHECK-O23-NEXT: Running analysis: LoopAccessAnalysis on foo
 ; CHECK-O23-NEXT: Running pass: LoopVectorizePass on foo
 ; CHECK-O23-NEXT: Running analysis: DemandedBitsAnalysis on foo
+; CHECK-O23-NEXT: Running analysis: BlockFrequencyAnalysis on foo
+; CHECK-O23-NEXT: Running analysis: BranchProbabilityAnalysis on foo
 ; CHECK-O23-NEXT: Running pass: DropUnnecessaryAssumesPass on foo
 ; CHECK-O23-NEXT: Running pass: InferAlignmentPass on foo
 ; CHECK-O23-NEXT: Running pass: LoopUnrollPass on foo
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
index b1fde57902b05..49e6037fa1e79 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
@@ -176,6 +176,9 @@
 ; CHECK-POSTLINK-O-NEXT: Running analysis: LoopAccessAnalysis on foo
 ; CHECK-POSTLINK-O-NEXT: Running pass: InjectTLIMappings
 ; CHECK-POSTLINK-O-NEXT: Running pass: LoopVectorizePass
+; CHECK-POSTLINK-O-NEXT: Running analysis: BlockFrequencyAnalysis
+; CHECK-POSTLINK-O-NEXT: Running analysis: BranchProbabilityAnalysis
+; CHECK-O1-NEXT: Running analysis: CycleAnalysis
 ; CHECK-POSTLINK-O-NEXT: Running pass: DropUnnecessaryAssumesPass
 ; CHECK-POSTLINK-O-NEXT: Running pass: InferAlignmentPass
 ; CHECK-POSTLINK-O-NEXT: Running pass: LoopLoadEliminationPass

>From 7a793d01b4226535362fbe46203d6596c5aaf073 Mon Sep 17 00:00:00 2001
From: Karthika Devi C <kartc at qti.qualcomm.com>
Date: Tue, 11 Aug 2026 00:51:25 -0700
Subject: [PATCH 5/6] Update bfi-stale-crash test as per review comments

---
 .../LoopVectorize/bfi-stale-crash.ll          | 81 +++++++++++++++++--
 1 file changed, 75 insertions(+), 6 deletions(-)

diff --git a/llvm/test/Transforms/LoopVectorize/bfi-stale-crash.ll b/llvm/test/Transforms/LoopVectorize/bfi-stale-crash.ll
index 6ff84b3268139..f370badf773f9 100644
--- a/llvm/test/Transforms/LoopVectorize/bfi-stale-crash.ll
+++ b/llvm/test/Transforms/LoopVectorize/bfi-stale-crash.ll
@@ -1,17 +1,86 @@
-; RUN: opt < %s -passes='dse,loop-vectorize' -S | FileCheck %s
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt < %s -passes='dse,loop-vectorize' -force-vector-width=4 -S | FileCheck %s
 ;
 ; Verify that LoopVectorize does not crash when BlockFrequencyInfo is computed
 ; after an earlier loop has been vectorized and a prior pass (DSE) has cached
 ; CycleAnalysis.
-;
-; CHECK-LABEL: @InitializeMasks(
-
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
-target triple = "aarch64-unknown-linux-gnu"
 
 @clear_mask = external global [65 x i64]
 
 define void @InitializeMasks(ptr %mask_1) {
+; CHECK-LABEL: @InitializeMasks(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    br label [[VECTOR_PH:%.*]]
+; CHECK:       vector.ph:
+; CHECK-NEXT:    br label [[VECTOR_BODY:%.*]]
+; CHECK:       vector.body:
+; CHECK-NEXT:    [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ]
+; CHECK-NEXT:    [[TMP0:%.*]] = getelementptr [8 x i8], ptr @clear_mask, i64 [[INDEX]]
+; CHECK-NEXT:    store <4 x i64> splat (i64 1), ptr [[TMP0]], align 8
+; CHECK-NEXT:    [[INDEX_NEXT]] = add nuw i64 [[INDEX]], 4
+; CHECK-NEXT:    [[TMP1:%.*]] = icmp eq i64 [[INDEX_NEXT]], 64
+; CHECK-NEXT:    br i1 [[TMP1]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
+; CHECK:       middle.block:
+; CHECK-NEXT:    br label [[FOR_END:%.*]]
+; CHECK:       for.end:
+; CHECK-NEXT:    store i64 0, ptr [[MASK_1:%.*]], align 8
+; CHECK-NEXT:    br label [[VECTOR_PH1:%.*]]
+; CHECK:       vector.ph1:
+; CHECK-NEXT:    br label [[VECTOR_BODY2:%.*]]
+; CHECK:       vector.body2:
+; CHECK-NEXT:    [[INDEX3:%.*]] = phi i64 [ 0, [[VECTOR_PH1]] ], [ [[INDEX_NEXT10:%.*]], [[PRED_STORE_CONTINUE9:%.*]] ]
+; CHECK-NEXT:    [[VEC_IND:%.*]] = phi <4 x i64> [ <i64 0, i64 1, i64 2, i64 3>, [[VECTOR_PH1]] ], [ [[VEC_IND_NEXT:%.*]], [[PRED_STORE_CONTINUE9]] ]
+; CHECK-NEXT:    [[TMP2:%.*]] = icmp ule <4 x i64> [[VEC_IND]], splat (i64 15)
+; CHECK-NEXT:    [[TMP3:%.*]] = extractelement <4 x i1> [[TMP2]], i64 0
+; CHECK-NEXT:    br i1 [[TMP3]], label [[PRED_STORE_IF:%.*]], label [[PRED_STORE_CONTINUE:%.*]]
+; CHECK:       pred.store.if:
+; CHECK-NEXT:    store i64 0, ptr [[MASK_1]], align 8
+; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE]]
+; CHECK:       pred.store.continue:
+; CHECK-NEXT:    [[TMP4:%.*]] = extractelement <4 x i1> [[TMP2]], i64 1
+; CHECK-NEXT:    br i1 [[TMP4]], label [[PRED_STORE_IF4:%.*]], label [[PRED_STORE_CONTINUE5:%.*]]
+; CHECK:       pred.store.if4:
+; CHECK-NEXT:    store i64 0, ptr [[MASK_1]], align 8
+; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE5]]
+; CHECK:       pred.store.continue5:
+; CHECK-NEXT:    [[TMP5:%.*]] = extractelement <4 x i1> [[TMP2]], i64 2
+; CHECK-NEXT:    br i1 [[TMP5]], label [[PRED_STORE_IF6:%.*]], label [[PRED_STORE_CONTINUE7:%.*]]
+; CHECK:       pred.store.if6:
+; CHECK-NEXT:    store i64 0, ptr [[MASK_1]], align 8
+; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE7]]
+; CHECK:       pred.store.continue7:
+; CHECK-NEXT:    [[TMP6:%.*]] = extractelement <4 x i1> [[TMP2]], i64 3
+; CHECK-NEXT:    br i1 [[TMP6]], label [[PRED_STORE_IF8:%.*]], label [[PRED_STORE_CONTINUE9]]
+; CHECK:       pred.store.if8:
+; CHECK-NEXT:    store i64 0, ptr [[MASK_1]], align 8
+; CHECK-NEXT:    br label [[PRED_STORE_CONTINUE9]]
+; CHECK:       pred.store.continue9:
+; CHECK-NEXT:    [[INDEX_NEXT10]] = add nuw i64 [[INDEX3]], 4
+; CHECK-NEXT:    [[VEC_IND_NEXT]] = add <4 x i64> [[VEC_IND]], splat (i64 4)
+; CHECK-NEXT:    [[TMP7:%.*]] = icmp eq i64 [[INDEX_NEXT10]], 56
+; CHECK-NEXT:    br i1 [[TMP7]], label [[MIDDLE_BLOCK11:%.*]], label [[VECTOR_BODY2]], !llvm.loop [[LOOP3:![0-9]+]]
+; CHECK:       middle.block11:
+; CHECK-NEXT:    br label [[SCALAR_PH:%.*]]
+; CHECK:       scalar.ph:
+; CHECK-NEXT:    br label [[FOR_BODY98:%.*]]
+; CHECK:       for.body98:
+; CHECK-NEXT:    [[INDVARS_IV3551:%.*]] = phi i64 [ 56, [[SCALAR_PH]] ], [ [[INDVARS_IV_NEXT356:%.*]], [[FOR_INC140:%.*]] ]
+; CHECK-NEXT:    [[INDVARS_IV_NEXT356]] = add i64 [[INDVARS_IV3551]], 1
+; CHECK-NEXT:    [[CMP107:%.*]] = icmp ugt i64 [[INDVARS_IV3551]], 15
+; CHECK-NEXT:    br i1 [[CMP107]], label [[IF_END:%.*]], label [[IF_END_THREAD:%.*]]
+; CHECK:       if.end.thread:
+; CHECK-NEXT:    store i64 0, ptr [[MASK_1]], align 8
+; CHECK-NEXT:    br label [[FOR_INC140]]
+; CHECK:       if.end:
+; CHECK-NEXT:    br i1 false, label [[IF_END_IF_THEN128_CRIT_EDGE:%.*]], label [[FOR_INC140]]
+; CHECK:       if.end.if.then128_crit_edge:
+; CHECK-NEXT:    ret void
+; CHECK:       for.inc140:
+; CHECK-NEXT:    [[EXITCOND358_NOT:%.*]] = icmp eq i64 [[INDVARS_IV3551]], 56
+; CHECK-NEXT:    br i1 [[EXITCOND358_NOT]], label [[FOR_COND180_LOOPEXIT_7:%.*]], label [[FOR_BODY98]], !llvm.loop [[LOOP4:![0-9]+]]
+; CHECK:       for.cond180.loopexit.7:
+; CHECK-NEXT:    ret void
+;
 entry:
   br label %for.body
 

>From bbaca17047d04438089a266e1944ae8c5f4ace43 Mon Sep 17 00:00:00 2001
From: Karthika Devi C <kartc at qti.qualcomm.com>
Date: Thu, 13 Aug 2026 03:45:37 -0700
Subject: [PATCH 6/6] [LoopVectorize] Clear stale CycleAnalysis after loop
 vectorization

Replace the eager BlockFrequencyInfo computation with a targeted fix:
clear the cached CycleAnalysis in runImpl() after each loop
vectorization. This ensures that if BFI is lazily requested for a later
loop, it recomputes CycleInfo fresh instead of using stale data.

Fixes #215236
---
 .../llvm/Transforms/Vectorize/LoopVectorize.h |  1 +
 .../Transforms/Vectorize/LoopVectorize.cpp    | 19 ++++++++++++-------
 llvm/test/Other/new-pm-defaults.ll            |  3 ---
 llvm/test/Other/new-pm-lto-defaults.ll        |  2 --
 .../Other/new-pm-thinlto-postlink-defaults.ll |  3 ---
 5 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h b/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h
index 4512e5664cfc4..31bba6d8d3b79 100644
--- a/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h
+++ b/llvm/include/llvm/Transforms/Vectorize/LoopVectorize.h
@@ -153,6 +153,7 @@ struct LoopVectorizePass : public OptionalPassInfoMixin<LoopVectorizePass> {
   OptimizationRemarkEmitter *ORE;
   ProfileSummaryInfo *PSI;
   AAResults *AA;
+  FunctionAnalysisManager *FAM = nullptr;
 
   LLVM_ABI PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
   LLVM_ABI void
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index 1333724b755a6..9a26ff56f78a7 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -83,6 +83,7 @@
 #include "llvm/Analysis/BlockFrequencyInfo.h"
 #include "llvm/Analysis/CFG.h"
 #include "llvm/Analysis/CodeMetrics.h"
+#include "llvm/Analysis/CycleAnalysis.h"
 #include "llvm/Analysis/DemandedBits.h"
 #include "llvm/Analysis/GlobalsModRef.h"
 #include "llvm/Analysis/LoopAccessAnalysis.h"
@@ -8448,6 +8449,13 @@ LoopVectorizeResult LoopVectorizePass::runImpl(Function &F) {
     if (Changed) {
       LAIs->clear();
 
+      // If CycleAnalysis was cached by a prior pass (e.g. DSE), it now holds
+      // stale pointers to blocks that may have been deleted during
+      // vectorization. Clear it so that BlockFrequencyAnalysis (if requested
+      // for a later loop) recomputes it fresh.
+      if (FAM && FAM->getCachedResult<CycleAnalysis>(F))
+        FAM->clearAnalysis<CycleAnalysis>(F);
+
 #ifndef NDEBUG
       if (VerifySCEV)
         SE->verify();
@@ -8478,13 +8486,10 @@ PreservedAnalyses LoopVectorizePass::run(Function &F,
 
   auto &MAMProxy = AM.getResult<ModuleAnalysisManagerFunctionProxy>(F);
   PSI = MAMProxy.getCachedResult<ProfileSummaryAnalysis>(*F.getParent());
-  // Compute BFI eagerly rather than lazily. LoopVectorize may modify the
-  // function (vectorizing earlier loops) before requesting BFI for later loops.
-  // If BFI is computed lazily after such modifications, its dependency
-  // CycleAnalysis may be stale (holding pointers to deleted blocks), causing
-  // crashes.
-  BlockFrequencyInfo &BFIRef = AM.getResult<BlockFrequencyAnalysis>(F);
-  GetBFI = [&BFIRef]() -> BlockFrequencyInfo & { return BFIRef; };
+  FAM = &AM;
+  GetBFI = [&AM, &F]() -> BlockFrequencyInfo & {
+    return AM.getResult<BlockFrequencyAnalysis>(F);
+  };
   LoopVectorizeResult Result = runImpl(F);
   if (!Result.MadeAnyChange)
     return PreservedAnalyses::all();
diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll
index 0bbb9ec18bf15..2c1a57e00c9f1 100644
--- a/llvm/test/Other/new-pm-defaults.ll
+++ b/llvm/test/Other/new-pm-defaults.ll
@@ -245,9 +245,6 @@
 ; CHECK-O-NEXT: Running analysis: LoopAccessAnalysis on foo
 ; CHECK-O-NEXT: Running pass: InjectTLIMappings
 ; CHECK-O-NEXT: Running pass: LoopVectorizePass
-; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis
-; CHECK-O-NEXT: Running analysis: BranchProbabilityAnalysis
-; CHECK-O1-NEXT: Running analysis: CycleAnalysis
 ; CHECK-DEFAULT-NEXT: Running pass: DropUnnecessaryAssumesPass
 ; CHECK-O-NEXT: Running pass: InferAlignmentPass
 ; CHECK-O-NEXT: Running pass: LoopLoadEliminationPass
diff --git a/llvm/test/Other/new-pm-lto-defaults.ll b/llvm/test/Other/new-pm-lto-defaults.ll
index af09eddfa470a..14f189194d0e3 100644
--- a/llvm/test/Other/new-pm-lto-defaults.ll
+++ b/llvm/test/Other/new-pm-lto-defaults.ll
@@ -128,8 +128,6 @@
 ; CHECK-O23-NEXT: Running analysis: LoopAccessAnalysis on foo
 ; CHECK-O23-NEXT: Running pass: LoopVectorizePass on foo
 ; CHECK-O23-NEXT: Running analysis: DemandedBitsAnalysis on foo
-; CHECK-O23-NEXT: Running analysis: BlockFrequencyAnalysis on foo
-; CHECK-O23-NEXT: Running analysis: BranchProbabilityAnalysis on foo
 ; CHECK-O23-NEXT: Running pass: DropUnnecessaryAssumesPass on foo
 ; CHECK-O23-NEXT: Running pass: InferAlignmentPass on foo
 ; CHECK-O23-NEXT: Running pass: LoopUnrollPass on foo
diff --git a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
index 49e6037fa1e79..b1fde57902b05 100644
--- a/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
+++ b/llvm/test/Other/new-pm-thinlto-postlink-defaults.ll
@@ -176,9 +176,6 @@
 ; CHECK-POSTLINK-O-NEXT: Running analysis: LoopAccessAnalysis on foo
 ; CHECK-POSTLINK-O-NEXT: Running pass: InjectTLIMappings
 ; CHECK-POSTLINK-O-NEXT: Running pass: LoopVectorizePass
-; CHECK-POSTLINK-O-NEXT: Running analysis: BlockFrequencyAnalysis
-; CHECK-POSTLINK-O-NEXT: Running analysis: BranchProbabilityAnalysis
-; CHECK-O1-NEXT: Running analysis: CycleAnalysis
 ; CHECK-POSTLINK-O-NEXT: Running pass: DropUnnecessaryAssumesPass
 ; CHECK-POSTLINK-O-NEXT: Running pass: InferAlignmentPass
 ; CHECK-POSTLINK-O-NEXT: Running pass: LoopLoadEliminationPass



More information about the llvm-commits mailing list