https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108868
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- That would be invalid, vfork can't return from the containing function. Anyway, reduced testcase which shows the .ABNORMAL_DISPATCHER call in r13-5964 and none in r13-5965 in optimized is e.g. with just -O2: int x; int vfork (void) __attribute__((__leaf__, __returns_twice__)); int fork (void); void bar (int, int, int *); void foo (void) { int b = 0; int r = x ? vfork () : fork (); bar (r, x, &b); } This could be valid, as bar could e.g. for the first argument equal to 0 execve or _exit. It doesn't show the spill slot clobbering though.