aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2015-02-06 07:25:23 -0700
committerJeff Law <law@gcc.gnu.org>2015-02-06 07:25:23 -0700
commit1901e8d621fca50bd6aa3f71f9b9b003ca448746 (patch)
tree02c7e219053f0f91ff98f589a91a48681bf91a0a /gcc
parent514ba9e4ad87531575da90b028c9882b1e793963 (diff)
downloadgcc-1901e8d621fca50bd6aa3f71f9b9b003ca448746.zip
gcc-1901e8d621fca50bd6aa3f71f9b9b003ca448746.tar.gz
gcc-1901e8d621fca50bd6aa3f71f9b9b003ca448746.tar.bz2
re PR target/64889 ([h8300] ICE maybe_record_trace_start, at dwarf2cfi.c:2318)
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. From-SVN: r220478
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/h8300/h8300.c11
2 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3a5d7a2..41a824d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+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
@@ -11,6 +20,7 @@
* 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
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index ea90052..4e9110e 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -619,7 +619,7 @@ compute_saved_regs (void)
/* 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;
@@ -630,7 +630,7 @@ push (int rn)
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;
}
@@ -683,7 +683,7 @@ h8300_push_pop (int regno, int nregs, bool pop_p, bool return_p)
if (pop_p)
pop (regno);
else
- push (regno);
+ push (regno, false);
return;
}
@@ -868,7 +868,7 @@ h8300_expand_prologue (void)
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);
}
@@ -2757,7 +2757,7 @@ h8sx_emit_movmd (rtx dest, rtx src, rtx length,
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),
@@ -2786,7 +2786,6 @@ h8300_swap_out_of_er6 (rtx addr)
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,