Commit f711908b by Richard Biener Committed by Richard Biener

re PR tree-optimization/87974 (ICE in vect_get_vec_def_for_stmt_copy)

2018-11-14  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/87974
	* tree-vect-loop.c (vectorizable_reduction): When computing
	the vectorized reduction PHI vector type ignore constant
	and external defs.

	* g++.dg/opt/pr87974.C: New testcase.

From-SVN: r266099
parent c4071191
2018-11-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/87974
* tree-vect-loop.c (vectorizable_reduction): When computing
the vectorized reduction PHI vector type ignore constant
and external defs.
2018-11-14 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/87977
2018-11-14 Richard Biener <rguenther@suse.de>
PR tree-optimization/87974
* g++.dg/opt/pr87974.C: New testcase.
2018-11-14 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/87977
......
// { dg-do compile { target c++11 } }
// { dg-options "-O3" }
struct h {
typedef int &c;
};
class i {
struct j {
using c = int *;
};
using as = j::c;
};
template <typename> class k {
public:
using as = i::as;
h::c operator[](long l) {
k<int[]>::as d = 0;
return d[l];
}
};
class : public k<int[]> { } a;
long c, f;
void m()
{
for (long b; b <= 6; b++)
for (long g; g < b; g++) {
unsigned long e = g;
c = 0;
for (; c < b; c++)
f = e >>= 1;
a[g] = f;
}
}
......@@ -6066,13 +6066,17 @@ vectorizable_reduction (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
return true;
gassign *reduc_stmt = as_a <gassign *> (reduc_stmt_info->stmt);
code = gimple_assign_rhs_code (reduc_stmt);
for (unsigned k = 1; k < gimple_num_ops (reduc_stmt); ++k)
{
tree op = gimple_op (reduc_stmt, k);
if (op == phi_result)
continue;
if (k == 1
&& gimple_assign_rhs_code (reduc_stmt) == COND_EXPR)
if (k == 1 && code == COND_EXPR)
continue;
bool is_simple_use = vect_is_simple_use (op, loop_vinfo, &dt);
gcc_assert (is_simple_use);
if (dt == vect_constant_def || dt == vect_external_def)
continue;
if (!vectype_in
|| (GET_MODE_SIZE (SCALAR_TYPE_MODE (TREE_TYPE (vectype_in)))
......
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