re PR tree-optimization/91145 (ICE: in vect_build_slp_tree_2, at tree-vect-slp.c:1143 with -march=skylake-avx512 -O3)

2019-07-12  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/91145
	* tree-vect-slp.c (vect_build_slp_tree_2): Fix reduction
	chain check.

	* gcc.dg/torture/pr91145.c: New testcase.

From-SVN: r273445
This commit is contained in:
Richard Biener 2019-07-12 14:36:50 +00:00 committed by Richard Biener
parent b847405ade
commit cf91b5997d
4 changed files with 29 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2019-07-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/91145
* tree-vect-slp.c (vect_build_slp_tree_2): Fix reduction
chain check.
2019-07-12 Alexandre Oliva <oliva@adacore.com>
* tree-eh.c (honor_protect_cleanup_actions): Use outer_

View file

@ -1,7 +1,11 @@
2019-07-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/91145
* gcc.dg/torture/pr91145.c: New testcase.
2019-07-12 Alexandre Oliva <oliva@adacore.com>
* gcc.dg/gimplefe-44.c: New.
* gcc.dg/gimplefe-43.c: New.
2019-07-12 Richard Biener <rguenther@suse.de>

View file

@ -0,0 +1,16 @@
/* { dg-do compile } */
/* { dg-additional-options "-march=skylake-avx512" { target x86_64-*-* i?86-*-* } } */
int a, c;
unsigned b, e;
extern unsigned d[100];
void f()
{
for (int g = 0; g < 70; g++)
{
b += d[g] - c;
e -= g ^ a;
}
}

View file

@ -1140,7 +1140,8 @@ vect_build_slp_tree_2 (vec_info *vinfo,
FOR_EACH_VEC_ELT (stmts, i, other_info)
{
/* But for reduction chains only check on the first stmt. */
if (REDUC_GROUP_FIRST_ELEMENT (other_info)
if (!STMT_VINFO_DATA_REF (other_info)
&& REDUC_GROUP_FIRST_ELEMENT (other_info)
&& REDUC_GROUP_FIRST_ELEMENT (other_info) != stmt_info)
continue;
if (STMT_VINFO_DEF_TYPE (other_info) != def_type)