1// { dg-do assemble { target i?86-*-linux* x86_64-*-linux* } } 2// { dg-require-effective-target ilp32 } 3// We'd use ebx with 32-bit pic code, so require nonpic. 4// { dg-require-effective-target nonpic } 5// Origin: "Weidmann, Nicholas" <nicholas.weidmann@swx.ch> 6 7typedef void (function_ptr)(int); 8 9void foo(int) 10{ 11} 12 13template<function_ptr ptr> void doit(int i) 14{ 15 __asm__("pushl %0\n\t" 16 "call *%1\n\t" 17 "popl %0" 18 : 19 : "a" (i), "b" (ptr)); 20} 21 22void bar() 23{ 24 doit<foo>(123); 25} 26