https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103750

--- Comment #4 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to Hongtao.liu from comment #3)
> (In reply to Hongtao.liu from comment #2)
> > Failed here
> > 
> >   /* Allow propagations into a loop only for reg-to-reg copies, since
> >      replacing one register by another shouldn't increase the cost.  */
> >   struct loop *def_loop = def_insn->bb ()->cfg_bb ()->loop_father;
> >   struct loop *use_loop = use->bb ()->cfg_bb ()->loop_father;
> >   if ((reg_prop_only || def_loop != use_loop)
> >       && (!reg_single_def_p (dest) || !reg_single_def_p (src)))
> >     return false;
> > 
> > But def_loop is inner loop of use_loop, it should be ok to propagate from
> > inner loop to outer loop.
> 
> Guess def_loop != use_loop used here with assumption that those "invariant"
> should be sinked into same loop.

There seems to be no pass in rtl level to do "sink" stuff.

Reply via email to