diff options
author | Alan Modra <amodra@bigpond.net.au> | 2008-07-30 02:43:05 +0000 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2008-07-30 12:13:05 +0930 |
commit | d161cb2dde01d0224f471b8a3ed16ab858276dc1 (patch) | |
tree | 71d0cd842c18584e01e51d193bb1aa253139fa04 /gcc | |
parent | 559d6599eafdf3be5f155153286acc74761e7ae9 (diff) | |
download | gcc-d161cb2dde01d0224f471b8a3ed16ab858276dc1.zip gcc-d161cb2dde01d0224f471b8a3ed16ab858276dc1.tar.gz gcc-d161cb2dde01d0224f471b8a3ed16ab858276dc1.tar.bz2 |
re PR target/36955 (TLS LIBCALL change breaks libstdc++ built with older binutils)
PR target/36955
* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add
a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls.
From-SVN: r138291
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4062342..5ad3bec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-07-30 Alan Modra <amodra@bigpond.net.au> + + PR target/36955 + * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Add + a use of pic_offset_table_rtx for -msecure-plt __tls_get_addr calls. + 2008-07-29 Jan Hubicka <jh@suse.cz> * c-decl.c (merge_decls): Do not handle DECL_INLINE. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 0e03be0..e67b1a7 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3948,6 +3948,8 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) insn = emit_call_insn (insn); RTL_CONST_CALL_P (insn) = 1; use_reg (&CALL_INSN_FUNCTION_USAGE (insn), r3); + if (DEFAULT_ABI == ABI_V4 && TARGET_SECURE_PLT && flag_pic) + use_reg (&CALL_INSN_FUNCTION_USAGE (insn), pic_offset_table_rtx); insn = get_insns (); end_sequence (); emit_libcall_block (insn, dest, r3, addr); @@ -3970,6 +3972,8 @@ rs6000_legitimize_tls_address (rtx addr, enum tls_model model) insn = emit_call_insn (insn); RTL_CONST_CALL_P (insn) = 1; use_reg (&CALL_INSN_FUNCTION_USAGE (insn), r3); + if (DEFAULT_ABI == ABI_V4 && TARGET_SECURE_PLT && flag_pic) + use_reg (&CALL_INSN_FUNCTION_USAGE (insn), pic_offset_table_rtx); insn = get_insns (); end_sequence (); tmp1 = gen_reg_rtx (Pmode); |