diff options
author | V3n3RiX <venerix@rogentos.ro> | 2016-04-15 16:25:31 +0100 |
---|---|---|
committer | V3n3RiX <venerix@rogentos.ro> | 2016-04-15 16:25:31 +0100 |
commit | 0c389803f1cedf572d8bf954d4c64989dbbe4959 (patch) | |
tree | f39a0946264fa5ec4e8ffe7d13e56d07334b391f /app-emulation/wine/files/pr66838.c | |
parent | 51e7c083b849fb1a2a7bb8c7d7313d1c72167c74 (diff) |
Gallium Nine patched wine ;)
Diffstat (limited to 'app-emulation/wine/files/pr66838.c')
-rw-r--r-- | app-emulation/wine/files/pr66838.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/app-emulation/wine/files/pr66838.c b/app-emulation/wine/files/pr66838.c new file mode 100644 index 00000000..cd616859 --- /dev/null +++ b/app-emulation/wine/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; +} |