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.

Reply via email to