diff options
author | David Malcolm <dmalcolm@redhat.com> | 2014-09-09 15:10:39 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2014-09-09 15:10:39 +0000 |
commit | 0cc97fc5522a17788b0d47550f37d592ffca56ff (patch) | |
tree | 9fc7a0c191becf6398b01c789e1d25eaa063ba97 /gcc/lra-constraints.c | |
parent | fcad3635f9cc635ebdd1f5b7ae2cd1586ac4511c (diff) | |
download | gcc-0cc97fc5522a17788b0d47550f37d592ffca56ff.zip gcc-0cc97fc5522a17788b0d47550f37d592ffca56ff.tar.gz gcc-0cc97fc5522a17788b0d47550f37d592ffca56ff.tar.bz2 |
struct ira_reg_equiv_s's "init_insns" is an rtx_insn_list
gcc/ChangeLog:
2014-09-09 David Malcolm <dmalcolm@redhat.com>
* ira.c (ira_update_equiv_info_by_shuffle_insn): Use NULL rather
than NULL_RTX.
(no_equiv): Likewise.
(update_equiv_regs): Likewise.
(setup_reg_equiv): Likewise. Strengthen locals "elem",
"prev_elem", "next_elem" from rtx to rtx_insn_list *, and "insn"
from rtx to rtx_insn *. Use methods of "elem" for typesafety and
clarity.
* ira.h (struct ira_reg_equiv_s): Strengthen field "init_insns"
from rtx to rtx_insn_list *.
* lra-assigns.c (spill_for): Strengthen local "x" from rtx to
rtx_insn_list * and use methods for clarity and typesafety.
* lra-constraints.c (contains_deleted_insn_p): Likewise for param
"list".
(init_insn_rhs_dead_pseudo_p): Likewise for local "insns". Remove
redundant check on INSN_P (insns): this cannot hold, as "insns" is
an INSN_LIST, not an insn.
(reverse_equiv_p): Strengthen local "insns" from rtx to
rtx_insn_list * and use methods for clarity and typesafety.
(contains_reloaded_insn_p): Likewise for local "list".
From-SVN: r215082
Diffstat (limited to 'gcc/lra-constraints.c')
-rw-r--r-- | gcc/lra-constraints.c | 33 |
1 files changed, 16 insertions, 17 deletions
diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index b038527..d5287d1 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -3897,11 +3897,11 @@ multi_block_pseudo_p (int regno) /* Return true if LIST contains a deleted insn. */ static bool -contains_deleted_insn_p (rtx list) +contains_deleted_insn_p (rtx_insn_list *list) { - for (; list != NULL_RTX; list = XEXP (list, 1)) - if (NOTE_P (XEXP (list, 0)) - && NOTE_KIND (XEXP (list, 0)) == NOTE_INSN_DELETED) + for (; list != NULL_RTX; list = list->next ()) + if (NOTE_P (list->insn ()) + && NOTE_KIND (list->insn ()) == NOTE_INSN_DELETED) return true; return false; } @@ -3952,14 +3952,12 @@ insn_rhs_dead_pseudo_p (rtx insn) static bool init_insn_rhs_dead_pseudo_p (int regno) { - rtx insns = ira_reg_equiv[regno].init_insns; + rtx_insn_list *insns = ira_reg_equiv[regno].init_insns; if (insns == NULL) return false; - if (INSN_P (insns)) - return insn_rhs_dead_pseudo_p (insns); - for (; insns != NULL_RTX; insns = XEXP (insns, 1)) - if (insn_rhs_dead_pseudo_p (XEXP (insns, 0))) + for (; insns != NULL_RTX; insns = insns->next ()) + if (insn_rhs_dead_pseudo_p (insns->insn ())) return true; return false; } @@ -3970,14 +3968,15 @@ init_insn_rhs_dead_pseudo_p (int regno) static bool reverse_equiv_p (int regno) { - rtx insns, set; + rtx_insn_list *insns = ira_reg_equiv[regno].init_insns; + rtx set; - if ((insns = ira_reg_equiv[regno].init_insns) == NULL_RTX) + if (insns == NULL) return false; - if (! INSN_P (XEXP (insns, 0)) - || XEXP (insns, 1) != NULL_RTX) + if (! INSN_P (insns->insn ()) + || insns->next () != NULL) return false; - if ((set = single_set (XEXP (insns, 0))) == NULL_RTX) + if ((set = single_set (insns->insn ())) == NULL_RTX) return false; return REG_P (SET_SRC (set)) && (int) REGNO (SET_SRC (set)) == regno; } @@ -3988,10 +3987,10 @@ static bool contains_reloaded_insn_p (int regno) { rtx set; - rtx list = ira_reg_equiv[regno].init_insns; + rtx_insn_list *list = ira_reg_equiv[regno].init_insns; - for (; list != NULL_RTX; list = XEXP (list, 1)) - if ((set = single_set (XEXP (list, 0))) == NULL_RTX + for (; list != NULL; list = list->next ()) + if ((set = single_set (list->insn ())) == NULL_RTX || ! REG_P (SET_DEST (set)) || (int) REGNO (SET_DEST (set)) != regno) return true; |