https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68404
--- Comment #32 from Michael Meissner <meissner at linux dot vnet.ibm.com> --- On Thu, Feb 11, 2016 at 05:53:35PM +0000, meissner at linux dot vnet.ibm.com wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68404 > > --- Comment #31 from Michael Meissner <meissner at linux dot vnet.ibm.com> --- > On Thu, Feb 11, 2016 at 02:32:13AM +0000, bernds at gcc dot gnu.org wrote: > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68404 > > > > --- Comment #30 from Bernd Schmidt <bernds at gcc dot gnu.org> --- > > Something like this maybe? I don't know much about the machine and can't say > > whether the earlyclobber is justified, but looking at my dumps this appears > > to > > prevent the problematic peephole from triggering. No testing beyond that. > > > > Index: rs6000.c > > =================================================================== > > --- rs6000.c (revision 233217) > > +++ rs6000.c (working copy) > > @@ -35801,6 +35801,9 @@ fusion_gpr_load_p (rtx addis_reg, /* reg > > if (!fusion_gpr_addis (addis_value, GET_MODE (addis_value))) > > return false; > > > > + if (reg_overlap_mentioned_p (target, addis_value)) > > + return false; > > + > > /* Allow sign/zero extension. */ > > if (GET_CODE (mem) == ZERO_EXTEND > > || (GET_CODE (mem) == SIGN_EXTEND && TARGET_P8_FUSION_SIGN)) > > In looking at it, I probably don't need the early clobber. Let me play with > it. It turns out the earlyclobber was indeed the issue, and just eliminating the earlyclobber and providing constraints for the combined insns allowed profiledbootstrap with LTO to do a complete build. Just to be sure, I also did a profiledbootstrap with LTO and specifying -O3. I'll submit the patches to the patches mailing list.