|
|
This patch is taken from http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11350 jsaw
===================================================================
RCS file: /cvs/gcc/gcc/gcc/ChangeLog,v retrieving revision 1.16114.2.883 retrieving revision 1.16114.2.884 diff -u -r1.16114.2.883 -r1.16114.2.884
--- gcc/gcc/ChangeLog 2004/01/15 20:21:31 1.16114.2.883
+++ gcc/gcc/ChangeLog 2004/01/16 11:06:57 1.16114.2.884
@@ -1,3 +1,10 @@
+2004-01-16 Jan Hubicka <jh@suse.cz>
+
+ PR opt/11350
+ * cfgcleanup.c (try_optimize_cfg): Suppress tablejump removal
+ after reload.
+ * cfgrtl.c (try_redirect_by_replacing_branch): Likewise.
+
2004-01-15 J"orn Rennecke <joern.rennecke@superh.com> PR optimization/10392 ===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgcleanup.c,v retrieving revision 1.68.2.9 retrieving revision 1.68.2.10 diff -u -r1.68.2.9 -r1.68.2.10
--- gcc/gcc/cfgcleanup.c 2004/01/01 13:19:39 1.68.2.9
+++ gcc/gcc/cfgcleanup.c 2004/01/16 11:07:16 1.68.2.10
@@ -1704,7 +1704,7 @@
/* If the jump insn has side effects, we can't kill the edge. */ && (GET_CODE (b->end) != JUMP_INSN - || (flow2_completed
+ || (reload_completed
? simplejump_p (b->end) : onlyjump_p (b->end))) && merge_blocks (s, b, c, mode)) ===================================================================
RCS file: /cvs/gcc/gcc/gcc/cfgrtl.c,v retrieving revision 1.61.2.13 retrieving revision 1.61.2.14 diff -u -r1.61.2.13 -r1.61.2.14
--- gcc/gcc/cfgrtl.c 2003/12/03 07:00:29 1.61.2.13
+++ gcc/gcc/cfgrtl.c 2004/01/16 11:07:17 1.61.2.14
@@ -688,7 +688,7 @@
if (tmp || !onlyjump_p (insn)) return false; - if (flow2_completed && JUMP_LABEL (insn)
+ 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
|