diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-04 21:31:43 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-03-04 21:31:43 +0000 |
commit | adee86a00b4d598b6499b4c64ca73a7b4447587a (patch) | |
tree | c75dac8af5f667f1bb5695a19d09e79c5e0d96a7 /gcc/cfgrtl.c | |
parent | 0fe680424fb94569ab446264f5280c9ba859dabd (diff) | |
download | gcc-adee86a00b4d598b6499b4c64ca73a7b4447587a.tar.gz |
* reload.c (find_reloads): Reorganize if seqeunce to switch.
* cfgrtl.c (rtl_redirect_edge_and_branch): Set the source BB as dirty.
(cfglayout_redirect_edge_and_branch): Set the source BB as dirty.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78936 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r-- | gcc/cfgrtl.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 35d7c9ebe1b..3363a2d9720 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -933,6 +933,8 @@ redirect_branch_edge (edge e, basic_block target) static bool rtl_redirect_edge_and_branch (edge e, basic_block target) { + basic_block src = e->src; + if (e->flags & (EDGE_ABNORMAL_CALL | EDGE_EH)) return false; @@ -940,11 +942,15 @@ rtl_redirect_edge_and_branch (edge e, basic_block target) return true; if (try_redirect_by_replacing_jump (e, target, false)) - return true; + { + src->flags |= BB_DIRTY; + return true; + } if (!redirect_branch_edge (e, target)) return false; + src->flags |= BB_DIRTY; return true; } @@ -2379,7 +2385,10 @@ cfg_layout_redirect_edge_and_branch (edge e, basic_block dest) if (e->src != ENTRY_BLOCK_PTR && try_redirect_by_replacing_jump (e, dest, true)) - return true; + { + src->flags |= BB_DIRTY; + return true; + } if (e->src == ENTRY_BLOCK_PTR && (e->flags & EDGE_FALLTHRU) && !(e->flags & EDGE_COMPLEX)) @@ -2388,6 +2397,7 @@ cfg_layout_redirect_edge_and_branch (edge e, basic_block dest) fprintf (dump_file, "Redirecting entry edge from bb %i to %i\n", e->src->index, dest->index); + e->src->flags |= BB_DIRTY; redirect_edge_succ (e, dest); return true; } @@ -2411,6 +2421,7 @@ cfg_layout_redirect_edge_and_branch (edge e, basic_block dest) if (!redirect_branch_edge (e, dest)) abort (); e->flags |= EDGE_FALLTHRU; + e->src->flags |= BB_DIRTY; return true; } /* In case we are redirecting fallthru edge to the branch edge @@ -2438,6 +2449,7 @@ cfg_layout_redirect_edge_and_branch (edge e, basic_block dest) if (simplejump_p (BB_END (src))) abort (); + src->flags |= BB_DIRTY; return ret; } |