diff options
author | Kaz Kojima <kkojima@gcc.gnu.org> | 2004-04-06 05:58:44 +0000 |
---|---|---|
committer | Kaz Kojima <kkojima@gcc.gnu.org> | 2004-04-06 05:58:44 +0000 |
commit | 13ecc9e00390125437b13b4f977f96a34d682b4a (patch) | |
tree | 023b11b171dbd42132cce5b1109108400a331d44 /gcc | |
parent | cb07f7bbd4366231acfd3b1b375489c5a04a40b6 (diff) | |
download | gcc-13ecc9e00390125437b13b4f977f96a34d682b4a.zip gcc-13ecc9e00390125437b13b4f977f96a34d682b4a.tar.gz gcc-13ecc9e00390125437b13b4f977f96a34d682b4a.tar.bz2 |
sh.c (prepare_move_operands): Use emit_call_insn when the TLS address is generated by a function call.
* config/sh/sh.c (prepare_move_operands): Use emit_call_insn
when the TLS address is generated by a function call.
* config/sh/sh.md (tls_global_dynamic): Use a call expression.
(tls_local_dynamic): Likewise.
From-SVN: r80450
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 4 | ||||
-rw-r--r-- | gcc/config/sh/sh.md | 10 |
3 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1105593..7cf0c67 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-04-05 Kaz Kojima <kkojima@gcc.gnu.org> + + * config/sh/sh.c (prepare_move_operands): Use emit_call_insn + when the TLS address is generated by a function call. + * config/sh/sh.md (tls_global_dynamic): Use a call expression. + (tls_local_dynamic): Likewise. + 2004-04-05 Andrew Pinski <pinskia@physics.uc.edu> * tree.c (reconstruct_complex_type): Use TYPE_READONLY diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 32c8ef9..a790c43 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -944,13 +944,13 @@ prepare_move_operands (rtx operands[], enum machine_mode mode) { case TLS_MODEL_GLOBAL_DYNAMIC: tga_ret = gen_rtx_REG (Pmode, R0_REG); - emit_insn (gen_tls_global_dynamic (tga_ret, op1)); + emit_call_insn (gen_tls_global_dynamic (tga_ret, op1)); op1 = tga_ret; break; case TLS_MODEL_LOCAL_DYNAMIC: tga_ret = gen_rtx_REG (Pmode, R0_REG); - emit_insn (gen_tls_local_dynamic (tga_ret, op1)); + emit_call_insn (gen_tls_local_dynamic (tga_ret, op1)); tmp = gen_reg_rtx (Pmode); emit_move_insn (tmp, tga_ret); diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index 73cd17d..a31e8b1 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -6863,8 +6863,9 @@ (define_insn "tls_global_dynamic" [(set (match_operand:SI 0 "register_operand" "=&z") - (unspec:SI [(match_operand:SI 1 "" "")] - UNSPEC_TLSGD)) + (call (unspec:SI [(match_operand:SI 1 "" "")] + UNSPEC_TLSGD) + (const_int 0))) (use (reg:PSI FPSCR_REG)) (use (reg:SI PIC_REG)) (clobber (reg:SI PR_REG)) @@ -6891,8 +6892,9 @@ mov.l\\t1f,r4\\n\\ (define_insn "tls_local_dynamic" [(set (match_operand:SI 0 "register_operand" "=&z") - (unspec:SI [(match_operand:SI 1 "" "")] - UNSPEC_TLSLDM)) + (call (unspec:SI [(match_operand:SI 1 "" "")] + UNSPEC_TLSLDM) + (const_int 0))) (use (reg:PSI FPSCR_REG)) (use (reg:SI PIC_REG)) (clobber (reg:SI PR_REG)) |