[llvm] [llvm][CodeGen] Update checking method of loop-carried phi in window scheduler (PR #96288)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 25 03:56:00 PDT 2024


=?utf-8?b?4oCcYWtpcmF0aWFu4oCd?= <akiratian at tencent.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/96288 at github.com>


================
@@ -192,22 +192,37 @@ bool WindowScheduler::initialize() {
     return false;
   }
   // Check each MI in MBB.
-  SmallVector<Register, 8> PhiDefs;
+  SmallSet<Register, 8> PrevDefs;
+  SmallSet<Register, 8> PrevUses;
+  auto IsLoopCarried = [&](MachineInstr &Phi) {
+    // Two cases are checked here: (1)The virtual register defined by the
+    // preceding phi is used by the succeeding phi;(2)The preceding phi uses the
+    // virtual register defined by the succeeding phi.
+    auto Def = Phi.getOperand(0);
+    if (Def.isReg()) {
----------------
arsenm wrote:

Def must be a register. Don't try to handle invalid MIR 

https://github.com/llvm/llvm-project/pull/96288


More information about the llvm-commits mailing list