aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-im.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-12-10 14:20:43 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-12-10 14:20:43 +0000
commit07faade69ff47c3479d8fc1664f322681038ba42 (patch)
tree3d400e7b4b499a66c6054939a77920fe52698ad7 /gcc/tree-ssa-loop-im.c
parentd1704358924217b920bb60e0197282154fa02a4b (diff)
downloadgcc-07faade69ff47c3479d8fc1664f322681038ba42.zip
gcc-07faade69ff47c3479d8fc1664f322681038ba42.tar.gz
gcc-07faade69ff47c3479d8fc1664f322681038ba42.tar.bz2
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
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
-rw-r--r--gcc/tree-ssa-loop-im.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c
index 2c676e3..9c0186d 100644
--- a/gcc/tree-ssa-loop-im.c
+++ b/gcc/tree-ssa-loop-im.c
@@ -1232,6 +1232,11 @@ move_computations_dom_walker::before_dom_children (basic_block bb)
COND_EXPR, t, arg0, arg1);
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);
remove_phi_node (&bsi, false);
}
@@ -1291,6 +1296,13 @@ move_computations_dom_walker::before_dom_children (basic_block bb)
}
}
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
when the target loop header is executed and the stmt may
invoke undefined integer or pointer overflow rewrite it to