/* { dg-do compile } *
/* { dg-options "-O2 -fdump-tree-ssa -std=gnu11" } */
/* { dg-final { scan-tree-dump-times "__builtin_unreachable" 4 "ssa" } } */

void bar1 (void);
void bar2 (void);
void bar3 (void);
void bar4 (void);

_Noreturn void
foo1 (int *p, int y)
{
  bar1 ();
  *p = y;
  return;	/* { dg-warning "function declared 'noreturn' has a 'return' statement" } */
}		/* { dg-warning "'noreturn' function does return" "" { target *-*-* } .-1 } */

_Noreturn void
foo2 (int *p, int y)
{
  bar2 ();
  *p = y;
}		/* { dg-warning "'noreturn' function does return" } */

_Noreturn void
foo3 (int *p, int y)
{
  if (y > 10)
    return;	/* { dg-warning "function declared 'noreturn' has a 'return' statement" } */
  bar3 ();
  *p = y;
  return;	/* { dg-warning "function declared 'noreturn' has a 'return' statement" } */
}		/* { dg-warning "'noreturn' function does return" } */

_Noreturn void
foo4 (int *p, int y)
{
  if (y > 10)
    return;	/* { dg-warning "function declared 'noreturn' has a 'return' statement" } */
  bar4 ();
  *p = y;
}		/* { dg-warning "'noreturn' function does return" } */
