]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
arc.c (arc_ccfsm_post_advance): Also handle TYPE_UNCOND_BRANCH.
authorJoern Rennecke <joern.rennecke@embecosm.com>
Thu, 24 Oct 2013 17:11:01 +0000 (17:11 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Thu, 24 Oct 2013 17:11:01 +0000 (18:11 +0100)
        * gcc/config/arc/arc.c (arc_ccfsm_post_advance): Also handle
        TYPE_UNCOND_BRANCH.

From-SVN: r204024

gcc/ChangeLog
gcc/config/arc/arc.c

index ca9aa76cc0a48676f2bd043ff864432db37f8450..346fa5403d98dcae31cd572d27dcf3b5faab330a 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-24  Joern Rennecke  <joern.rennecke@embecosm.com>
+
+       * gcc/config/arc/arc.c (arc_ccfsm_post_advance): Also handle
+       TYPE_UNCOND_BRANCH.
+
 2013-08-24  Tobias Burnus  <burnus@net-b.de>
 
        PR other/33426
index 83f92ebb7a9226feb093e2d9123727119ba50d8b..7c39d53926d9e0132a946f91dd8290caa9f5634e 100644 (file)
@@ -3711,12 +3711,16 @@ arc_ccfsm_record_condition (rtx cond, bool reverse, rtx jump,
 static void
 arc_ccfsm_post_advance (rtx insn, struct arc_ccfsm *state)
 {
+  enum attr_type type;
+
   if (LABEL_P (insn))
     arc_ccfsm_at_label ("L", CODE_LABEL_NUMBER (insn), state);
   else if (JUMP_P (insn)
           && GET_CODE (PATTERN (insn)) != ADDR_VEC
           && GET_CODE (PATTERN (insn)) != ADDR_DIFF_VEC
-          && get_attr_type (insn) == TYPE_BRANCH)
+          && ((type = get_attr_type (insn)) == TYPE_BRANCH
+              || (type == TYPE_UNCOND_BRANCH
+                  && ARC_CCFSM_BRANCH_DELETED_P (state))))
     {
       if (ARC_CCFSM_BRANCH_DELETED_P (state))
        ARC_CCFSM_RECORD_BRANCH_DELETED (state);
@@ -8120,6 +8124,7 @@ arc_ifcvt (void)
            basic_block succ_bb
              = BLOCK_FOR_INSN (NEXT_INSN (NEXT_INSN (PREV_INSN (insn))));
            arc_ccfsm_post_advance (insn, statep);
+           gcc_assert (!IN_RANGE (statep->state, 1, 2));
            rtx seq = NEXT_INSN (PREV_INSN (insn));
            if (seq != insn)
              {