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.

Reply via email to