tree-optimization/99924 - visit permute nodes again when partitioning

Since SLP graph partitioning works on scalar stmts (because it's done
for costing) we have to make sure to visit permute nodes multiple
times since they will not pull partitions together.

2021-04-06  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/99924
	* tree-vect-slp.c (vect_bb_partition_graph_r): Do not mark
	nodes w/o scalar stmts as visited.

	* gfortran.dg/vect/pr99924.f90: New testcase.
This commit is contained in:
Richard Biener 2021-04-06 11:21:47 +02:00
parent ffc2331d79
commit 58cd9fc8a6
2 changed files with 13 additions and 1 deletions

View file

@ -0,0 +1,12 @@
! { dg-do compile }
! { dg-additional-options "-march=armv8.3-a" { target aarch64-*-* } }
subroutine cunhj (tfn, asum, bsum)
implicit none
complex :: up, tfn, asum, bsum
real :: ar
up = tfn * ar
bsum = up + ar
asum = up + asum
return
end subroutine cunhj

View file

@ -4224,7 +4224,7 @@ vect_bb_partition_graph_r (bb_vec_info bb_vinfo,
stmt_instance = instance;
}
if (visited.add (node))
if (!SLP_TREE_SCALAR_STMTS (node).is_empty () && visited.add (node))
return;
slp_tree child;