diff options
author | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-08-22 00:36:14 +0000 |
---|---|---|
committer | dmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-08-22 00:36:14 +0000 |
commit | 1b2edb2f982eaa292d6a2521143812bd1c6d006a (patch) | |
tree | 5836f98dbf32cdb89507fbf2bafcb62c2773aa5b /gcc/cprop.c | |
parent | 16a15f57c23a5f47e1d175211563dabe5f5c34c3 (diff) | |
download | gcc-1b2edb2f982eaa292d6a2521143812bd1c6d006a.tar.gz |
cprop.c: Use rtx_insn
gcc/
2014-08-22 David Malcolm <dmalcolm@redhat.com>
* cprop.c (struct occr): Strengthen field "insn" from rtx to
rtx_insn *.
(reg_available_p): Likewise for param "insn".
(insert_set_in_table): Likewise.
(hash_scan_set): Likewise.
(hash_scan_insn): Likewise.
(make_set_regs_unavailable): Likewise.
(compute_hash_table_work): Likewise for local "insn".
(reg_not_set_p): Strengthen param "insn" from const_rtx to
const rtx_insn *.
(mark_oprs_set): Strengthen param "insn" from rtx to rtx_insn *.
(try_replace_reg): Likewise.
(find_avail_set): Likewise.
(cprop_jump): Likewise for params "setcc", "jump".
(constprop_register): Likewise for param "insn".
(cprop_insn): Likewise.
(do_local_cprop): Likewise.
(local_cprop_pass): Likewise for local "insn".
(bypass_block): Likewise for params "setcc" and "jump".
(bypass_conditional_jumps): Likewise for locals "setcc" and
"insn".
(one_cprop_pass): Likewise for local "insn".
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214303 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cprop.c')
-rw-r--r-- | gcc/cprop.c | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/gcc/cprop.c b/gcc/cprop.c index 4234afabe5e..6d2615e8702 100644 --- a/gcc/cprop.c +++ b/gcc/cprop.c @@ -60,7 +60,7 @@ struct occr /* Next occurrence of this expression. */ struct occr *next; /* The insn that computes the expression. */ - rtx insn; + rtx_insn *insn; }; typedef struct occr *occr_t; @@ -154,7 +154,7 @@ cprop_alloc (unsigned long size) of INSN's basic block. */ static int -reg_available_p (const_rtx x, const_rtx insn ATTRIBUTE_UNUSED) +reg_available_p (const_rtx x, const rtx_insn *insn ATTRIBUTE_UNUSED) { return ! REGNO_REG_SET_P (reg_set_bitmap, REGNO (x)); } @@ -179,8 +179,8 @@ hash_mod (int regno, int hash_table_size) IMPLICIT is true if it's an implicit set, false otherwise. */ static void -insert_set_in_table (rtx dest, rtx src, rtx insn, struct hash_table_d *table, - bool implicit) +insert_set_in_table (rtx dest, rtx src, rtx_insn *insn, + struct hash_table_d *table, bool implicit) { bool found = false; unsigned int hash; @@ -264,7 +264,8 @@ cprop_constant_p (const_rtx x) IMPLICIT is true if it's an implicit set, false otherwise. */ static void -hash_scan_set (rtx set, rtx insn, struct hash_table_d *table, bool implicit) +hash_scan_set (rtx set, rtx_insn *insn, struct hash_table_d *table, + bool implicit) { rtx src = SET_SRC (set); rtx dest = SET_DEST (set); @@ -307,7 +308,7 @@ hash_scan_set (rtx set, rtx insn, struct hash_table_d *table, bool implicit) /* Process INSN and add hash table entries as appropriate. */ static void -hash_scan_insn (rtx insn, struct hash_table_d *table) +hash_scan_insn (rtx_insn *insn, struct hash_table_d *table) { rtx pat = PATTERN (insn); int i; @@ -372,7 +373,7 @@ dump_hash_table (FILE *file, const char *name, struct hash_table_d *table) /* Record as unavailable all registers that are DEF operands of INSN. */ static void -make_set_regs_unavailable (rtx insn) +make_set_regs_unavailable (rtx_insn *insn) { df_ref def; @@ -401,7 +402,7 @@ compute_hash_table_work (struct hash_table_d *table) FOR_EACH_BB_FN (bb, cfun) { - rtx insn; + rtx_insn *insn; /* Reset tables used to keep track of what's not yet invalid [since the end of the block]. */ @@ -521,7 +522,7 @@ reset_opr_set_tables (void) start of the basic block containing INSN]. */ static int -reg_not_set_p (const_rtx x, const_rtx insn ATTRIBUTE_UNUSED) +reg_not_set_p (const_rtx x, const rtx_insn *insn ATTRIBUTE_UNUSED) { return ! REGNO_REG_SET_P (reg_set_bitmap, REGNO (x)); } @@ -530,7 +531,7 @@ reg_not_set_p (const_rtx x, const_rtx insn ATTRIBUTE_UNUSED) This data is used by reg_not_set_p. */ static void -mark_oprs_set (rtx insn) +mark_oprs_set (rtx_insn *insn) { df_ref def; @@ -725,7 +726,7 @@ find_used_regs (rtx *xptr, void *data ATTRIBUTE_UNUSED) Return nonzero if successful. */ static int -try_replace_reg (rtx from, rtx to, rtx insn) +try_replace_reg (rtx from, rtx to, rtx_insn *insn) { rtx note = find_reg_equal_equiv_note (insn); rtx src = 0; @@ -799,7 +800,7 @@ try_replace_reg (rtx from, rtx to, rtx insn) NULL no such set is found. */ static struct expr * -find_avail_set (int regno, rtx insn) +find_avail_set (int regno, rtx_insn *insn) { /* SET1 contains the last set found that can be returned to the caller for use in a substitution. */ @@ -869,7 +870,7 @@ find_avail_set (int regno, rtx insn) if a change was made. */ static int -cprop_jump (basic_block bb, rtx setcc, rtx jump, rtx from, rtx src) +cprop_jump (basic_block bb, rtx_insn *setcc, rtx_insn *jump, rtx from, rtx src) { rtx new_rtx, set_src, note_src; rtx set = pc_set (jump); @@ -901,7 +902,7 @@ cprop_jump (basic_block bb, rtx setcc, rtx jump, rtx from, rtx src) setcc_src); } else - setcc = NULL_RTX; + setcc = NULL; new_rtx = simplify_replace_rtx (set_src, from, src); @@ -982,7 +983,7 @@ cprop_jump (basic_block bb, rtx setcc, rtx jump, rtx from, rtx src) it and INSN is the instruction where this will be happening. */ static int -constprop_register (rtx from, rtx src, rtx insn) +constprop_register (rtx from, rtx src, rtx_insn *insn) { rtx sset; @@ -1018,7 +1019,7 @@ constprop_register (rtx from, rtx src, rtx insn) Return nonzero if a change was made. */ static int -cprop_insn (rtx insn) +cprop_insn (rtx_insn *insn) { unsigned i; int changed = 0, changed_this_round; @@ -1158,7 +1159,7 @@ local_cprop_find_used_regs (rtx *xptr, void *data) /* Try to perform local const/copy propagation on X in INSN. */ static bool -do_local_cprop (rtx x, rtx insn) +do_local_cprop (rtx x, rtx_insn *insn) { rtx newreg = NULL, newcnst = NULL; @@ -1227,7 +1228,7 @@ static int local_cprop_pass (void) { basic_block bb; - rtx insn; + rtx_insn *insn; bool changed = false; unsigned i; @@ -1489,9 +1490,10 @@ reg_killed_on_edge (const_rtx reg, const_edge e) these inserted insns when performing its transformations. */ static int -bypass_block (basic_block bb, rtx setcc, rtx jump) +bypass_block (basic_block bb, rtx_insn *setcc, rtx_insn *jump) { - rtx insn, note; + rtx_insn *insn; + rtx note; edge e, edest; int change; int may_be_loop_header = false; @@ -1657,8 +1659,8 @@ bypass_conditional_jumps (void) { basic_block bb; int changed; - rtx setcc; - rtx insn; + rtx_insn *setcc; + rtx_insn *insn; rtx dest; /* Note we start at block 1. */ @@ -1675,7 +1677,7 @@ bypass_conditional_jumps (void) /* Check for more than one predecessor. */ if (!single_pred_p (bb)) { - setcc = NULL_RTX; + setcc = NULL; FOR_BB_INSNS (bb, insn) if (DEBUG_INSN_P (insn)) continue; @@ -1823,7 +1825,7 @@ one_cprop_pass (void) if (set_hash_table.n_elems > 0) { basic_block bb; - rtx insn; + rtx_insn *insn; alloc_cprop_mem (last_basic_block_for_fn (cfun), set_hash_table.n_elems); |