This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: PR target/16482: first scheduling pass on SH4
Alexandre Oliva <aoliva@redhat.com> wrote:
>> * config/sh/sh.c (implicit_r0_use_block): New variable.
>> (may_use_r0_in_reload, find_implicit_r0_use): New.
>> (sh_md_init_global): Initialize and set implicit_r0_use_block.
>> (sh_md_finish_global): Cleanup implicit_r0_use_block if needed.
>> (implicit_r0_pressure): New.
>> (sh_reorder): Use implicit_r0_pressure.
>> (sh_reorder2): Likewise.
>
> I'm a bit concerned with this approach. Consider, for example, a (mem
> (reg)), in which reload finds this reg to be equivalent to a (plus
> (reg) (reg)), or a (plus (reg) (const_int BIG)). Both might end up
> needing r0, and I don't quite see how you could prevent reload from
> trying such a substitution.
Agreed.
> That said, your patch definitely fixes a real problem. I'm just
> concerned that it doesn't fix it completely. The approach feels a bit
> like overkill, but I could live with it. Jörn, any concerns? Anyone,
> any further thoughts?
Jörn has pointed out in #4 of PR description thread that the real
problem is in lcm.c:optimize_mode_switching.
Regards,
kaz