+Thu May 2 19:50:04 CEST 2002 Jan Hubicka <jh@suse.cz>
+
+ * cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed
+ jumps post reload.
+ * toplev.c (rest_of_compilation): Revert Richard's patch.
+
2001-05-02 John David Anglin <dave@hiauly1.hia.nrc.ca>
* pa/x-ada (ADA_CFLAGS): Rename to X_ADA_CFLAGS.
basic_block src = e->src;
rtx insn = src->end, kill_from;
edge tmp;
- rtx set;
+ rtx set, table;
int fallthru = 0;
/* Verify that all targets will be TARGET. */
if (tmp || !onlyjump_p (insn))
return false;
+ if (reload_completed && JUMP_LABEL (insn)
+ && (table = NEXT_INSN (JUMP_LABEL (insn))) != NULL_RTX
+ && GET_CODE (table) == JUMP_INSN
+ && (GET_CODE (PATTERN (table)) == ADDR_VEC
+ || GET_CODE (PATTERN (table)) == ADDR_DIFF_VEC))
+ return false;
/* Avoid removing branch with side effects. */
set = single_set (insn);
splitting possibly introduced more crossjumping oppurtuntities.
Except that we can't actually run crossjumping without running
another DCE pass, which we can't do after reg-stack. */
- cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_POST_REGSTACK);
+ cleanup_cfg (CLEANUP_EXPENSIVE | CLEANUP_POST_REGSTACK
+ | (flag_crossjumping ? CLEANUP_CROSSJUMP : 0));
if (flag_reorder_blocks)
{
reorder_basic_blocks ();