Commit f90af2e0 by David Malcolm Committed by David Malcolm

postreload.c: Use rtx_insn (also touches rtl.h and cprop.c)

gcc/
	* rtl.h (fis_get_condition): Strengthen param "jump" from rtx to
	rtx_insn *.

	* cprop.c (fis_get_condition): Likewise.

	* postreload.c (reload_cse_regs): Likewise for param "first".
	(reload_cse_simplify): Likewise for param "insn".
	(reload_cse_regs_1): Likewise for local "insn".
	(reload_cse_simplify_set): Likewise for param "insn".
	(reload_cse_simplify_operands): Likewise.
	(struct reg_use): Likewise for field "insn".
	(reload_combine_purge_insn_uses): Likewise for param "insn".
	(fixup_debug_insns): Likewise for params "from", "to" and local
	"insn".
	(try_replace_in_use): Likewise for local "use_insn".
	(reload_combine_recognize_const_pattern): Likewise for param
	"insn" and locals "add_moved_after_insn", "use_insn".
	(reload_combine_recognize_pattern): Likewise for param "insn" and
	local "prev".
	(reload_combine): Likewise for locals "insn", "prev".
	(reload_combine_note_use): Likewise for param "insn".
	(move2add_use_add2_insn): Likewise.
	(move2add_use_add3_insn): Likewise.
	(reload_cse_move2add): Likewise, also for local "next".
	(move2add_note_store): Likewise for local "insn".

