This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]