https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116398
--- Comment #14 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #8) > Because as this PR shows, those 2->2 insn merges with no change on i2 can > make a lot of sense and allow combination on the second and following user > of i2 dest which current trunk just punts on. No, they never make sense. They are 1->1 insn changes. This does not make much sense in the first place; where you want this it should be done in target-specific something, not from a generic decision. And, of course, that is not something the instruction combiner does. I have often wondered if we should run simplify_rtx on every insn some time before combine. Probably quite a bit before combine. Really everything that creates insns should run it on those before inserting the insns, but heh. In this particular case the testcase is just broken, it is expecting some insns to be generated that the testcase does not encourage the compiler to generate, and they are in no way better than what the compiler *does* generate. Unless you introduce some new cost function (but then tell the compiler about that, let it use it as well !) :-)