https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70873
--- Comment #7 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Bernd Schmidt from comment #6) > So the problem seems to be peep2 runs before regrename. If you always want > to generate two instructions there, then yes, a splitter would probably be > better. Actually just changing define_peephole2 to define_split seems to do > the trick, can you try whether that fixes the performance regression (I > don't have a Haswell machine)? Looking at the pass sequence, it looks to me that we need some global variable for a "very late" split (_.split4), when we are sure that insn operands won't be changed anymore. Even better solution would be a machine-dependent split-like mini-pass plugged in just after mach-reorg pass.