[llvm] [SCEV] Add PHI SCEV verification to ensure availability at loop entry (PR #127550)

Aleksandr Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 18 08:13:10 PST 2025


https://github.com/aleks-tmb updated https://github.com/llvm/llvm-project/pull/127550

>From 05187b2b8551b8b9052e6aa8ecf5e04025cf42ae Mon Sep 17 00:00:00 2001
From: Aleksander Popov <apopov at azul.com>
Date: Tue, 18 Feb 2025 00:07:52 +0100
Subject: [PATCH] [SCEV] Add PHI SCEV verification to ensure availability at
 loop entry

---
 llvm/lib/Analysis/ScalarEvolution.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 8f74c1c398ced..924542607ad0b 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -14482,6 +14482,16 @@ void ScalarEvolution::verify() const {
                << "Delta: " << *Delta << "\n";
         std::abort();
       }
+
+      if (isa<PHINode>(I))
+        for (const Loop *L : ValidLoops)
+          if (SE.isAvailableAtLoopEntry(KV.second, L) !=
+              SE2.isAvailableAtLoopEntry(NewSCEV, L)) {
+            dbgs() << "Incorrect SCEV availability at loop entry\n"
+                   << "Old: " << *OldSCEV << "\n"
+                   << "New: " << *NewSCEV << "\n";
+            std::abort();
+          }
     }
   }
 



More information about the llvm-commits mailing list