diff options
author | David Malcolm <dmalcolm@redhat.com> | 2014-09-05 15:03:12 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2014-09-05 15:03:12 +0000 |
commit | 45700b6a428bafde0fae9b67dd494f3cac3d9bf0 (patch) | |
tree | 78e89d9c20913bed55767228b2eb82d0c97720b6 | |
parent | 96b7041496d08ec15ac4eec2632738023cfc7452 (diff) | |
download | gcc-45700b6a428bafde0fae9b67dd494f3cac3d9bf0.zip gcc-45700b6a428bafde0fae9b67dd494f3cac3d9bf0.tar.gz gcc-45700b6a428bafde0fae9b67dd494f3cac3d9bf0.tar.bz2 |
Simplification within reorg.c
gcc/ChangeLog:
2014-09-05 David Malcolm <dmalcolm@redhat.com>
* reorg.c (relax_delay_slots): Move declaration of "trial_seq"
above the conditional, and convert the check on GET_CODE to a
dyn_cast, so that "trial_seq" is available as an rtx_sequence * in
the conditional. Simplify the conditional by using methods of
"trial_seq".
From-SVN: r214969
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/reorg.c | 13 |
2 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e0eca46..1929990 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,13 @@ 2014-09-05 David Malcolm <dmalcolm@redhat.com> + * reorg.c (relax_delay_slots): Move declaration of "trial_seq" + above the conditional, and convert the check on GET_CODE to a + dyn_cast, so that "trial_seq" is available as an rtx_sequence * in + the conditional. Simplify the conditional by using methods of + "trial_seq". + +2014-09-05 David Malcolm <dmalcolm@redhat.com> + * haifa-sched.c (check_clobbered_conditions): Strengthen local "link" from rtx to rtx_insn_list *, and use its methods for clarity and type-safety. diff --git a/gcc/reorg.c b/gcc/reorg.c index 89d500d..7bacc6d 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -3385,13 +3385,14 @@ relax_delay_slots (rtx_insn *first) /* Similarly, if it is an unconditional jump with one insn in its delay list and that insn is redundant, thread the jump. */ - if (trial && GET_CODE (PATTERN (trial)) == SEQUENCE - && XVECLEN (PATTERN (trial), 0) == 2 - && JUMP_P (XVECEXP (PATTERN (trial), 0, 0)) - && simplejump_or_return_p (XVECEXP (PATTERN (trial), 0, 0)) - && redundant_insn (XVECEXP (PATTERN (trial), 0, 1), insn, 0)) + rtx_sequence *trial_seq = + trial ? dyn_cast <rtx_sequence *> (PATTERN (trial)) : NULL; + if (trial_seq + && trial_seq->len () == 2 + && JUMP_P (trial_seq->insn (0)) + && simplejump_or_return_p (trial_seq->insn (0)) + && redundant_insn (trial_seq->insn (1), insn, 0)) { - rtx_sequence *trial_seq = as_a <rtx_sequence *> (PATTERN (trial)); target_label = JUMP_LABEL (trial_seq->insn (0)); if (ANY_RETURN_P (target_label)) target_label = find_end_label (target_label); |