aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog1
-rw-r--r--gcc/flow.c13
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index de82cea..76ca2b9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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)
diff --git a/gcc/flow.c b/gcc/flow.c
index fcefe0a..0990bd0 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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
{