Commit 07faade6 by Richard Biener Committed by Richard Biener

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
parent d1704358
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
...@@ -1232,6 +1232,11 @@ move_computations_dom_walker::before_dom_children (basic_block bb) ...@@ -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) ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment