diff options
| author | kkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-16 12:16:52 +0000 |
|---|---|---|
| committer | kkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-16 12:16:52 +0000 |
| commit | c8d059f8300e95a4d455f77d03d0ec86a99a501e (patch) | |
| tree | 4f523e067b88631f8af83730643d1233101860fe | |
| parent | 2b126aa2fb73069d494a3758c19dbfecdd27f0a1 (diff) | |
| download | ppe42-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/ChangeLog | 8 | ||||
| -rw-r--r-- | gcc/config/sh/sh.c | 7 |
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); |

