re PR tree-optimization/78396 (gcc.dg/vect/bb-slp-cond-1.c FAILs after fix for PR77848)

2016-11-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/78396
	* tree-vectorizer.c (vectorize_loops): When the if-converted
	body contains masked loads or stores do not attempt to
	basic-block-vectorize it.

From-SVN: r242865
This commit is contained in:
Richard Biener 2016-11-25 08:59:28 +00:00 committed by Richard Biener
parent 758dcf83e3
commit 5bcfb22cf6
2 changed files with 17 additions and 1 deletions

View File

@ -1,3 +1,10 @@
2016-11-25 Richard Biener <rguenther@suse.de>
PR tree-optimization/78396
* tree-vectorizer.c (vectorize_loops): When the if-converted
body contains masked loads or stores do not attempt to
basic-block-vectorize it.
2016-11-25 Richard Sandiford <richard.sandiford@arm.com>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>

View File

@ -570,14 +570,23 @@ vectorize_epilogue:
&& ! loop->inner)
{
basic_block bb = loop->header;
bool has_mask_load_store = false;
for (gimple_stmt_iterator gsi = gsi_start_bb (bb);
!gsi_end_p (gsi); gsi_next (&gsi))
{
gimple *stmt = gsi_stmt (gsi);
if (is_gimple_call (stmt)
&& gimple_call_internal_p (stmt)
&& (gimple_call_internal_fn (stmt) == IFN_MASK_LOAD
|| gimple_call_internal_fn (stmt) == IFN_MASK_STORE))
{
has_mask_load_store = true;
break;
}
gimple_set_uid (stmt, -1);
gimple_set_visited (stmt, false);
}
if (vect_slp_bb (bb))
if (! has_mask_load_store && vect_slp_bb (bb))
{
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
"basic block vectorized\n");