(split_edge): Handle casesi insns.
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Oct 1999 12:45:22 +0000 (12:45 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Oct 1999 12:45:22 +0000 (12:45 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30101 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/flow.c

index de82cea..76ca2b9 100644 (file)
@@ -4,6 +4,7 @@ Wed Oct 20 10:46:41 1999  Richard Earnshaw (rearnsha@arm.com)
 
        * flow.c (merge_blocks_move_predecessor_nojumps): Re-order the basic
        block records so that merge_blocks_nomove will clean up correctly.
+       (split_edge): Handle casesi insns.
 
 Tue Oct 19 23:43:50 1999  Jeffrey A Law  (law@cygnus.com)
 
index fcefe0a..0990bd0 100644 (file)
@@ -1484,6 +1484,19 @@ split_edge (edge_in)
                --LABEL_NUSES (old_label);
                ++LABEL_NUSES (new_label);
              }
+
+         /* Handle casesi dispatch insns */
+         if ((tmp = single_set (insn)) != NULL
+             && SET_DEST (tmp) == pc_rtx
+             && GET_CODE (SET_SRC (tmp)) == IF_THEN_ELSE
+             && GET_CODE (XEXP (SET_SRC (tmp), 2)) == LABEL_REF
+             && XEXP (XEXP (SET_SRC (tmp), 2), 0) == old_label)
+           {
+             XEXP (SET_SRC (tmp), 2) = gen_rtx_LABEL_REF (VOIDmode, 
+                                                          new_label);
+             --LABEL_NUSES (old_label);
+             ++LABEL_NUSES (new_label);
+           }
        }
       else
        {