i386/asm-4 test: use amd64's natural addressing mode on all OSs
gcc.target/i386/asm-4.c uses amd64's natural PC-relative addressing mode on a single platform, using the 32-bit absolute addressing mode elsewhere. There's no point in giving up amd64's natural addressing mode and insisting on the 32-bit one when we're targeting amd64, and having to make explicit exceptions for systems where that's found not to work for whatever reason. If we just use the best-suited way to take the address of a function behind the compiler's back on each target variant, we're less likely to hit unexpected failures. for gcc/testsuite/ChangeLog * gcc.target/i386/asm-4.c: Use amd64 natural addressing mode on all __LP64__ targets. From-SVN: r274559
This commit is contained in:
parent
1ce521ece9
commit
967a322ede
|
@ -1,5 +1,8 @@
|
||||||
2019-08-16 Alexandre Oliva <oliva@adacore.com>
|
2019-08-16 Alexandre Oliva <oliva@adacore.com>
|
||||||
|
|
||||||
|
* gcc.target/i386/asm-4.c: Use amd64 natural addressing mode
|
||||||
|
on all __LP64__ targets.
|
||||||
|
|
||||||
* gcc.target/arc/interrupt-6.c: Use __builtin_alloca, require
|
* gcc.target/arc/interrupt-6.c: Use __builtin_alloca, require
|
||||||
effective target support for alloca, drop include of alloca.h.
|
effective target support for alloca, drop include of alloca.h.
|
||||||
* gcc.target/i386/pr80969-3.c: Likewise.
|
* gcc.target/i386/pr80969-3.c: Likewise.
|
||||||
|
|
|
@ -29,7 +29,7 @@ baz (void)
|
||||||
{
|
{
|
||||||
/* Darwin loads 64-bit regions above the 4GB boundary so
|
/* Darwin loads 64-bit regions above the 4GB boundary so
|
||||||
we need to use this instead. */
|
we need to use this instead. */
|
||||||
#if defined (__LP64__) && defined (__MACH__)
|
#if defined (__LP64__)
|
||||||
__asm ("leaq foo(%%rip), %0" : "=r" (fn));
|
__asm ("leaq foo(%%rip), %0" : "=r" (fn));
|
||||||
#else
|
#else
|
||||||
__asm ("movl $foo, %k0" : "=r" (fn));
|
__asm ("movl $foo, %k0" : "=r" (fn));
|
||||||
|
|
Loading…
Reference in New Issue