This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: reload inheritance error breaks openssl on s390
Alexandre Oliva <aoliva@redhat.com> writes:
> Did you mean something as simple as this, covering
> LEGITIMIZE_RELOAD_ADDRESS only (which is enough to fix the testcase at
> hand), or something more elaborate that tracks any changes whatsoever
> to the address?
Well, in principle I think this problem could recur for any case in
which find_reloads_address changes the memory address which
corresponds to a register. And that can happen if the address is not
a strict memory address, etc. But any such case would be very
strange, and nearly impossible to create a test case for, so my
inclination is to not worry about it.
> >From Alexandre Oliva <aoliva@redhat.com>
>
> PR target/28146
> * reload.h (reg_equiv_lra_tweak): New declaration.
> * reload1.c (reg_equiv_lra_tweak): New definition.
> (reload): Initialize it.
> (delete_output_reload): Use it.
> * reload.c (find_reloads_address): Set it if
> LEGITIMIZE_RELOAD_ADDRESS changes the address.
This patch is the right sort of thing, but I don't understand how it
actually works. You only store a value in reg_equiv_lra_tweak if
REGNO >= 0, but I don't see any execution path which leads to REGNO >=
0 when LEGITIMIZE_RELOAD_ADDRESS is called. What am I missing?
Ian