gcc/
        * reorg.c (redundant_insn): In two places in the function, replace
        a check of GET_CODE with a dyn_cast, introducing local "seq", and
        usings methods of rtx_sequence to clarify the code.
---
 gcc/reorg.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/gcc/reorg.c b/gcc/reorg.c
index 75819bc..3894863 100644
--- a/gcc/reorg.c
+++ b/gcc/reorg.c
@@ -1526,11 +1526,11 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
       if (GET_CODE (pat) == USE || GET_CODE (pat) == CLOBBER)
        continue;
 
-      if (GET_CODE (pat) == SEQUENCE)
+      if (rtx_sequence *seq = dyn_cast <rtx_sequence *> (pat))
        {
          /* Stop for a CALL and its delay slots because it is difficult to
             track its resource needs correctly.  */
-         if (CALL_P (XVECEXP (pat, 0, 0)))
+         if (CALL_P (seq->element (0)))
            return 0;
 
          /* Stop for an INSN or JUMP_INSN with delayed effects and its delay
@@ -1538,21 +1538,21 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
             correctly.  */
 
 #ifdef INSN_SETS_ARE_DELAYED
-         if (INSN_SETS_ARE_DELAYED (XVECEXP (pat, 0, 0)))
+         if (INSN_SETS_ARE_DELAYED (seq->element (0)))
            return 0;
 #endif
 
 #ifdef INSN_REFERENCES_ARE_DELAYED
-         if (INSN_REFERENCES_ARE_DELAYED (XVECEXP (pat, 0, 0)))
+         if (INSN_REFERENCES_ARE_DELAYED (seq->element (0)))
            return 0;
 #endif
 
          /* See if any of the insns in the delay slot match, updating
             resource requirements as we go.  */
-         for (i = XVECLEN (pat, 0) - 1; i > 0; i--)
-           if (GET_CODE (XVECEXP (pat, 0, i)) == GET_CODE (insn)
-               && rtx_equal_p (PATTERN (XVECEXP (pat, 0, i)), ipat)
-               && ! find_reg_note (XVECEXP (pat, 0, i), REG_UNUSED, NULL_RTX))
+         for (i = seq->len () - 1; i > 0; i--)
+           if (GET_CODE (seq->element (i)) == GET_CODE (insn)
+               && rtx_equal_p (PATTERN (seq->element (i)), ipat)
+               && ! find_reg_note (seq->element (i), REG_UNUSED, NULL_RTX))
              break;
 
          /* If found a match, exit this loop early.  */
@@ -1628,10 +1628,10 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
       if (GET_CODE (pat) == USE || GET_CODE (pat) == CLOBBER)
        continue;
 
-      if (GET_CODE (pat) == SEQUENCE)
+      if (rtx_sequence *seq = dyn_cast <rtx_sequence *> (pat))
        {
          bool annul_p = false;
-          rtx control = XVECEXP (pat, 0, 0);
+          rtx control = seq->element (0);
 
          /* If this is a CALL_INSN and its delay slots, it is hard to track
             the resource needs properly, so give up.  */
@@ -1656,9 +1656,9 @@ redundant_insn (rtx insn, rtx target, rtx delay_list)
 
          /* See if any of the insns in the delay slot match, updating
             resource requirements as we go.  */
-         for (i = XVECLEN (pat, 0) - 1; i > 0; i--)
+         for (i = seq->len () - 1; i > 0; i--)
            {
-             rtx candidate = XVECEXP (pat, 0, i);
+             rtx candidate = seq->element (i);
 
              /* If an insn will be annulled if the branch is false, it isn't
                 considered as a possible duplicate insn.  */
-- 
1.8.5.3

Reply via email to