[llvm] [RISCV] Sink instructions so AVL dominates in RISCVVLOptimizer (PR #184155)

Luke Lau via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 3 19:40:21 PST 2026


================
@@ -1271,10 +1271,24 @@ bool RISCVVLOptimizer::tryReduceVL(MachineInstr &MI,
     VLOp.ChangeToImmediate(CommonVL.getImm());
     return true;
   }
-  const MachineInstr *VLMI = MRI->getVRegDef(CommonVL.getReg());
-  if (!MDT->dominates(VLMI, &MI)) {
-    LLVM_DEBUG(dbgs() << "  Abort due to VL not dominating.\n");
-    return false;
+  MachineInstr *VLMI = MRI->getVRegDef(CommonVL.getReg());
+  auto VLDominates = [this, &VLMI](MachineInstr &MI) {
+    return MDT->dominates(VLMI, &MI);
+  };
+  if (!VLDominates(MI)) {
+    assert(MI.getNumExplicitDefs() == 1);
+    auto Uses = MRI->use_instructions(MI.getOperand(0).getReg());
+    auto UsesSameBB = make_filter_range(Uses, [&MI](MachineInstr &Use) {
----------------
lukel97 wrote:

Done in 61a24ad4cf9a

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


More information about the llvm-commits mailing list