1/* { dg-do run } */
2/* { dg-require-effective-target ilp32 } */
3/* { dg-options "-O2" } */
4
5extern void abort (void);
6
7int test_nested1 (int i)
8{
9  int __attribute__ ((__noinline__, __regparm__(3))) foo(int j, int k, int l)
10  {
11    return i + j + k + l;
12  }
13
14  return foo (i, i+1, i+2);
15}
16
17int test_nested2 (int i)
18{
19  int x;
20
21  int __attribute__ ((__noinline__, __regparm__(3))) foo(int j, int k, int l)
22  {
23    return i + j + k + l;
24  }
25
26  x = foo (i+3, i+1, i+2);
27  if (x != (4*i + 6))
28    abort ();
29
30  return x;
31}
32
33int
34main ()
35{
36  int i = test_nested1 (3);
37
38  if (i != 15)
39    abort ();
40
41  i = test_nested2 (4);
42
43  if (i != 22)
44    abort ();
45
46  return 0;
47}
48