re PR tree-optimization/68775 (spec2006 test case 465.tonto fails with the gcc 6.0 fortran compiler)
2015-12-14 Richard Biener <rguenther@suse.de> PR tree-optimization/68775 * tree-vect-slp.c (vect_build_slp_tree): Make sure to apply a operand swapping even if replacing the op with scalars. From-SVN: r231617
This commit is contained in:
parent
adb48173b8
commit
60f2b86449
2 changed files with 20 additions and 11 deletions
|
@ -1,3 +1,9 @@
|
|||
2015-12-14 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/68775
|
||||
* tree-vect-slp.c (vect_build_slp_tree): Make sure to apply
|
||||
a operand swapping even if replacing the op with scalars.
|
||||
|
||||
2015-12-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
||||
|
||||
* combine.c (change_zero_ext): Do not create a shift of zero length.
|
||||
|
|
|
@ -1044,6 +1044,20 @@ vect_build_slp_tree (vec_info *vinfo,
|
|||
tem, npermutes, &this_tree_size,
|
||||
max_tree_size))
|
||||
{
|
||||
/* ... so if successful we can apply the operand swapping
|
||||
to the GIMPLE IL. This is necessary because for example
|
||||
vect_get_slp_defs uses operand indexes and thus expects
|
||||
canonical operand order. This is also necessary even
|
||||
if we end up building the operand from scalars as
|
||||
we'll continue to process swapped operand two. */
|
||||
for (j = 0; j < group_size; ++j)
|
||||
if (!matches[j])
|
||||
{
|
||||
gimple *stmt = SLP_TREE_SCALAR_STMTS (*node)[j];
|
||||
swap_ssa_operands (stmt, gimple_assign_rhs1_ptr (stmt),
|
||||
gimple_assign_rhs2_ptr (stmt));
|
||||
}
|
||||
|
||||
/* If we have all children of child built up from scalars then
|
||||
just throw that away and build it up this node from scalars. */
|
||||
if (!SLP_TREE_CHILDREN (child).is_empty ())
|
||||
|
@ -1073,17 +1087,6 @@ vect_build_slp_tree (vec_info *vinfo,
|
|||
}
|
||||
}
|
||||
|
||||
/* ... so if successful we can apply the operand swapping
|
||||
to the GIMPLE IL. This is necessary because for example
|
||||
vect_get_slp_defs uses operand indexes and thus expects
|
||||
canonical operand order. */
|
||||
for (j = 0; j < group_size; ++j)
|
||||
if (!matches[j])
|
||||
{
|
||||
gimple *stmt = SLP_TREE_SCALAR_STMTS (*node)[j];
|
||||
swap_ssa_operands (stmt, gimple_assign_rhs1_ptr (stmt),
|
||||
gimple_assign_rhs2_ptr (stmt));
|
||||
}
|
||||
oprnd_info->def_stmts = vNULL;
|
||||
SLP_TREE_CHILDREN (*node).quick_push (child);
|
||||
continue;
|
||||
|
|
Loading…
Add table
Reference in a new issue