re PR tree-optimization/92252 (ICE: Segmentation fault (in vect_stmt_to_vectorize))

2019-10-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/92252
	* tree-vect-slp.c (vect_get_and_check_slp_defs): Adjust
	STMT_VINFO_REDUC_IDX when swapping operands.

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

From-SVN: r277517
This commit is contained in:
Richard Biener 2019-10-28 13:43:49 +00:00 committed by Richard Biener
parent 97c6bea819
commit 96d9d1620f
4 changed files with 38 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2019-10-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/92252
* tree-vect-slp.c (vect_get_and_check_slp_defs): Adjust
STMT_VINFO_REDUC_IDX when swapping operands.
2019-10-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/92241

View File

@ -1,3 +1,8 @@
2019-10-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/92252
* gcc.dg/torture/pr92252.c: New testcase.
2019-10-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/92241

View File

@ -0,0 +1,23 @@
/* { do-do compile } */
/* { dg-additional-options "-ftree-vectorize" } */
long int ar;
int dt;
long int
pc (unsigned long int q3, int zw)
{
long int em = 0;
while (zw < 1)
{
q3 = zw * 2ul;
if (q3 != 0)
for (ar = 0; ar < 2; ++ar)
em = dt;
++zw;
}
return em;
}

View File

@ -563,6 +563,10 @@ again:
{
swap_ssa_operands (stmt, gimple_assign_rhs2_ptr (stmt),
gimple_assign_rhs3_ptr (stmt));
if (STMT_VINFO_REDUC_IDX (stmt_info) == 1)
STMT_VINFO_REDUC_IDX (stmt_info) = 2;
else if (STMT_VINFO_REDUC_IDX (stmt_info) == 2)
STMT_VINFO_REDUC_IDX (stmt_info) = 1;
bool honor_nans = HONOR_NANS (TREE_OPERAND (cond, 0));
code = invert_tree_comparison (TREE_CODE (cond), honor_nans);
gcc_assert (code != ERROR_MARK);