From 119f2738a65cad2dd277c5c86cd10efb3f503d73 Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Sun, 15 Jun 1997 17:45:02 -0700 Subject: [PATCH] (mips_expand_prologue): If tsize_rtx is large_int... (mips_expand_prologue): If tsize_rtx is large_int, emit two insns instead of one splitable insn, setting RTX_FRAME_RELATED_P. From-SVN: r14249 --- gcc/config/mips/mips.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index b97e0f6..fee0408 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -5443,8 +5443,25 @@ mips_expand_prologue () if (tsize > 32767) { tmp_rtx = gen_rtx (REG, Pmode, MIPS_TEMP1_REGNUM); - insn = emit_move_insn (tmp_rtx, tsize_rtx); - RTX_FRAME_RELATED_P (insn) = 1; + + /* Instruction splitting doesn't preserve the RTX_FRAME_RELATED_P + bit, so make sure that we don't emit anything that can be + split. */ + if (large_int (tsize_rtx)) + { + insn = emit_move_insn (tmp_rtx, + GEN_INT (tsize & 0xffff0000)); + RTX_FRAME_RELATED_P (insn) = 1; + insn = emit_insn (gen_iorsi3 (tmp_rtx, tmp_rtx, + GEN_INT (tsize & 0x0000ffff))); + RTX_FRAME_RELATED_P (insn) = 1; + } + else + { + insn = emit_move_insn (tmp_rtx, tsize_rtx); + RTX_FRAME_RELATED_P (insn) = 1; + } + tsize_rtx = tmp_rtx; } -- 2.7.4