/* { dg-do compile } */
/* APPLE LOCAL testsuite nested functions */
/* { dg-options "-O3 -g -finline-limit=100 -fnested-functions" } */

#define WORK(x, y) __asm__ ("" : "=r" (x) : "0" (x)); y += x + 26
#define SOME_WORK(x, y) WORK(x, y); WORK(x, y); WORK(x, y); WORK(x, y)
#define MORE_WORK(x, y) SOME_WORK(x, y); SOME_WORK(x, y); SOME_WORK(x, y)
#define EVEN_MORE_WORK(x, y) MORE_WORK(x, y); MORE_WORK(x, y); MORE_WORK(x, y)
#define LOTS_OF_WORK(x, y) EVEN_MORE_WORK(x, y); EVEN_MORE_WORK(x, y)

static int __attribute__((unused)) foo (int x)
{
  inline int bar (int x)
    {
      int y;
      y = x;
      LOTS_OF_WORK(x, y);
      LOTS_OF_WORK(x, y);
      LOTS_OF_WORK(x, y);
      LOTS_OF_WORK(x, y);
      LOTS_OF_WORK(x, y);
      LOTS_OF_WORK(x, y);
      return y;
    }
  return bar(x);
}
