Re: [RS6000, patch] pr57936, ICE in rs6000_secondary_reload_inner

2014-02-26 Thread Ulrich Weigand
Alan Modra wrote: Some notes: Setting old to rl-in_reg when it is a subreg doesn't change the cases where delete_output_reload is called, since that call is protected by REG_P (old). The same thing goes for the following: /* If we are reloading a pseudo-register that was set by the

[RS6000, patch] pr57936, ICE in rs6000_secondary_reload_inner

2014-02-25 Thread Alan Modra
PR57936 is regarding a reload problem with rs6000_secondary_reload_inner. This is the failing instruction, as at the start of reload: (insn 61 60 62 3 (set (reg:V16QI 220) (unspec:V16QI [ (subreg:V16QI (reg:V2DI 159 [ D.2446 ]) 0) (subreg:V16QI (reg:V2DI

Re: [RS6000, patch] pr57936, ICE in rs6000_secondary_reload_inner

2014-02-25 Thread Ulrich Weigand
Alan Modra wrote: Normally, reload 2, the secondary reload for reload 3, would result in a call to reload_v16qi_si_load with (reg:V16QI 78 1) as its reg argument, and the mem home for pseudo reg 159 as its mem arg. However, reload1.c:choose_reload_regs has code to, as the comment says:

Re: [RS6000, patch] pr57936, ICE in rs6000_secondary_reload_inner

2014-02-25 Thread Alan Modra
On Tue, Feb 25, 2014 at 02:30:59PM +0100, Ulrich Weigand wrote: Alan Modra wrote: Normally, reload 2, the secondary reload for reload 3, would result in a call to reload_v16qi_si_load with (reg:V16QI 78 1) as its reg argument, and the mem home for pseudo reg 159 as its mem arg.

Re: [RS6000, patch] pr57936, ICE in rs6000_secondary_reload_inner

2014-02-25 Thread Alan Modra
On Wed, Feb 26, 2014 at 01:03:52AM +1030, Alan Modra wrote: On Tue, Feb 25, 2014 at 02:30:59PM +0100, Ulrich Weigand wrote: Instead, there's code in emit_input_reload_insns that is supposed to re-check whether a secondary reload is still needed if something changed significantly, e.g. if a