/* Test if functions marked __attribute__((used)), but with address never taken in C code, don't use alternate calling convention for local functions on IA-32. */ /* { dg-do run { target i?86-*-* x86_64-*-* } } */ /* { dg-options "-O2" } */ extern void abort (void); static int foo (int, int, int, int) __asm ("foo"); static __attribute__((noinline, used)) int foo (int i, int j, int k, int l) { return i + j + k + l; } void bar (void) { if (foo (1, 2, 3, 4) != 10) abort (); } int (*fn) (int, int, int, int); void baz (void) { __asm ("movl $foo, %k0" : "=r" (fn)); if (fn (2, 3, 4, 5) != 14) abort (); } int main (void) { bar (); baz (); return 0; }