diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc
index 789eb04b78d0475c5aa2995d95ca8c34af789c35..bd45cb97e63bffb2e9e05dc2e788625ca72b4a29 100644
--- a/gcc/config/riscv/riscv-vsetvl.cc
+++ b/gcc/config/riscv/riscv-vsetvl.cc
@@ -1183,6 +1183,9 @@ extract_single_source (set_info *set)
     return nullptr;
   hash_set<set_info *> sets = get_all_sets (set, true, false, true);
 
+  if (sets.is_empty ())
+    return nullptr;
+
   insn_info *first_insn = (*sets.begin ())->insn ();
   if (first_insn->is_artificial ())
     return nullptr;