1  /* { dg-require-effective-target trampolines } */
       2  
       3  int f0(int (*fn)(int *), int *p)
       4  {
       5    return (*fn) (p);
       6  }
       7  
       8  int f1(void)
       9  {
      10    int i = 0;
      11  
      12    int f2(int *p)
      13    {
      14      i = 1;
      15      return *p + 1;
      16    }
      17  
      18    return f0(f2, &i);
      19  }
      20  
      21  int main()
      22  {
      23    if (f1() != 2)
      24      abort ();
      25  
      26    return 0;
      27  }