+2015-02-06 Jeff Law <law@redhat.com>
+
+ PR target/64889
+ * config/h8300/h8300.c (push): New argument "in_prologue".
+ Pass "in_prologue" along to "F".
+ (h8300_push_pop): Corresponding changes.
+ (h8300_expand_prologue): Likewise.
+ (h8300_swap_into_er6): Likewise. Do not set RTX_FRAME_RELATED_P.
+
2015-02-06 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/64957
* tree-ssa-loop-ivopts.c (get_shiftadd_cost): Use the mininum of costs
of shift-add and (add + shift) operations. Rename local variable.
+
2015-02-05 Jeff Law <law@redhat.com>
PR target/17306
/* Emit an insn to push register RN. */
static rtx
-push (int rn)
+push (int rn, bool in_prologue)
{
rtx reg = gen_rtx_REG (word_mode, rn);
rtx x;
x = gen_push_h8300hs_advanced (reg);
else
x = gen_push_h8300hs_normal (reg);
- x = F (emit_insn (x), true);
+ x = F (emit_insn (x), in_prologue);
add_reg_note (x, REG_INC, stack_pointer_rtx);
return x;
}
if (pop_p)
pop (regno);
else
- push (regno);
+ push (regno, false);
return;
}
if (frame_pointer_needed)
{
/* Push fp. */
- push (HARD_FRAME_POINTER_REGNUM);
+ push (HARD_FRAME_POINTER_REGNUM, true);
F (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx), true);
}
void
h8300_swap_into_er6 (rtx addr)
{
- rtx insn = push (HARD_FRAME_POINTER_REGNUM);
+ rtx insn = push (HARD_FRAME_POINTER_REGNUM, false);
if (frame_pointer_needed)
add_reg_note (insn, REG_CFA_DEF_CFA,
plus_constant (Pmode, gen_rtx_MEM (Pmode, stack_pointer_rtx),
emit_move_insn (addr, hard_frame_pointer_rtx);
insn = pop (HARD_FRAME_POINTER_REGNUM);
- RTX_FRAME_RELATED_P (insn) = 1;
if (frame_pointer_needed)
add_reg_note (insn, REG_CFA_DEF_CFA,
plus_constant (Pmode, hard_frame_pointer_rtx,