[llvm] [VPlan] Build initial VPlan 0 using HCFGBuilder for inner loops. (NFC) (PR #124432)

via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 3 01:01:39 PST 2025


================
@@ -587,9 +587,11 @@ static bool hasConditionalTerminator(const VPBasicBlock *VPBB) {
   }
 
   const VPRecipeBase *R = &VPBB->back();
-  bool IsCondBranch = isa<VPBranchOnMaskRecipe>(R) ||
-                      match(R, m_BranchOnCond(m_VPValue())) ||
-                      match(R, m_BranchOnCount(m_VPValue(), m_VPValue()));
+  bool IsCondBranch =
+      isa<VPBranchOnMaskRecipe>(R) || match(R, m_BranchOnCond(m_VPValue())) ||
+      match(R, m_BranchOnCount(m_VPValue(), m_VPValue())) ||
+      (isa<VPInstruction>(R) &&
+       cast<VPInstruction>(R)->getOpcode() == Instruction::Switch);
----------------
ayalz wrote:

```suggestion
  bool IsCondBranch = isa<VPBranchOnMaskRecipe>(R) ||
                      match(R, m_BranchOnCond(m_VPValue())) ||
                      match(R, m_BranchOnCount(m_VPValue(), m_VPValue()));
  bool IsSwitch = isa<VPInstruction>(R) &&
                  cast<VPInstruction>(R)->getOpcode() == Instruction::Switch);
```

plus asserting below that, if, VPBB has at least 2 successors, then
```
    assert((IsCondBranch || IsSwitch) && "block with multiple successors not terminated by "
                           "conditional branch nor switch recipe");
```

Switches are allowed to have a single successor?

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


More information about the llvm-commits mailing list