On Wed, May 20, 2015 at 09:02:40AM -0400, David Edelsohn wrote: > On Tue, May 19, 2015 at 9:09 PM, Alan Modra <amo...@gmail.com> wrote: > > On Mon, May 18, 2015 at 02:05:59PM -0400, David Edelsohn wrote: > >> On Sun, May 17, 2015 at 10:54 PM, Alan Modra <amo...@gmail.com> wrote: > >> > This patch changes rs6000_stack_info to keep save areas offsets even > >> > when not used. I need lr_save_offset valid for split-stack, and it > >> > seemed reasonable to treat the other offsets the same. Not zeroing > >> > the offsets requires just one change in code that uses them, the > >> > use_backchain_to_restore_sp expression in rs6000_emit_epilogue, not > >> > counting the debug_stack_info changes. > >> > > >> > * config/rs6000/rs6000.c (rs6000_stack_info): Don't zero offsets > >> > when not saving registers. > >> > (debug_stack_info): Adjust to omit printing unused offsets, > >> > as before. > >> > (rs6000_emit_epilogue): Adjust use_backchain_to_restore_sp > >> > expression. > >> > >> I think that the vrsave_save_offset change may break saving of > >> callee-saved VRs. See PR 55276. > > > > I checked. It doesn't break that testcase. PR 55276 was really > > caused by using vrsave_mask for two purposes, firstly to track which > > altivec registers have been saved, and secondly to control use of the > > vrsave stack slot and whether mfvrsave/mtvrsave insns are generated. > > Patch 2/4 removes this conflation. > > Okay, but that confirms Patch 1 is not safe without the patch series.
No, patch 1/4 is safe by itself. That's what I tested when I said I'd checked. Patch 2/4 doesn't correct a fault in patch 1/4. The explanation I gave re PR 55276 is saying that patch 2/4 prevents the confusion that caused PR 55276 from re-occurring, at least as far as vrsave_mask is concerned. -- Alan Modra Australia Development Lab, IBM