diff options
author | Alan Modra <amodra@gmail.com> | 2019-02-04 23:48:14 +1030 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2019-02-04 23:48:14 +1030 |
commit | d92ec61d23834a69e962fe66acd7c192c3abc972 (patch) | |
tree | c3e64f9daf95588a90453191b39ae41840082bea /gcc/fortran/resolve.c | |
parent | 64cd238b35cb8c96ef5be2e4775cb0e8aaa3e45f (diff) | |
download | gcc-d92ec61d23834a69e962fe66acd7c192c3abc972.zip gcc-d92ec61d23834a69e962fe66acd7c192c3abc972.tar.gz gcc-d92ec61d23834a69e962fe66acd7c192c3abc972.tar.bz2 |
[RS6000] Emit inline PLT when -mno-tls-markers
I restricted output of inline PLT sequences to when TLS marker relocs
were also available, which is obviously true when just considering
assembler support. However, there is a -mno-tls-markers option to
disable emitting the marker relocs. Currently that option also
disables inline PLT sequences, which is a bug (*). This patch fixes
that problem.
*) To be honest, it was a deliberate bug. I didn't want to have to
deal with inline PLT __tls_get_addr sequences lacking the marker
relocs in the linker, but it turns out the existing linker support for
old-style __tls_get_addr calls works reasonably well.
* config/rs6000/rs6000.c (rs6000_indirect_call_template_1),
(rs6000_pltseq_template): Guard output of TLS markers with
TARGET_TLS_MARKERS.
(rs6000_longcall_ref, rs6000_call_aix, rs6000_call_sysv),
(rs6000_sibcall_sysv): Ignore TARGET_TLS_MARKERS when deciding
to use inline PLT sequences.
* config/rs6000/rs6000.md (pltseq_tocsave_<mode>),
(pltseq_plt16_ha_<mode>, pltseq_plt16_lo_<mode>),
(pltseq_mtctr_<mode>): Don't test TARGET_TLS_MARKERS in predicate.
From-SVN: r268519
Diffstat (limited to 'gcc/fortran/resolve.c')
0 files changed, 0 insertions, 0 deletions