https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68990
--- Comment #6 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #4) > I think the problem is: > ********** Pseudos coalescing #1: ********** > > Coalescing move 5:r91(91)-r103(103) (freq=1) > Removing move 5 (freq=1) > deleting insn with uid = 5. > Make unique value for inheritance r256 > Make unique value for inheritance r257 > Make unique value for inheritance r258 > Make unique value for inheritance r259 > Make unique value for inheritance r260 > Make unique value for inheritance r262 > Make unique value for inheritance r264 > Coalesced Moves = 1 > > in the other spot where insn 5 is it is perhaps possible to coalesce the two > pseudos, but not at the > int m = -b; > if (m < b) > comparison, where it breaks it. I've reproduced the bug and checked the coalescing. The coalescing seems the right transformation as p91 becomes dead right before insn#30 and actually its value before insn#30 through an inheritance pseudo is used in insn #31. The problem actually occurs later in pseudo assignment sub-pass. I suspect that something is wrong with pseudo values. Changes affecting pseudo values much affect the performance much. So when I have the patch, I need to check the performance impact too. I think if it is everything ok, the patch will be ready at the end of week.