diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-01-05 19:53:44 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-01-05 19:53:44 +0100 |
commit | a6377d52d749327d8e7b8b4d2e51bb873da24ad9 (patch) | |
tree | 8128543c9bfbb161fc49e812bd604b35026cfe4c /gcc/tree-ssa-loop-im.c | |
parent | 8b7cec587aa4e4d38ef9a258dc39cef53f8c8482 (diff) | |
download | gcc-a6377d52d749327d8e7b8b4d2e51bb873da24ad9.zip gcc-a6377d52d749327d8e7b8b4d2e51bb873da24ad9.tar.gz gcc-a6377d52d749327d8e7b8b4d2e51bb873da24ad9.tar.bz2 |
re PR tree-optimization/64494 (ICE at -Os and above on x86_64-linux-gnu in duplicate_ssa_name_range_info, at tree-ssanames.c:499)
PR tree-optimization/64494
* tree-ssa-loop-im.c (move_computations_dom_walker::before_dom): Also
clear SSA_NAME_ANTI_RANGE_P flag.
* gcc.c-torture/compile/pr64494.c: New test.
From-SVN: r219194
Diffstat (limited to 'gcc/tree-ssa-loop-im.c')
-rw-r--r-- | gcc/tree-ssa-loop-im.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c index a442146..6319eff 100644 --- a/gcc/tree-ssa-loop-im.c +++ b/gcc/tree-ssa-loop-im.c @@ -1236,7 +1236,11 @@ move_computations_dom_walker::before_dom_children (basic_block bb) && (!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; + { + tree lhs = gimple_assign_lhs (new_stmt); + SSA_NAME_RANGE_INFO (lhs) = NULL; + SSA_NAME_ANTI_RANGE_P (lhs) = 0; + } gsi_insert_on_edge (loop_preheader_edge (level), new_stmt); remove_phi_node (&bsi, false); } @@ -1302,7 +1306,11 @@ move_computations_dom_walker::before_dom_children (basic_block bb) && (!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; + { + tree lhs = gimple_get_lhs (stmt); + SSA_NAME_RANGE_INFO (lhs) = NULL; + SSA_NAME_ANTI_RANGE_P (lhs) = 0; + } /* 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 |