[Darwin, PPC] Do not use longcall for 64b code.

Fix wrong codegen; the 'native' tools do no emit the longcall in this
position.

2019-09-04  Iain Sandoe  <iain@sandoe.co.uk>

	Backport from mainline
	2019-06-27  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not
	use longcall for 64b code.

From-SVN: r275384
This commit is contained in:
Iain Sandoe 2019-09-04 19:24:42 +00:00 committed by Iain Sandoe
parent ff2eece548
commit 25df28cc40
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2019-09-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline
2019-06-27 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not
use longcall for 64b code.
2019-09-04 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline

View File

@ -3834,6 +3834,15 @@ darwin_rs6000_override_options (void)
rs6000_isa_flags |= OPTION_MASK_POWERPC64;
warning (0, "-m64 requires PowerPC64 architecture, enabling");
}
/* The linkers [ld64] that support 64Bit do not need the JBSR longcall
optimisation, and will not work with the most generic case (where the
symbol is undefined external, but there is no symbl stub). */
if (TARGET_64BIT)
rs6000_default_long_calls = 0;
/* ld_classic is (so far) still used for kernel (static) code, and supports
the JBSR longcall / branch islands. */
if (flag_mkernel)
{
rs6000_default_long_calls = 1;