/* From gcc svn, /branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/pr66838.c */ /* Copyrighted and distributed under the same terms as gcc */ void abort (void); char global; __attribute__((sysv_abi, noinline, noclone)) void sysv_abi_func(char const *desc, void *local) { register int esi asm ("esi"); register int edi asm ("edi"); if (local != &global) abort (); /* Clobber some of the extra SYSV ABI registers. */ asm volatile ("movl\t%2, %0\n\tmovl\t%2, %1" : "=r" (esi), "=r" (edi) : "i" (0xdeadbeef)); } __attribute__((ms_abi, noinline, noclone)) void ms_abi_func () { sysv_abi_func ("1st call", &global); sysv_abi_func ("2nd call", &global); sysv_abi_func ("3rd call", &global); } int main(void) { ms_abi_func(); return 0; }