Hi Segher, On Fri, Oct 23, 2020 at 11:31:02AM -0500, Segher Boessenkool wrote: > On Fri, Oct 23, 2020 at 05:15:08PM +1030, Alan Modra wrote: > > The problem starts with fwprop creating > > (insn 9 4 0 2 (set (mem:V8HI (and:DI (plus:DI (reg/v/f:DI 121 [ vpp ]) > > (const_int 12 [0xc])) > > (const_int -16 [0xfffffffffffffff0])) [0 MEM <vector(8) > > short int> [(void *)_4 & -16B]+0 S16 A128]) > > (reg/v:V8HI 120 [ vp1 ])) "pixel.c":6:10 1237 {vsx_movv8hi_64bit} > > which is finally thrown out as invalid by lra. lra of course does that > > by reloading the entire address. > > While it could/should just reload that 12 into a reg :-( Could you > investigate doing that? Is there any reason we should not?
My first thought was to write the necessary reloads too, but I think it's better to not generate the invalid addressing in the first place. Hiding the +12 in an invalid memory address means it isn't exposed to optimization passes. -- Alan Modra Australia Development Lab, IBM