diff options
| author | geoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-17 07:46:49 +0000 |
|---|---|---|
| committer | geoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-17 07:46:49 +0000 |
| commit | f0874fc3634475bd4337928f0dcf3a7c02eeb7a1 (patch) | |
| tree | 390dbdb10bedab490d434c7af0fe7cd3ed62c00b /gcc | |
| parent | 71cd80961f6f2230ff873dcd39fef4fa0882f14b (diff) | |
| download | ppe42-gcc-f0874fc3634475bd4337928f0dcf3a7c02eeb7a1.tar.gz ppe42-gcc-f0874fc3634475bd4337928f0dcf3a7c02eeb7a1.zip | |
* cfgrtl.c (try_redirect_by_replacing_jump): Optimize tablejumps
even after reload, just don't remove the actual jump tables.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76028 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/cfgrtl.c | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 47112590d00..b039e860ee2 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 c1b17455345..9bf10f5fd8c 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)); |

