summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog20
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/shrink-wrap.c19
-rw-r--r--gcc/shrink-wrap.h5
4 files changed, 34 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4e28a80ee55..ae34bd9b5e9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,25 @@
2014-08-22 David Malcolm <dmalcolm@redhat.com>
+ * shrink-wrap.h (requires_stack_frame_p): Strengthen param 1
+ "insn" from rtx to rtx_insn *.
+ (dup_block_and_redirect): Likewise for param 3 "before".
+
+ * shrink-wrap.c (requires_stack_frame_p): Strengthen param "insn"
+ from rtx to rtx_insn *.
+ (move_insn_for_shrink_wrap): Likewise.
+ (prepare_shrink_wrap): Likewise for locals "insn", "curr".
+ (dup_block_and_redirect): Likewise for param "before" and local
+ "insn".
+ (try_shrink_wrapping): Likewise for locals "insn", "insert_point",
+ "end".
+ (convert_to_simple_return): Likewise for local "start".
+
+ * config/i386/i386.c (ix86_finalize_stack_realign_flags):
+ Strengthen local "insn" from rtx to rtx_insn *, for use when
+ invoking requires_stack_frame_p.
+
+2014-08-22 David Malcolm <dmalcolm@redhat.com>
+
* sel-sched-ir.c (vinsn_copy): Strengthen local "copy" from rtx to
rtx_insn *.
(speculate_expr): Likewise for locals "orig_insn_rtx",
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index cc4b0c7fe3a..3e4c93ec3ac 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -10698,7 +10698,7 @@ ix86_finalize_stack_realign_flags (void)
HARD_FRAME_POINTER_REGNUM);
FOR_EACH_BB_FN (bb, cfun)
{
- rtx insn;
+ rtx_insn *insn;
FOR_BB_INSNS (bb, insn)
if (NONDEBUG_INSN_P (insn)
&& requires_stack_frame_p (insn, prologue_used,
diff --git a/gcc/shrink-wrap.c b/gcc/shrink-wrap.c
index 5c34fee39f9..0938f2c5b73 100644
--- a/gcc/shrink-wrap.c
+++ b/gcc/shrink-wrap.c
@@ -61,7 +61,7 @@ along with GCC; see the file COPYING3. If not see
prologue. SET_UP_BY_PROLOGUE is the set of registers we expect the
prologue to set up for the function. */
bool
-requires_stack_frame_p (rtx insn, HARD_REG_SET prologue_used,
+requires_stack_frame_p (rtx_insn *insn, HARD_REG_SET prologue_used,
HARD_REG_SET set_up_by_prologue)
{
df_ref def, use;
@@ -162,7 +162,7 @@ live_edge_for_reg (basic_block bb, int regno, int end_regno)
is splitted or not. */
static bool
-move_insn_for_shrink_wrap (basic_block bb, rtx insn,
+move_insn_for_shrink_wrap (basic_block bb, rtx_insn *insn,
const HARD_REG_SET uses,
const HARD_REG_SET defs,
bool *split_p)
@@ -331,7 +331,8 @@ move_insn_for_shrink_wrap (basic_block bb, rtx insn,
void
prepare_shrink_wrap (basic_block entry_block)
{
- rtx insn, curr, x;
+ rtx_insn *insn, *curr;
+ rtx x;
HARD_REG_SET uses, defs;
df_ref def, use;
bool split_p = false;
@@ -373,12 +374,12 @@ prepare_shrink_wrap (basic_block entry_block)
/* Create a copy of BB instructions and insert at BEFORE. Redirect
preds of BB to COPY_BB if they don't appear in NEED_PROLOGUE. */
void
-dup_block_and_redirect (basic_block bb, basic_block copy_bb, rtx before,
+dup_block_and_redirect (basic_block bb, basic_block copy_bb, rtx_insn *before,
bitmap_head *need_prologue)
{
edge_iterator ei;
edge e;
- rtx insn = BB_END (bb);
+ rtx_insn *insn = BB_END (bb);
/* We know BB has a single successor, so there is no need to copy a
simple jump at the end of BB. */
@@ -513,7 +514,7 @@ try_shrink_wrapping (edge *entry_edge, edge orig_entry_edge,
FOR_EACH_BB_FN (bb, cfun)
{
- rtx insn;
+ rtx_insn *insn;
unsigned size = 0;
FOR_BB_INSNS (bb, insn)
@@ -707,7 +708,7 @@ try_shrink_wrapping (edge *entry_edge, edge orig_entry_edge,
FOR_EACH_BB_REVERSE_FN (bb, cfun)
{
basic_block copy_bb, tbb;
- rtx insert_point;
+ rtx_insn *insert_point;
int eflags;
if (!bitmap_clear_bit (&bb_tail, bb->index))
@@ -724,7 +725,7 @@ try_shrink_wrapping (edge *entry_edge, edge orig_entry_edge,
if (e)
{
/* Make sure we insert after any barriers. */
- rtx end = get_last_bb_insn (e->src);
+ rtx_insn *end = get_last_bb_insn (e->src);
copy_bb = create_basic_block (NEXT_INSN (end),
NULL_RTX, e->src);
BB_COPY_PARTITION (copy_bb, e->src);
@@ -902,7 +903,7 @@ convert_to_simple_return (edge entry_edge, edge orig_entry_edge,
else if (*pdest_bb == NULL)
{
basic_block bb;
- rtx start;
+ rtx_insn *start;
bb = create_basic_block (NULL, NULL, exit_pred);
BB_COPY_PARTITION (bb, e->src);
diff --git a/gcc/shrink-wrap.h b/gcc/shrink-wrap.h
index bccfb31aad3..5576d367b8e 100644
--- a/gcc/shrink-wrap.h
+++ b/gcc/shrink-wrap.h
@@ -34,10 +34,11 @@ extern basic_block emit_return_for_exit (edge exit_fallthru_edge,
bool simple_p);
/* In shrink-wrap.c. */
-extern bool requires_stack_frame_p (rtx, HARD_REG_SET, HARD_REG_SET);
+extern bool requires_stack_frame_p (rtx_insn *, HARD_REG_SET, HARD_REG_SET);
extern void prepare_shrink_wrap (basic_block entry_block);
extern void dup_block_and_redirect (basic_block bb, basic_block copy_bb,
- rtx before, bitmap_head *need_prologue);
+ rtx_insn *before,
+ bitmap_head *need_prologue);
extern void try_shrink_wrapping (edge *entry_edge, edge orig_entry_edge,
bitmap_head *bb_flags, rtx prologue_seq);
extern edge get_unconverted_simple_return (edge, bitmap_head,