Is it possible to skip that at the topper level like that?

diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc
index 682f795c8e1..654d25de593 100644
--- a/gcc/config/riscv/riscv-vsetvl.cc
+++ b/gcc/config/riscv/riscv-vsetvl.cc
@@ -3269,7 +3269,7 @@ pass_vsetvl::earliest_fusion (void)
      for (size_t i = 0; i < m_vector_manager->vector_exprs.length (); i++)
       {
         auto &expr = *m_vector_manager->vector_exprs[i];
-         if (expr.empty_p ())
+         if (expr.empty_p () || vsetvl_insn_p (expr.get_insn ()->rtl ()))
           continue;
         edge eg = INDEX_EDGE (m_vector_manager->vector_edge_list, ed);
         if (eg->src == ENTRY_BLOCK_PTR_FOR_FN (cfun)

Reply via email to