This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, reload] PRE_INC with invalid hard reg
- From: Bernd Schmidt <bschmidt at redhat dot com>
- To: Alan Modra <amodra at gmail dot com>, gcc-patches at gcc dot gnu dot org
- Date: Thu, 11 Feb 2016 15:29:05 +0100
- Subject: Re: [PATCH, reload] PRE_INC with invalid hard reg
- Authentication-results: sourceware.org; auth=none
- References: <20160211094540 dot GB10888 at bubble dot grove dot modra dot org>
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