https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109535
--- Comment #7 from JuzheZhong <juzhe.zhong at rivai dot ai> --- (In reply to rsand...@gcc.gnu.org from comment #2) > The assert in question fires if the pass creates an instruction > whose pattern uses a register or memory and if the pass doesn't > provide associated use information. Let me know if it looks like > a bug in rtl-ssa rather than a bug in the vsetvl pass. Hi, Richard. As Li Pan said, the vsetvl pass is trying to remove regno = 8 in old uses = [0,8,66,67,] Here is the code: access_array_builder uses_builder (attempt); uses_builder.reserve (insn->num_uses () - 1); for (use_info *use : insn->uses ()) if (use != find_access (insn->uses (), REGNO (avl))) uses_builder.quick_push (use); use_array new_uses = use_array (uses_builder.finish ()); change.new_uses = new_uses; You can see here, I add all uses except the use which has the same regno with "avl". Am I using RTL_SSA in a wrong way ? Or I should remove RTL_SSA updating when removing operands of uses ? Looking forward your suggestions. Thanks.