This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFA]: Fix reload of paradoxical subreg on big-endian platformswhen reg is in memory
Hi!
Jan Hubicka wrote:
Hi!
I've found a reload problem with paradoxical subregs on big-endian
platforms.
When a register is in memory and its paradoxical subreg is reloaded, we
compute its address but we come up with a wrong address representing the
high part instead of the low part. It is a regression compared to 3.0.4.
It seems to be that it is invlid to reload paradoxical memory subreg
without reloading the inner value first, because we may access
unintialized or missaligned memory. Perhaps reload_inner_reg_of_subreg
needs extra check?
Honza
No because reload_inner_reg_of_subreg() is called only from push_reload()/combine_reloads()
and it's too late. It can only deal with a hard reg not in the good class.
The register is in memory (reg_equiv_memory_loc[regno] != 0) and find_reloads_toplev
together with find_reloads_subreg_address will reload that memory rtx.
Stephane