aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@apple.com>2004-01-17 07:46:49 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2004-01-17 07:46:49 +0000
commitab530ea8b8d089c3e11eb054b8e5680540ca0203 (patch)
tree390dbdb10bedab490d434c7af0fe7cd3ed62c00b /gcc
parent53dd3be37fbb18aa5d4be96f40c34b19d6634a91 (diff)
downloadgcc-ab530ea8b8d089c3e11eb054b8e5680540ca0203.zip
gcc-ab530ea8b8d089c3e11eb054b8e5680540ca0203.tar.gz
gcc-ab530ea8b8d089c3e11eb054b8e5680540ca0203.tar.bz2
cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps even after reload, just don't remove the actual jump tables.
* cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps even after reload, just don't remove the actual jump tables. From-SVN: r76028
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cfgrtl.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4711259..b039e86 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-01-16 Geoffrey Keating <geoffk@apple.com>
+
+ * cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps
+ even after reload, just don't remove the actual jump tables.
+
2004-01-17 J. Brobecker <brobecker@gnat.com>
* dwarf2out.c (is_subrange_type): Renamed from is_ada_subrange_type().
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index c1b1745..9bf10f5 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -703,7 +703,7 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout)
if (tmp || !onlyjump_p (insn))
return false;
- if ((!optimize || reload_completed) && tablejump_p (insn, NULL, NULL))
+ if ((!optimize || flow2_completed) && tablejump_p (insn, NULL, NULL))
return false;
/* Avoid removing branch with side effects. */
@@ -793,7 +793,7 @@ try_redirect_by_replacing_jump (edge e, basic_block target, bool in_cfglayout)
/* Recognize a tablejump that we are converting to a
simple jump and remove its associated CODE_LABEL
and ADDR_VEC or ADDR_DIFF_VEC. */
- if (tablejump_p (insn, &label, &table))
+ if (! reload_completed && tablejump_p (insn, &label, &table))
delete_insn_chain (label, table);
barrier = next_nonnote_insn (BB_END (src));