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?
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. 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.
My gut feeling is that we want to reload the inner reg before entering this block of code, with a new test for SECONDARY_MEMORY_NEEDED alongside the existing block that already sets reloaded_inner_of_autoinc.
Bernd