From: Iain Sandoe Date: Wed, 4 Sep 2019 19:24:42 +0000 (+0000) Subject: [Darwin, PPC] Do not use longcall for 64b code. X-Git-Tag: releases/gcc-7.5.0~167 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25df28cc40587caad97096d9c157988ba99ab9b4;p=thirdparty%2Fgcc.git [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 Backport from mainline 2019-06-27 Iain Sandoe * config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not use longcall for 64b code. From-SVN: r275384 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ba006ac51821..8408f5b82f2d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2019-09-04 Iain Sandoe + + Backport from mainline + 2019-06-27 Iain Sandoe + + * config/rs6000/rs6000.c (darwin_rs6000_override_options): Do not + use longcall for 64b code. + 2019-09-04 Iain Sandoe Backport from mainline diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ddf412137bb5..7a374cfd58c4 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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;