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)