1/* PR target/39496 */ 2/* { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && ilp32 } } } */ 3/* { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -mtune=i686 -msse2 -mfpmath=sse" } */ 4/* { dg-require-effective-target sse2 } */ 5/* Verify that {foo,bar}{,2}param are all passed on the stack, using 6 normal calling conventions, when not optimizing. */ 7/* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*fooparam," } } */ 8/* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*barparam," } } */ 9/* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*foo2param," } } */ 10/* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*bar2param," } } */ 11 12static inline int foo (int fooparam) 13{ 14 return fooparam; 15} 16 17static int bar (int barparam) 18{ 19 return foo (barparam); 20} 21 22static inline double foo2 (double foo2param) 23{ 24 return foo2param; 25} 26 27static double bar2 (double bar2param) 28{ 29 return foo2 (bar2param); 30} 31 32int 33main () 34{ 35 return bar (0) + bar2 (0.0); 36} 37