Commit dc176c3c by Richard Sandiford Committed by Richard Sandiford

Fix EXTRACT_LAST_REDUCTION segfault

This code:

      /* Make sure we don't accidentally use the old condition.  */
      cond_expr = NULL_TREE;

was misplaced, since it triggered even when we needed to force the
original unmodified cond_expr into a mask temporary and then invert it.

2019-12-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-stmts.c (vectorizable_condition): Only nullify cond_expr
	if we've created a new condition.  Don't nullify it if we've decided
	to keep it and then invert the result.

gcc/testsuite/
	* gcc.dg/vect/vect-cond-reduc-6.c: New test.

From-SVN: r279804
parent 2c829799
2020-12-31 Richard Sandiford <richard.sandiford@arm.com>
* tree-vect-stmts.c (vectorizable_condition): Only nullify cond_expr
if we've created a new condition. Don't nullify it if we've decided
to keep it and then invert the result.
2020-12-31 Richard Sandiford <richard.sandiford@arm.com>
* tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Return
the incoming virtual operand definition.
(vect_do_peeling): When vectorizing an epilogue loop, handle the
2020-12-31 Richard Sandiford <richard.sandiford@arm.com>
* gcc.dg/vect/vect-cond-reduc-6.c: New test.
2020-12-31 Richard Sandiford <richard.sandiford@arm.com>
* gcc.dg/vect/vect-epilogues-2.c: New test.
2019-12-30 Olivier Hainque <hainque@adacore.com>
......
/* { dg-do compile } */
int
f (int *y)
{
int res = 0;
for (int i = 0; i < 100; ++i)
res = (y[i] & 1) == 0 && (y[i] < 10) ? res : 1;
return res;
}
......@@ -10033,10 +10033,12 @@ vectorizable_condition (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
if (new_code == ERROR_MARK)
must_invert_cmp_result = true;
else
cond_code = new_code;
{
cond_code = new_code;
/* Make sure we don't accidentally use the old condition. */
cond_expr = NULL_TREE;
}
}
/* Make sure we don't accidentally use the old condition. */
cond_expr = NULL_TREE;
std::swap (then_clause, else_clause);
}
......
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