summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-16 12:16:52 +0000
committerkkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-16 12:16:52 +0000
commitc8d059f8300e95a4d455f77d03d0ec86a99a501e (patch)
tree4f523e067b88631f8af83730643d1233101860fe
parent2b126aa2fb73069d494a3758c19dbfecdd27f0a1 (diff)
downloadppe42-gcc-c8d059f8300e95a4d455f77d03d0ec86a99a501e.tar.gz
ppe42-gcc-c8d059f8300e95a4d455f77d03d0ec86a99a501e.zip
PR target/18447
* config/sh/sh.c (prepare_move_operands): Emit blockage insns before and after the insns for getting GOT address in non-PIC TLS_MODEL_INITIAL_EXEC tls sequence when the first scheduling is enabled. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90732 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/sh/sh.c7
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e966816da29..521c31b09e6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-11-16 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/18447
+ * config/sh/sh.c (prepare_move_operands): Emit blockage insns
+ before and after the insns for getting GOT address in non-PIC
+ TLS_MODEL_INITIAL_EXEC tls sequence when the first scheduling
+ is enabled.
+
2004-11-16 Andreas Krebbel <krebbel1@de.ibm.com>
* gcc/cse.c (struct change_cc_mode_args): New structure.
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 699f316064e..c4c1e1632cd 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -1042,9 +1042,16 @@ prepare_move_operands (rtx operands[], enum machine_mode mode)
case TLS_MODEL_INITIAL_EXEC:
if (! flag_pic)
{
+ /* Don't schedule insns for getting GOT address when
+ the first scheduling is enabled, to avoid spill
+ failures for R0. */
+ if (flag_schedule_insns)
+ emit_insn (gen_blockage ());
emit_insn (gen_GOTaddr2picreg ());
emit_insn (gen_rtx_USE (VOIDmode, gen_rtx_REG (SImode,
PIC_REG)));
+ if (flag_schedule_insns)
+ emit_insn (gen_blockage ());
}
tga_op1 = no_new_pseudos ? op0 : gen_reg_rtx (Pmode);
tmp = gen_sym2GOTTPOFF (op1);
OpenPOWER on IntegriCloud