// RUN: %llvmgcc -S -fnested-functions -O0 -o - %s 
// PR915

extern void abort(void);

void nest(int n)
{
  int a = 0;
  int b = 5;
  int c = 0;
  int d = 7;

  void o(int i, int j)
  {
    if (i!=j)
      abort();
  }

  void f(x)
    int x; /* K&R style */
  {
    int e = 0;
    int f = 2;
    int g = 0;

    void y(void)
    {
      c = n;
      e = 1;
      g = x;
    }

    void z(void)
    {
      a = 4;
      g = 3;
    }

    a = 5;
    y();
    c = x;
    z();
    o(1,e);
    o(2,f);
    o(3,g);
  }

  c = 2;
  f(6);
  o(4,a);
  o(5,b);
  o(6,c);
  o(7,d);
}
