2014-12-10 Richard Biener <rguenther@suse.de>

* tree-ssa-loop-im.c
	 (move_computations_dom_walker::before_dom_children): Clear
	 SSA_NAME_RANGE_INFO on moved stmts.

From-SVN: r218580
This commit is contained in:
Richard Biener 2014-12-10 14:20:43 +00:00 committed by Richard Biener
parent d170435892
commit 07faade69f
2 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2014-12-10 Richard Biener <rguenther@suse.de>
* tree-ssa-loop-im.c
(move_computations_dom_walker::before_dom_children): Clear
SSA_NAME_RANGE_INFO on moved stmts.
2014-12-10 Martin Liska <mliska@suse.cz> 2014-12-10 Martin Liska <mliska@suse.cz>
* sreal.c (sreal::shift_right): New implementation * sreal.c (sreal::shift_right): New implementation

View File

@ -1232,6 +1232,11 @@ move_computations_dom_walker::before_dom_children (basic_block bb)
COND_EXPR, t, arg0, arg1); COND_EXPR, t, arg0, arg1);
todo_ |= TODO_cleanup_cfg; todo_ |= TODO_cleanup_cfg;
} }
if (INTEGRAL_TYPE_P (TREE_TYPE (gimple_assign_lhs (new_stmt)))
&& (!ALWAYS_EXECUTED_IN (bb)
|| (ALWAYS_EXECUTED_IN (bb) != level
&& !flow_loop_nested_p (ALWAYS_EXECUTED_IN (bb), level))))
SSA_NAME_RANGE_INFO (gimple_assign_lhs (new_stmt)) = NULL;
gsi_insert_on_edge (loop_preheader_edge (level), new_stmt); gsi_insert_on_edge (loop_preheader_edge (level), new_stmt);
remove_phi_node (&bsi, false); remove_phi_node (&bsi, false);
} }
@ -1291,6 +1296,13 @@ move_computations_dom_walker::before_dom_children (basic_block bb)
} }
} }
gsi_remove (&bsi, false); gsi_remove (&bsi, false);
if (gimple_has_lhs (stmt)
&& TREE_CODE (gimple_get_lhs (stmt)) == SSA_NAME
&& INTEGRAL_TYPE_P (TREE_TYPE (gimple_get_lhs (stmt)))
&& (!ALWAYS_EXECUTED_IN (bb)
|| !(ALWAYS_EXECUTED_IN (bb) == level
|| flow_loop_nested_p (ALWAYS_EXECUTED_IN (bb), level))))
SSA_NAME_RANGE_INFO (gimple_get_lhs (stmt)) = NULL;
/* In case this is a stmt that is not unconditionally executed /* In case this is a stmt that is not unconditionally executed
when the target loop header is executed and the stmt may when the target loop header is executed and the stmt may
invoke undefined integer or pointer overflow rewrite it to invoke undefined integer or pointer overflow rewrite it to