diff options
author | Jan Hubicka <jh@suse.cz> | 2002-05-02 19:51:48 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-05-02 17:51:48 +0000 |
commit | 1b6763cfb592988efc9ee945479d35ca657bbf4e (patch) | |
tree | 3584a25f602ea6b06f29196faa368726a894e5db /gcc/cfgrtl.c | |
parent | 16034e4ba3fd9c4e07b00499535b606b781f80b7 (diff) | |
download | gcc-1b6763cfb592988efc9ee945479d35ca657bbf4e.zip gcc-1b6763cfb592988efc9ee945479d35ca657bbf4e.tar.gz gcc-1b6763cfb592988efc9ee945479d35ca657bbf4e.tar.bz2 |
cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed jumps post reload.
* cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed
jumps post reload.
* toplev.c (rest_of_compilation): Revert Richard's patch.
From-SVN: r53052
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r-- | gcc/cfgrtl.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index f5a82383..3fcd8a4 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -713,7 +713,7 @@ try_redirect_by_replacing_jump (e, target) basic_block src = e->src; rtx insn = src->end, kill_from; edge tmp; - rtx set; + rtx set, table; int fallthru = 0; /* Verify that all targets will be TARGET. */ @@ -723,6 +723,12 @@ try_redirect_by_replacing_jump (e, target) if (tmp || !onlyjump_p (insn)) return false; + 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 + || GET_CODE (PATTERN (table)) == ADDR_DIFF_VEC)) + return false; /* Avoid removing branch with side effects. */ set = single_set (insn); |