Commit 719488f8 by Richard Biener Committed by Richard Biener

re PR tree-optimization/81571 (ICE at -O3 in both 32-bit and 64-bit modes…

re PR tree-optimization/81571 (ICE at -O3 in both 32-bit and 64-bit modes (internal compiler error: in as_a, at is-a.h:192))

2017-07-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/81571
	* tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
	PHIs.

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

From-SVN: r250626
parent e88a9384
2017-07-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/81571
* tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
PHIs.
2017-07-27 Eric Botcazou <ebotcazou@adacore.com>
* config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
......
2017-07-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/81571
* gcc.dg/torture/pr81571.c: New testcase.
2017-07-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/81502
* gcc.target/i386/vect-insert-1.c: New testcase.
......
/* { dg-do compile } */
int a, b, c, d;
short fn1(int p1, int p2) { return p1; }
int fn2(int p1) {}
int main()
{
for (; c; c++)
a |= fn1(1, a) | fn2(b |= d);
return 0;
}
......@@ -947,11 +947,27 @@ vect_build_slp_tree (vec_info *vinfo,
the recursion. */
if (gimple_code (stmt) == GIMPLE_PHI)
{
vect_def_type def_type = STMT_VINFO_DEF_TYPE (vinfo_for_stmt (stmt));
/* Induction from different IVs is not supported. */
if (STMT_VINFO_DEF_TYPE (vinfo_for_stmt (stmt)) == vect_induction_def)
FOR_EACH_VEC_ELT (stmts, i, stmt)
if (stmt != stmts[0])
return NULL;
if (def_type == vect_induction_def)
{
FOR_EACH_VEC_ELT (stmts, i, stmt)
if (stmt != stmts[0])
return NULL;
}
else
{
/* Else def types have to match. */
FOR_EACH_VEC_ELT (stmts, i, stmt)
{
/* But for reduction chains only check on the first stmt. */
if (GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt))
&& GROUP_FIRST_ELEMENT (vinfo_for_stmt (stmt)) != stmt)
continue;
if (STMT_VINFO_DEF_TYPE (vinfo_for_stmt (stmt)) != def_type)
return NULL;
}
}
node = vect_create_new_slp_node (stmts);
return node;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment