re PR target/18447 (Variable with the initial-exec tls-model attribute causes spill failure)

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.

From-SVN: r90732
This commit is contained in:
Kaz Kojima 2004-11-16 12:16:52 +00:00
parent db566c7e81
commit b92c32643d
2 changed files with 15 additions and 0 deletions

View File

@ -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.

View File

@ -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);