diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-05-30 13:29:51 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-05-30 13:29:51 +0000 |
commit | 4122c2d468cf0f8912ac09c67c4aec14347bfda1 (patch) | |
tree | c2daa0843ce51836927c876cdf0efada31c93249 /gcc/tree-cfg.c | |
parent | e44348b5a67cb32a21fd5dd2250eee8ed4f997c5 (diff) | |
download | gcc-4122c2d468cf0f8912ac09c67c4aec14347bfda1.tar.gz |
* tree-scalar-evolution.c (scev_const_prop): Do not create labels.
* tree-ssa-sink.c (statement_sink_location): Return basic block and
bsi of the location where statements should be inserted.
(sink_code_in_bb): Take bsi from statement_sink_location.
* lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use bsi_after_labels
instead of bsi_start.
* tree-profile.c (tree_gen_ic_func_profiler): Pass BSI_NEW_STMT to
bsi_insert_after.
* tree-cfg.c (bsi_move_after): Pass BSI_NEW_STMT to bsi_insert_after.
(bsi_move_before): Document inconsistency with bsi_move_after.
(tree_redirect_edge_and_branch): Do not create labels if not necessary.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125181 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 83ab930d935..7bd4496cf83 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -2776,7 +2776,9 @@ bsi_move_after (block_stmt_iterator *from, block_stmt_iterator *to) { tree stmt = bsi_stmt (*from); bsi_remove (from, false); - bsi_insert_after (to, stmt, BSI_SAME_STMT); + /* We must have BSI_NEW_STMT here, as bsi_move_after is sometimes used to + move statements to an empty block. */ + bsi_insert_after (to, stmt, BSI_NEW_STMT); } @@ -2787,6 +2789,9 @@ bsi_move_before (block_stmt_iterator *from, block_stmt_iterator *to) { tree stmt = bsi_stmt (*from); bsi_remove (from, false); + /* For consistency with bsi_move_after, it might be better to have + BSI_NEW_STMT here; however, that breaks several places that expect + that TO does not change. */ bsi_insert_before (to, stmt, BSI_SAME_STMT); } @@ -3993,7 +3998,7 @@ tree_redirect_edge_and_branch (edge e, basic_block dest) basic_block bb = e->src; block_stmt_iterator bsi; edge ret; - tree label, stmt; + tree stmt; if (e->flags & EDGE_ABNORMAL) return NULL; @@ -4005,8 +4010,6 @@ tree_redirect_edge_and_branch (edge e, basic_block dest) if (e->dest == dest) return NULL; - label = tree_block_label (dest); - bsi = bsi_last (bb); stmt = bsi_end_p (bsi) ? NULL : bsi_stmt (bsi); @@ -4024,6 +4027,7 @@ tree_redirect_edge_and_branch (edge e, basic_block dest) case SWITCH_EXPR: { tree cases = get_cases_for_edge (e, stmt); + tree label = tree_block_label (dest); /* If we have a list of cases associated with E, then use it as it's a lot faster than walking the entire case vector. */ |