On Thu, Feb 23, 2017 at 11:41:09AM +1030, Alan Modra wrote: > lo_sum is indeed not valid for mem:SD. simplify_operand_subreg is > where the subreg disappears.
Richard, doesn't the following say that lra is expecting to reload exactly the lo_sum address you seem to think it should not handle in process_address? /* We still can reload address and if the address is valid, we can remove subreg without reloading its inner memory. */ && valid_address_p (GET_MODE (subst), regno_reg_rtx [ira_class_hard_regs [base_reg_class (GET_MODE (subst), MEM_ADDR_SPACE (subst), ADDRESS, SCRATCH)][0]], MEM_ADDR_SPACE (subst)))) -- Alan Modra Australia Development Lab, IBM