aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgrtl.c
diff options
context:
space:
mode:
authorMark Mitchell <mmitchel@gcc.gnu.org>2003-04-18 22:04:12 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2003-04-18 22:04:12 +0000
commiteb5b8ad45266c93579c52f90f5068018b52fc073 (patch)
tree8a7d66866505ff2c9c7d75e08fed7806a7ccda4e /gcc/cfgrtl.c
parent3e378f1467a51b8f8e8a4650c7947f9e2cef2fac (diff)
downloadgcc-eb5b8ad45266c93579c52f90f5068018b52fc073.zip
gcc-eb5b8ad45266c93579c52f90f5068018b52fc073.tar.gz
gcc-eb5b8ad45266c93579c52f90f5068018b52fc073.tar.bz2
cfgrtl.c (try_redirect_by_replacing_jump): Create a basic block for orphaned jump tables.
* cfgrtl.c (try_redirect_by_replacing_jump): Create a basic block for orphaned jump tables. From-SVN: r65792
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r--gcc/cfgrtl.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 394632c..654d3e3 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -731,7 +731,7 @@ try_redirect_by_replacing_jump (e, target)
else
{
rtx target_label = block_label (target);
- rtx barrier;
+ rtx barrier, label, table;
emit_jump_insn_after (gen_jump (target_label), insn);
JUMP_LABEL (src->end) = target_label;
@@ -744,6 +744,9 @@ try_redirect_by_replacing_jump (e, target)
table will be removed later, if it is no longer needed. */
delete_insn_chain (kill_from, insn);
+ if (tablejump_p (insn, &label, &table))
+ create_basic_block (label, table, src);
+
barrier = next_nonnote_insn (src->end);
if (!barrier || GET_CODE (barrier) != BARRIER)
emit_barrier_after (src->end);