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: [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



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