mirror of
https://github.com/gcc-mirror/gcc.git
synced 2024-11-21 13:40:47 +00:00
tree-optimization/101505 - properly determine stmt precision for PHIs
Loop vectorization pattern recog fails to walk PHIs when determining stmt precisions. This fails to recognize non-mask uses for bools in PHIs and outer loop vectorization. 2021-07-19 Richard Biener <rguenther@suse.de> PR tree-optimization/101505 * tree-vect-patterns.c (vect_determine_precisions): Walk PHIs also for loop vectorization. * gcc.dg/vect/pr101505.c: New testcase.
This commit is contained in:
parent
9f2bc5077d
commit
8df3ee8f7d
16
gcc/testsuite/gcc.dg/vect/pr101505.c
Normal file
16
gcc/testsuite/gcc.dg/vect/pr101505.c
Normal file
@ -0,0 +1,16 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-additional-options "-O1" } */
|
||||
|
||||
int n2;
|
||||
|
||||
__attribute__ ((simd)) char
|
||||
w7 (void)
|
||||
{
|
||||
short int xb = n2;
|
||||
int qp;
|
||||
|
||||
for (qp = 0; qp < 2; ++qp)
|
||||
xb = xb < 1;
|
||||
|
||||
return xb;
|
||||
}
|
@ -5355,6 +5355,13 @@ vect_determine_precisions (vec_info *vinfo)
|
||||
for (unsigned int i = 0; i < nbbs; i++)
|
||||
{
|
||||
basic_block bb = bbs[i];
|
||||
for (auto gsi = gsi_start_phis (bb);
|
||||
!gsi_end_p (gsi); gsi_next (&gsi))
|
||||
{
|
||||
stmt_vec_info stmt_info = vinfo->lookup_stmt (gsi.phi ());
|
||||
if (stmt_info)
|
||||
vect_determine_mask_precision (vinfo, stmt_info);
|
||||
}
|
||||
for (auto si = gsi_start_bb (bb); !gsi_end_p (si); gsi_next (&si))
|
||||
if (!is_gimple_debug (gsi_stmt (si)))
|
||||
vect_determine_mask_precision
|
||||
@ -5368,6 +5375,13 @@ vect_determine_precisions (vec_info *vinfo)
|
||||
if (!is_gimple_debug (gsi_stmt (si)))
|
||||
vect_determine_stmt_precisions
|
||||
(vinfo, vinfo->lookup_stmt (gsi_stmt (si)));
|
||||
for (auto gsi = gsi_start_phis (bb);
|
||||
!gsi_end_p (gsi); gsi_next (&gsi))
|
||||
{
|
||||
stmt_vec_info stmt_info = vinfo->lookup_stmt (gsi.phi ());
|
||||
if (stmt_info)
|
||||
vect_determine_stmt_precisions (vinfo, stmt_info);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user