https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99199
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I don't see it on the trunk really; I wonder what changed, I know there has been many jump threading changes and even some phiopt changes which might have changed this for the better. Though I do see "label:ret" at least twice so it is not fully fixed. One thing I did notice is that is LLVM saves a lot of registers: push rbp push r15 push r14 push r13 push r12 push rbx :) Which solves the problem there :).