https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117938
--- Comment #9 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Uroš Bizjak from comment #8) > (In reply to Andrew Pinski from comment #7) > > > It is the moving insn that is the issue. > Please see _.325r.late_combine2 dump, there are *two* equal instructions (as > reported in Comment #5). The compiler is not moving the insn, but copying > it. (insn 338) is exact copy of (insn 176), including REG_ARGS_SIZE expr. The instruction #s are different for me. I don't have a `insn 338` in the dump I am looking at. Anyways it looks like late_combine moved the final stack adjustment from the end of the function (right before the return) to before the call which is definitely wrong. I don't see a copy happening as there was a stack adjustment in .reload at the end of the function too. I wonder if call is not being marked as changing the stack pointer.