aboutsummaryrefslogtreecommitdiff
path: root/gcc/reorg.c
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2014-09-05 15:03:12 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2014-09-05 15:03:12 +0000
commit45700b6a428bafde0fae9b67dd494f3cac3d9bf0 (patch)
tree78e89d9c20913bed55767228b2eb82d0c97720b6 /gcc/reorg.c
parent96b7041496d08ec15ac4eec2632738023cfc7452 (diff)
downloadgcc-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
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r--gcc/reorg.c13
1 files changed, 7 insertions, 6 deletions
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);