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