diff options
| -rw-r--r-- | gcc/ChangeLog | 1 | ||||
| -rw-r--r-- | gcc/flow.c | 13 |
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) @@ -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 { |
