combine-stack-adj.c: Use rtx_insn

gcc/
2014-08-22  David Malcolm  <dmalcolm@redhat.com>

	* combine-stack-adj.c (struct csa_reflist): Strengthen field
	"insn" from rtx to rtx_insn *.
	(single_set_for_csa): Likewise for param "insn".
	(record_one_stack_ref): Likewise.
	(try_apply_stack_adjustment): Likewise.
	(struct record_stack_refs_data): Likewise for field "insn".
	(maybe_move_args_size_note): Likewise for params "last" and "insn".
	(prev_active_insn_bb): Likewise for return type and param "insn".
	(next_active_insn_bb): Likewise.
	(force_move_args_size_note): Likewise for params "prev" and "last"
	and locals "test", "next_candidate", "prev_candidate".
	(combine_stack_adjustments_for_block): Strengthen locals
	"last_sp_set", "last2_sp_set", "insn", "next" from rtx to
	rtx_insn *.

From-SVN: r214301
This commit is contained in:
David Malcolm 2014-08-22 00:27:43 +00:00 committed by David Malcolm
parent f66ac4c9dd
commit 71e88baf6b
2 changed files with 43 additions and 23 deletions

View File

@ -1,3 +1,20 @@
2014-08-22 David Malcolm <dmalcolm@redhat.com>
* combine-stack-adj.c (struct csa_reflist): Strengthen field
"insn" from rtx to rtx_insn *.
(single_set_for_csa): Likewise for param "insn".
(record_one_stack_ref): Likewise.
(try_apply_stack_adjustment): Likewise.
(struct record_stack_refs_data): Likewise for field "insn".
(maybe_move_args_size_note): Likewise for params "last" and "insn".
(prev_active_insn_bb): Likewise for return type and param "insn".
(next_active_insn_bb): Likewise.
(force_move_args_size_note): Likewise for params "prev" and "last"
and locals "test", "next_candidate", "prev_candidate".
(combine_stack_adjustments_for_block): Strengthen locals
"last_sp_set", "last2_sp_set", "insn", "next" from rtx to
rtx_insn *.
2014-08-21 David Malcolm <dmalcolm@redhat.com>
* combine.c (i2mod): Strengthen this variable from rtx to rtx_insn *.

View File

@ -73,16 +73,17 @@ along with GCC; see the file COPYING3. If not see
struct csa_reflist
{
HOST_WIDE_INT sp_offset;
rtx insn, *ref;
rtx_insn *insn;
rtx *ref;
struct csa_reflist *next;
};
static int stack_memref_p (rtx);
static rtx single_set_for_csa (rtx);
static rtx single_set_for_csa (rtx_insn *);
static void free_csa_reflist (struct csa_reflist *);
static struct csa_reflist *record_one_stack_ref (rtx, rtx *,
static struct csa_reflist *record_one_stack_ref (rtx_insn *, rtx *,
struct csa_reflist *);
static int try_apply_stack_adjustment (rtx, struct csa_reflist *,
static int try_apply_stack_adjustment (rtx_insn *, struct csa_reflist *,
HOST_WIDE_INT, HOST_WIDE_INT);
static void combine_stack_adjustments_for_block (basic_block);
static int record_stack_refs (rtx *, void *);
@ -122,7 +123,7 @@ stack_memref_p (rtx x)
tying fp and sp adjustments. */
static rtx
single_set_for_csa (rtx insn)
single_set_for_csa (rtx_insn *insn)
{
int i;
rtx tmp = single_set (insn);
@ -171,7 +172,7 @@ free_csa_reflist (struct csa_reflist *reflist)
predicate stack_memref_p or a REG representing the stack pointer. */
static struct csa_reflist *
record_one_stack_ref (rtx insn, rtx *ref, struct csa_reflist *next_reflist)
record_one_stack_ref (rtx_insn *insn, rtx *ref, struct csa_reflist *next_reflist)
{
struct csa_reflist *ml;
@ -194,7 +195,7 @@ record_one_stack_ref (rtx insn, rtx *ref, struct csa_reflist *next_reflist)
on success. */
static int
try_apply_stack_adjustment (rtx insn, struct csa_reflist *reflist,
try_apply_stack_adjustment (rtx_insn *insn, struct csa_reflist *reflist,
HOST_WIDE_INT new_adjust, HOST_WIDE_INT delta)
{
struct csa_reflist *ml;
@ -240,7 +241,7 @@ try_apply_stack_adjustment (rtx insn, struct csa_reflist *reflist,
references in the insn and discard all other stack pointer references. */
struct record_stack_refs_data
{
rtx insn;
rtx_insn *insn;
struct csa_reflist *reflist;
};
@ -297,7 +298,7 @@ record_stack_refs (rtx *xp, void *data)
AFTER is true iff LAST follows INSN in the instruction stream. */
static void
maybe_move_args_size_note (rtx last, rtx insn, bool after)
maybe_move_args_size_note (rtx_insn *last, rtx_insn *insn, bool after)
{
rtx note, last_note;
@ -319,35 +320,36 @@ maybe_move_args_size_note (rtx last, rtx insn, bool after)
/* Return the next (or previous) active insn within BB. */
static rtx
prev_active_insn_bb (basic_block bb, rtx insn)
static rtx_insn *
prev_active_insn_bb (basic_block bb, rtx_insn *insn)
{
for (insn = PREV_INSN (insn);
insn != PREV_INSN (BB_HEAD (bb));
insn = PREV_INSN (insn))
if (active_insn_p (insn))
return insn;
return NULL_RTX;
return NULL;
}
static rtx
next_active_insn_bb (basic_block bb, rtx insn)
static rtx_insn *
next_active_insn_bb (basic_block bb, rtx_insn *insn)
{
for (insn = NEXT_INSN (insn);
insn != NEXT_INSN (BB_END (bb));
insn = NEXT_INSN (insn))
if (active_insn_p (insn))
return insn;
return NULL_RTX;
return NULL;
}
/* If INSN has a REG_ARGS_SIZE note, if possible move it to PREV. Otherwise
search for a nearby candidate within BB where we can stick the note. */
static void
force_move_args_size_note (basic_block bb, rtx prev, rtx insn)
force_move_args_size_note (basic_block bb, rtx_insn *prev, rtx_insn *insn)
{
rtx note, test, next_candidate, prev_candidate;
rtx note;
rtx_insn *test, *next_candidate, *prev_candidate;
/* If PREV exists, tail-call to the logic in the other function. */
if (prev)
@ -425,10 +427,11 @@ static void
combine_stack_adjustments_for_block (basic_block bb)
{
HOST_WIDE_INT last_sp_adjust = 0;
rtx last_sp_set = NULL_RTX;
rtx last2_sp_set = NULL_RTX;
rtx_insn *last_sp_set = NULL;
rtx_insn *last2_sp_set = NULL;
struct csa_reflist *reflist = NULL;
rtx insn, next, set;
rtx_insn *insn, *next;
rtx set;
struct record_stack_refs_data data;
bool end_of_block = false;
@ -574,7 +577,7 @@ combine_stack_adjustments_for_block (basic_block bb)
delete_insn (last_sp_set);
free_csa_reflist (reflist);
reflist = NULL;
last_sp_set = NULL_RTX;
last_sp_set = NULL;
last_sp_adjust = 0;
continue;
}
@ -603,8 +606,8 @@ combine_stack_adjustments_for_block (basic_block bb)
}
free_csa_reflist (reflist);
reflist = NULL;
last2_sp_set = NULL_RTX;
last_sp_set = NULL_RTX;
last2_sp_set = NULL;
last_sp_set = NULL;
last_sp_adjust = 0;
}
}