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