diff options
author | Richard Henderson <rth@redhat.com> | 2003-07-18 14:33:36 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2003-07-18 14:33:36 -0700 |
commit | 790199856aab807f3810413867f739c702c6a3e9 (patch) | |
tree | 1ccec1956d15f6572d3371b13f7ca67d192d41c9 /gcc | |
parent | cecc892aea3942bff3009a3573ca46d7862e116e (diff) | |
download | gcc-790199856aab807f3810413867f739c702c6a3e9.zip gcc-790199856aab807f3810413867f739c702c6a3e9.tar.gz gcc-790199856aab807f3810413867f739c702c6a3e9.tar.bz2 |
cfgrtl.c (force_nonfallthru_and_redirect): Use tablejump_p to skip the addr_vec.
* cfgrtl.c (force_nonfallthru_and_redirect): Use tablejump_p
to skip the addr_vec.
From-SVN: r69569
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 17 |
2 files changed, 12 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 644da7b..0b711da 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-07-18 Richard Henderson <rth@redhat.com> + + * cfgrtl.c (force_nonfallthru_and_redirect): Use tablejump_p + to skip the addr_vec. + Fri Jul 18 15:22:28 2003 Alexandre Oliva <aoliva@redhat.com> * combine.c (combinable_i3pat): Don't forbid occurrences of diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index d197b79..903f57e 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -1036,19 +1036,16 @@ force_nonfallthru_and_redirect (edge e, basic_block target) { /* Create the new structures. */ + /* If the old block ended with a tablejump, skip its table + by searching forward from there. Otherwise start searching + forward from the last instruction of the old block. */ + if (!tablejump_p (e->src->end, NULL, ¬e)) + note = e->src->end; + /* Position the new block correctly relative to loop notes. */ - note = last_loop_beg_note (e->src->end); + note = last_loop_beg_note (note); note = NEXT_INSN (note); - /* ... and ADDR_VECs. */ - if (note != NULL - && GET_CODE (note) == CODE_LABEL - && NEXT_INSN (note) - && GET_CODE (NEXT_INSN (note)) == JUMP_INSN - && (GET_CODE (PATTERN (NEXT_INSN (note))) == ADDR_DIFF_VEC - || GET_CODE (PATTERN (NEXT_INSN (note))) == ADDR_VEC)) - note = NEXT_INSN (NEXT_INSN (note)); - jump_block = create_basic_block (note, NULL, e->src); jump_block->count = e->count; jump_block->frequency = EDGE_FREQUENCY (e); |