// { dg-do assemble { target i?86-*-linux* } } | |
// We'd use ebx with -fpic/-fPIC, so skip. | |
// { dg-skip-if "" { i?86-*-* } { "-fpic" "-fPIC" } { "" } } | |
// Origin: "Weidmann, Nicholas" <nicholas.weidmann@swx.ch> | |
typedef void (function_ptr)(int); | |
void foo(int) | |
{ | |
} | |
template<function_ptr ptr> void doit(int i) | |
{ | |
__asm__("pushl %0\n\t" | |
"call *%1\n\t" | |
"popl %0" | |
: | |
: "a" (i), "b" (ptr)); | |
} | |
void bar() | |
{ | |
doit<foo>(123); | |
} |