From-SVN: r214358
parent b65eff46
2014-08-22 David Malcolm <dmalcolm@redhat.com> 2014-08-22 David Malcolm <dmalcolm@redhat.com>
* rtl.h (fis_get_condition): Strengthen param "jump" from rtx to
rtx_insn *.
* cprop.c (fis_get_condition): Likewise.
* postreload.c (reload_cse_regs): Likewise for param "first".
(reload_cse_simplify): Likewise for param "insn".
(reload_cse_regs_1): Likewise for local "insn".
(reload_cse_simplify_set): Likewise for param "insn".
(reload_cse_simplify_operands): Likewise.
(struct reg_use): Likewise for field "insn".
(reload_combine_purge_insn_uses): Likewise for param "insn".
(fixup_debug_insns): Likewise for params "from", "to" and local
"insn".
(try_replace_in_use): Likewise for local "use_insn".
(reload_combine_recognize_const_pattern): Likewise for param
"insn" and locals "add_moved_after_insn", "use_insn".
(reload_combine_recognize_pattern): Likewise for param "insn" and
local "prev".
(reload_combine): Likewise for locals "insn", "prev".
(reload_combine_note_use): Likewise for param "insn".
(move2add_use_add2_insn): Likewise.
(move2add_use_add3_insn): Likewise.
(reload_cse_move2add): Likewise, also for local "next".
(move2add_note_store): Likewise for local "insn".
2014-08-22 David Malcolm <dmalcolm@redhat.com>
* postreload-gcse.c (struct occr): Strengthen field "insn" from * postreload-gcse.c (struct occr): Strengthen field "insn" from
rtx to rtx_insn *. rtx to rtx_insn *.
(struct unoccr): Likewise. (struct unoccr): Likewise.
......
...@@ -1285,7 +1285,7 @@ local_cprop_pass (void) ...@@ -1285,7 +1285,7 @@ local_cprop_pass (void)
but this would require some code reorganization. */ but this would require some code reorganization. */
rtx rtx
fis_get_condition (rtx jump) fis_get_condition (rtx_insn *jump)
{ {
return get_condition (jump, NULL, false, true); return get_condition (jump, NULL, false, true);
} }
......
...@@ -46,23 +46,23 @@ along with GCC; see the file COPYING3. If not see ...@@ -46,23 +46,23 @@ along with GCC; see the file COPYING3. If not see
#include "dbgcnt.h" #include "dbgcnt.h"
static int reload_cse_noop_set_p (rtx); static int reload_cse_noop_set_p (rtx);
static bool reload_cse_simplify (rtx, rtx); static bool reload_cse_simplify (rtx_insn *, rtx);
static void reload_cse_regs_1 (void); static void reload_cse_regs_1 (void);
static int reload_cse_simplify_set (rtx, rtx); static int reload_cse_simplify_set (rtx, rtx_insn *);
static int reload_cse_simplify_operands (rtx, rtx); static int reload_cse_simplify_operands (rtx_insn *, rtx);
static void reload_combine (void); static void reload_combine (void);
static void reload_combine_note_use (rtx *, rtx, int, rtx); static void reload_combine_note_use (rtx *, rtx_insn *, int, rtx);
static void reload_combine_note_store (rtx, const_rtx, void *); static void reload_combine_note_store (rtx, const_rtx, void *);
static bool reload_cse_move2add (rtx); static bool reload_cse_move2add (rtx_insn *);
static void move2add_note_store (rtx, const_rtx, void *); static void move2add_note_store (rtx, const_rtx, void *);
/* Call cse / combine like post-reload optimization phases. /* Call cse / combine like post-reload optimization phases.
FIRST is the first instruction. */ FIRST is the first instruction. */
static void static void
reload_cse_regs (rtx first ATTRIBUTE_UNUSED) reload_cse_regs (rtx_insn *first ATTRIBUTE_UNUSED)
{ {
bool moves_converted; bool moves_converted;
reload_cse_regs_1 (); reload_cse_regs_1 ();
...@@ -88,7 +88,7 @@ reload_cse_noop_set_p (rtx set) ...@@ -88,7 +88,7 @@ reload_cse_noop_set_p (rtx set)
/* Try to simplify INSN. Return true if the CFG may have changed. */ /* Try to simplify INSN. Return true if the CFG may have changed. */
static bool static bool
reload_cse_simplify (rtx insn, rtx testreg) reload_cse_simplify (rtx_insn *insn, rtx testreg)
{ {
rtx body = PATTERN (insn); rtx body = PATTERN (insn);
basic_block insn_bb = BLOCK_FOR_INSN (insn); basic_block insn_bb = BLOCK_FOR_INSN (insn);
...@@ -207,7 +207,7 @@ reload_cse_regs_1 (void) ...@@ -207,7 +207,7 @@ reload_cse_regs_1 (void)
{ {
bool cfg_changed = false; bool cfg_changed = false;
basic_block bb; basic_block bb;
rtx insn; rtx_insn *insn;
rtx testreg = gen_rtx_REG (VOIDmode, -1); rtx testreg = gen_rtx_REG (VOIDmode, -1);
cselib_init (CSELIB_RECORD_MEMORY); cselib_init (CSELIB_RECORD_MEMORY);
...@@ -236,7 +236,7 @@ reload_cse_regs_1 (void) ...@@ -236,7 +236,7 @@ reload_cse_regs_1 (void)
and change the set into a register copy. */ and change the set into a register copy. */
static int static int
reload_cse_simplify_set (rtx set, rtx insn) reload_cse_simplify_set (rtx set, rtx_insn *insn)
{ {
int did_change = 0; int did_change = 0;
int dreg; int dreg;
...@@ -380,7 +380,7 @@ reload_cse_simplify_set (rtx set, rtx insn) ...@@ -380,7 +380,7 @@ reload_cse_simplify_set (rtx set, rtx insn)
hard registers. */ hard registers. */
static int static int
reload_cse_simplify_operands (rtx insn, rtx testreg) reload_cse_simplify_operands (rtx_insn *insn, rtx testreg)
{ {
int i, j; int i, j;
...@@ -672,7 +672,7 @@ reload_cse_simplify_operands (rtx insn, rtx testreg) ...@@ -672,7 +672,7 @@ reload_cse_simplify_operands (rtx insn, rtx testreg)
struct reg_use struct reg_use
{ {
/* The insn where a register has been used. */ /* The insn where a register has been used. */
rtx insn; rtx_insn *insn;
/* Points to the memory reference enclosing the use, if any, NULL_RTX /* Points to the memory reference enclosing the use, if any, NULL_RTX
otherwise. */ otherwise. */
rtx containing_mem; rtx containing_mem;
...@@ -770,7 +770,7 @@ reload_combine_split_ruids (int split_ruid) ...@@ -770,7 +770,7 @@ reload_combine_split_ruids (int split_ruid)
information about uses in that particular insn. */ information about uses in that particular insn. */
static void static void
reload_combine_purge_insn_uses (rtx insn) reload_combine_purge_insn_uses (rtx_insn *insn)
{ {
unsigned i; unsigned i;
...@@ -855,9 +855,9 @@ reload_combine_closest_single_use (unsigned regno, int ruid_limit) ...@@ -855,9 +855,9 @@ reload_combine_closest_single_use (unsigned regno, int ruid_limit)
should make this change on debug insns. */ should make this change on debug insns. */
static void static void
fixup_debug_insns (rtx reg, rtx replacement, rtx from, rtx to) fixup_debug_insns (rtx reg, rtx replacement, rtx_insn *from, rtx_insn *to)
{ {
rtx insn; rtx_insn *insn;
for (insn = from; insn != to; insn = NEXT_INSN (insn)) for (insn = from; insn != to; insn = NEXT_INSN (insn))
{ {
rtx t; rtx t;
...@@ -878,7 +878,7 @@ fixup_debug_insns (rtx reg, rtx replacement, rtx from, rtx to) ...@@ -878,7 +878,7 @@ fixup_debug_insns (rtx reg, rtx replacement, rtx from, rtx to)
static bool static bool
try_replace_in_use (struct reg_use *use, rtx reg, rtx src) try_replace_in_use (struct reg_use *use, rtx reg, rtx src)
{ {
rtx use_insn = use->insn; rtx_insn *use_insn = use->insn;
rtx mem = use->containing_mem; rtx mem = use->containing_mem;
bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (use_insn)); bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (use_insn));
...@@ -933,14 +933,14 @@ try_replace_in_use (struct reg_use *use, rtx reg, rtx src) ...@@ -933,14 +933,14 @@ try_replace_in_use (struct reg_use *use, rtx reg, rtx src)
recognized and should be handled normally. */ recognized and should be handled normally. */
static bool static bool
reload_combine_recognize_const_pattern (rtx insn) reload_combine_recognize_const_pattern (rtx_insn *insn)
{ {
int from_ruid = reload_combine_ruid; int from_ruid = reload_combine_ruid;
rtx set, pat, reg, src, addreg; rtx set, pat, reg, src, addreg;
unsigned int regno; unsigned int regno;
struct reg_use *use; struct reg_use *use;
bool must_move_add; bool must_move_add;
rtx add_moved_after_insn = NULL_RTX; rtx_insn *add_moved_after_insn = NULL;
int add_moved_after_ruid = 0; int add_moved_after_ruid = 0;
int clobbered_regno = -1; int clobbered_regno = -1;
...@@ -996,7 +996,7 @@ reload_combine_recognize_const_pattern (rtx insn) ...@@ -996,7 +996,7 @@ reload_combine_recognize_const_pattern (rtx insn)
if (use && GET_MODE (*use->usep) == Pmode) if (use && GET_MODE (*use->usep) == Pmode)
{ {
bool delete_add = false; bool delete_add = false;
rtx use_insn = use->insn; rtx_insn *use_insn = use->insn;
int use_ruid = use->ruid; int use_ruid = use->ruid;
/* Avoid moving the add insn past a jump. */ /* Avoid moving the add insn past a jump. */
...@@ -1077,7 +1077,7 @@ reload_combine_recognize_const_pattern (rtx insn) ...@@ -1077,7 +1077,7 @@ reload_combine_recognize_const_pattern (rtx insn)
INSN; false if it wasn't recognized and should be handled normally. */ INSN; false if it wasn't recognized and should be handled normally. */
static bool static bool
reload_combine_recognize_pattern (rtx insn) reload_combine_recognize_pattern (rtx_insn *insn)
{ {
rtx set, reg, src; rtx set, reg, src;
unsigned int regno; unsigned int regno;
...@@ -1119,7 +1119,7 @@ reload_combine_recognize_pattern (rtx insn) ...@@ -1119,7 +1119,7 @@ reload_combine_recognize_pattern (rtx insn)
&& last_label_ruid < reg_state[regno].use_ruid) && last_label_ruid < reg_state[regno].use_ruid)
{ {
rtx base = XEXP (src, 1); rtx base = XEXP (src, 1);
rtx prev = prev_nonnote_nondebug_insn (insn); rtx_insn *prev = prev_nonnote_nondebug_insn (insn);
rtx prev_set = prev ? single_set (prev) : NULL_RTX; rtx prev_set = prev ? single_set (prev) : NULL_RTX;
rtx index_reg = NULL_RTX; rtx index_reg = NULL_RTX;
rtx reg_sum = NULL_RTX; rtx reg_sum = NULL_RTX;
...@@ -1228,7 +1228,7 @@ reload_combine_recognize_pattern (rtx insn) ...@@ -1228,7 +1228,7 @@ reload_combine_recognize_pattern (rtx insn)
static void static void
reload_combine (void) reload_combine (void)
{ {
rtx insn, prev; rtx_insn *insn, *prev;
basic_block bb; basic_block bb;
unsigned int r; unsigned int r;
int min_labelno, n_labels; int min_labelno, n_labels;
...@@ -1493,7 +1493,7 @@ reload_combine_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED) ...@@ -1493,7 +1493,7 @@ reload_combine_note_store (rtx dst, const_rtx set, void *data ATTRIBUTE_UNUSED)
*XP is the pattern of INSN, or a part of it. *XP is the pattern of INSN, or a part of it.
Called from reload_combine, and recursively by itself. */ Called from reload_combine, and recursively by itself. */
static void static void
reload_combine_note_use (rtx *xp, rtx insn, int ruid, rtx containing_mem) reload_combine_note_use (rtx *xp, rtx_insn *insn, int ruid, rtx containing_mem)
{ {
rtx x = *xp; rtx x = *xp;
enum rtx_code code = x->code; enum rtx_code code = x->code;
...@@ -1747,7 +1747,7 @@ move2add_valid_value_p (int regno, enum machine_mode mode) ...@@ -1747,7 +1747,7 @@ move2add_valid_value_p (int regno, enum machine_mode mode)
Return true if we made a change. */ Return true if we made a change. */
static bool static bool
move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn) move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx_insn *insn)
{ {
rtx pat = PATTERN (insn); rtx pat = PATTERN (insn);
rtx src = SET_SRC (pat); rtx src = SET_SRC (pat);
...@@ -1832,7 +1832,7 @@ move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn) ...@@ -1832,7 +1832,7 @@ move2add_use_add2_insn (rtx reg, rtx sym, rtx off, rtx insn)
Return true iff we made a change. */ Return true iff we made a change. */
static bool static bool
move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn) move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx_insn *insn)
{ {
rtx pat = PATTERN (insn); rtx pat = PATTERN (insn);
rtx src = SET_SRC (pat); rtx src = SET_SRC (pat);
...@@ -1906,10 +1906,10 @@ move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn) ...@@ -1906,10 +1906,10 @@ move2add_use_add3_insn (rtx reg, rtx sym, rtx off, rtx insn)
/* Convert move insns with constant inputs to additions if they are cheaper. /* Convert move insns with constant inputs to additions if they are cheaper.
Return true if any changes were made. */ Return true if any changes were made. */
static bool static bool
reload_cse_move2add (rtx first) reload_cse_move2add (rtx_insn *first)
{ {
int i; int i;
rtx insn; rtx_insn *insn;
bool changed = false; bool changed = false;
for (i = FIRST_PSEUDO_REGISTER - 1; i >= 0; i--) for (i = FIRST_PSEUDO_REGISTER - 1; i >= 0; i--)
...@@ -1989,7 +1989,7 @@ reload_cse_move2add (rtx first) ...@@ -1989,7 +1989,7 @@ reload_cse_move2add (rtx first)
&& reg_base_reg[regno] == reg_base_reg[REGNO (src)] && reg_base_reg[regno] == reg_base_reg[REGNO (src)]
&& move2add_valid_value_p (REGNO (src), GET_MODE (reg))) && move2add_valid_value_p (REGNO (src), GET_MODE (reg)))
{ {
rtx next = next_nonnote_nondebug_insn (insn); rtx_insn *next = next_nonnote_nondebug_insn (insn);
rtx set = NULL_RTX; rtx set = NULL_RTX;
if (next) if (next)
set = single_set (next); set = single_set (next);
...@@ -2157,7 +2157,7 @@ reload_cse_move2add (rtx first) ...@@ -2157,7 +2157,7 @@ reload_cse_move2add (rtx first)
static void static void
move2add_note_store (rtx dst, const_rtx set, void *data) move2add_note_store (rtx dst, const_rtx set, void *data)
{ {
rtx insn = (rtx) data; rtx_insn *insn = (rtx_insn *) data;
unsigned int regno = 0; unsigned int regno = 0;
enum machine_mode mode = GET_MODE (dst); enum machine_mode mode = GET_MODE (dst);
......
...@@ -3188,7 +3188,7 @@ extern void init_lower_subreg (void); ...@@ -3188,7 +3188,7 @@ extern void init_lower_subreg (void);
/* In gcse.c */ /* In gcse.c */
extern bool can_copy_p (enum machine_mode); extern bool can_copy_p (enum machine_mode);
extern bool can_assign_to_reg_without_clobbers_p (rtx); extern bool can_assign_to_reg_without_clobbers_p (rtx);
extern rtx fis_get_condition (rtx); extern rtx fis_get_condition (rtx_insn *);
/* In ira.c */ /* In ira.c */
#ifdef HARD_CONST #ifdef HARD_CONST
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment