summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfgcleanup.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1fad8d51b1f..167feba2e2f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2004-05-27 Jan Hubicka <jh@suse.cz>
+ * cfgcleanup.c (try_optimize_cfg): Do not merge across jumptables.
+
+2004-05-27 Jan Hubicka <jh@suse.cz>
+
* i386.md (UNSPECV_EH_RETURN): Kill.
(eh_return): Use jump_insn.
(eh_return_si, eh_return_di): Change pattern to jump instruction.
@@ -8,7 +12,6 @@
* cfgcleanup.c (try_forward_edges): Do not check loop structure when
not loop optimizing.
- (try_optimize_cfg): Do not merge across jumptables.
2004-05-26 Jan Hubicka <jh@suse.cz>
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 10d9e96c135..9801b570284 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -1938,7 +1938,9 @@ try_optimize_cfg (int mode)
&& (GET_CODE (BB_END (b)) != JUMP_INSN
|| (reload_completed
? simplejump_p (BB_END (b))
- : onlyjump_p (BB_END (b))))
+ : (onlyjump_p (BB_END (b))
+ && !tablejump_p (BB_END (b),
+ NULL, NULL))))
&& (next = merge_blocks_move (s, b, c, mode)))
{
b = next;