From: David Malcolm Date: Fri, 22 Aug 2014 00:36:14 +0000 (+0000) Subject: cprop.c: Use rtx_insn X-Git-Tag: upstream/12.2.0~60980 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=997c5639d4f60fca76921e989ca4347770245649;p=platform%2Fupstream%2Fgcc.git cprop.c: Use rtx_insn gcc/ 2014-08-22 David Malcolm * 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". From-SVN: r214303 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 321bd36..6d91da0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,30 @@ 2014-08-22 David Malcolm + * 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". + +2014-08-22 David Malcolm + * compare-elim.c (struct comparison_use): Strengthen field "insn" from rtx to rtx_insn *. (struct comparison): Likewise, also for field "prev_clobber". diff --git a/gcc/cprop.c b/gcc/cprop.c index 4234afa..6d2615e 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);