From 4122c2d468cf0f8912ac09c67c4aec14347bfda1 Mon Sep 17 00:00:00 2001 From: rakdver Date: Wed, 30 May 2007 13:29:51 +0000 Subject: * 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 --- gcc/tree-cfg.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'gcc/tree-cfg.c') 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. */ -- cgit v1.2.1