diff options
Diffstat (limited to 'app-emulation/wine-any/files/pr66838.c')
-rw-r--r-- | app-emulation/wine-any/files/pr66838.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/app-emulation/wine-any/files/pr66838.c b/app-emulation/wine-any/files/pr66838.c new file mode 100644 index 00000000..cd616859 --- /dev/null +++ b/app-emulation/wine-any/files/pr66838.c @@ -0,0 +1,36 @@ +/* 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; +} |