[PATCH, reload] PRE_INC with invalid hard reg
Alan Modra
amodra@gmail.com
Fri Feb 12 03:28:00 GMT 2016
On Thu, Feb 11, 2016 at 03:29:05PM +0100, Bernd Schmidt wrote:
> On 02/11/2016 10:45 AM, Alan Modra wrote:
>
> >Due to uses elsewhere in vsx instructions, reload chooses to put
> >psuedo 185 in fr31, which can't be used as a base register in the
> >following:
>
> What code exactly makes the choice of fr31? I assume this is in
> reg_renumber, so it's IRA and not reload that's making that decision?
Yes, sorry, I shouldn't have said reload chooses the reg.
> > PR target/68973
> > * reloads.c (find_reloads_address_1): For pre/post-inc/dec
> > with an invalid hard reg, reload just the reg not the entire
> > pre/post-inc/dec address expression.
>
> Hmm, you're patching tricky code.
Thanks for being willing to review! :)
> I'm not sure yet whether this is right or
> not. More reload dumps might help if you have them; I'll Cc myself on the
> PR.
I've attached rtl dumps to the PR.
> My gut feeling is that we want to reload the inner reg before entering this
> block of code,
Yes, my first quick hack did just that, then I noticed there was
existing code to reload the inner reg..
> with a new test for SECONDARY_MEMORY_NEEDED alongside the
> existing block that already sets reloaded_inner_of_autoinc.
I don't understand this comment. If we're pushing a reload of the
inner reg, then the SECONDARY_MEMORY_NEEDED code in push_reload will
fire. Why then should there be any need to do anything special in
find_reloads_address_1 regarding secondary memory?
--
Alan Modra
Australia Development Lab, IBM
More information about the Gcc-patches
mailing list