* cfgcleanup.c (try_optimize_cfg): Do not merge across jumptables.
authorJan Hubicka <jh@suse.cz>
Wed, 26 May 2004 22:30:19 +0000 (00:30 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 26 May 2004 22:30:19 +0000 (22:30 +0000)
From-SVN: r82296

gcc/ChangeLog
gcc/cfgcleanup.c

index 1fad8d51b1fb00381963e5a459a5e8131eca3160..167feba2e2f9822e4941bbe6e5007be6ddb6ba1e 100644 (file)
@@ -1,3 +1,7 @@
+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.
@@ -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>
 
index 10d9e96c13506e6f36c6685793bf203ba96d55d5..9801b57028449a7ec8c85cda53141bd66c09eaf7 100644 (file)
@@ -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;