Hi, On Fri, Jan 20, 2017 at 05:05:56PM +0000, Nick Clifton wrote: > I would like to close out PR 70681 by applying the patch below. It > updates the XFAIL comments in the two affected tests, explaining why > the check for shrink-wrapping will fail. There is nothing actually > wrong here. The shrink wrapping optimization is working and the > targets are not broken, it is just that, for these particular test > cases, for these specific architectures (ARM, PPC), the unshrink- > wrapped code is actually smaller than the shrink wrapped version.
For PowerPC to make it shrink-wrappable prepare_shrink_wrap would need to split the "mr." instruction and sink the "mr" part. This is one insn bigger but it is faster on the early-return path (which is predicted as happening 50% of the time), and marginally slower (if it all) on the "normal" path. > gcc/testsuite/ChangeLog > 2017-01-20 Nick Clifton <ni...@redhat.com> > > * gcc.dg/pr10474.c: Update XFAIL comment to explain why the > check for shrink-wrapping can be expected to fail. > * gcc.dg/vect/vect-strided-a-u8-i2-gap.c: Likewise. That is not the file you edited :-) > -/* XFAIL due to PR70681. */ > +/* The XFAILs are because these targets produce better code without > + shrinkwrapping, and hence the optimization is not triggered. See > + PR70681 for more details. */ For PowerPC it isn't better code. /* The XFAILs are because these targets have combined the register save into another insn, and currently we cannot undo that (if that would be a good idea at all). This is PR70681. */ or similar? Segher