re PR tree-optimization/71416 (ICE at -O3 in 32-bit and 64-bit modes on x86_64-linux-gnu (vectorizable_live_operation))

2016-06-13  Alan Hayward  <alan.hayward@arm.com>

gcc/
	PR tree-optimization/71416
	* tree-vect-loop.c (vectorizable_live_operation): Let worklist have
	multiple entries

From-SVN: r237375
This commit is contained in:
Alan Hayward 2016-06-13 11:07:35 +00:00 committed by Alan Hayward
parent 46c1cff63f
commit 915794eb26
2 changed files with 13 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2016-06-13 Alan Hayward <alan.hayward@arm.com>
PR tree-optimization/71416
* tree-vect-loop.c (vectorizable_live_operation): Let worklist have
multiple entries
2016-06-13 Martin Liska <mliska@suse.cz>
* predict.c (enum predictor_reason): Prefix enum with REASON_.

View File

@ -6351,7 +6351,7 @@ vectorizable_live_operation (gimple *stmt,
FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, lhs)
if (!flow_bb_inside_loop_p (loop, gimple_bb (use_stmt)))
worklist.safe_push (use_stmt);
gcc_assert (worklist.length () == 1);
gcc_assert (worklist.length () >= 1);
bitsize = TYPE_SIZE (TREE_TYPE (vectype));
vec_bitsize = TYPE_SIZE (vectype);
@ -6409,9 +6409,12 @@ vectorizable_live_operation (gimple *stmt,
/* Replace all uses of the USE_STMT in the worklist with the newly inserted
statement. */
use_stmt = worklist.pop ();
replace_uses_by (gimple_phi_result (use_stmt), new_tree);
update_stmt (use_stmt);
while (!worklist.is_empty ())
{
use_stmt = worklist.pop ();
replace_uses_by (gimple_phi_result (use_stmt), new_tree);
update_stmt (use_stmt);
}
return true;
}