1 /* { dg-do run } */
2 /* { dg-require-effective-target ia32 } */
3 /* { dg-options "-O2" } */
4 
5 extern void abort (void);
6 
test_nested1(int i)7 int 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 
test_nested2(int i)17 int 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 
33 int
main()34 main ()
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