re PR target/69053 (ICE in build_vector_from_val)
2016-01-12 Richard Biener <rguenther@suse.de> PR tree-optimization/69053 * tree-vect-loop.c (get_initial_def_for_reduction): Properly convert initial value for cond reductions. * g++.dg/torture/pr69053.C: New testcase. From-SVN: r232263
This commit is contained in:
parent
5b723b6806
commit
8eac49b1b6
|
@ -1,3 +1,9 @@
|
||||||
|
2016-01-12 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/69053
|
||||||
|
* tree-vect-loop.c (get_initial_def_for_reduction): Properly
|
||||||
|
convert initial value for cond reductions.
|
||||||
|
|
||||||
2016-01-12 Richard Biener <rguenther@suse.de>
|
2016-01-12 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/69007
|
PR tree-optimization/69007
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2016-01-12 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR tree-optimization/69053
|
||||||
|
* g++.dg/torture/pr69053.C: New testcase.
|
||||||
|
|
||||||
2016-01-12 Richard Biener <rguenther@suse.de>
|
2016-01-12 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
PR tree-optimization/69168
|
PR tree-optimization/69168
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
// { dg-do compile }
|
||||||
|
// { dg-additional-options "-march=core-avx2" { target x86_64-*-* i?86-*-* } }
|
||||||
|
struct A {
|
||||||
|
int *elem[1];
|
||||||
|
};
|
||||||
|
int a, d, e;
|
||||||
|
A *b;
|
||||||
|
int *c;
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
int *f = 0;
|
||||||
|
for (; e; e++)
|
||||||
|
if (b->elem[e])
|
||||||
|
f = c;
|
||||||
|
if (f)
|
||||||
|
a = d;
|
||||||
|
}
|
|
@ -4075,10 +4075,10 @@ get_initial_def_for_reduction (gimple *stmt, tree init_val,
|
||||||
tree *elts;
|
tree *elts;
|
||||||
int i;
|
int i;
|
||||||
bool nested_in_vect_loop = false;
|
bool nested_in_vect_loop = false;
|
||||||
tree init_value;
|
|
||||||
REAL_VALUE_TYPE real_init_val = dconst0;
|
REAL_VALUE_TYPE real_init_val = dconst0;
|
||||||
int int_init_val = 0;
|
int int_init_val = 0;
|
||||||
gimple *def_stmt = NULL;
|
gimple *def_stmt = NULL;
|
||||||
|
gimple_seq stmts = NULL;
|
||||||
|
|
||||||
gcc_assert (vectype);
|
gcc_assert (vectype);
|
||||||
nunits = TYPE_VECTOR_SUBPARTS (vectype);
|
nunits = TYPE_VECTOR_SUBPARTS (vectype);
|
||||||
|
@ -4107,16 +4107,6 @@ get_initial_def_for_reduction (gimple *stmt, tree init_val,
|
||||||
return vect_create_destination_var (init_val, vectype);
|
return vect_create_destination_var (init_val, vectype);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TREE_CONSTANT (init_val))
|
|
||||||
{
|
|
||||||
if (SCALAR_FLOAT_TYPE_P (scalar_type))
|
|
||||||
init_value = build_real (scalar_type, TREE_REAL_CST (init_val));
|
|
||||||
else
|
|
||||||
init_value = build_int_cst (scalar_type, TREE_INT_CST_LOW (init_val));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
init_value = init_val;
|
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case WIDEN_SUM_EXPR:
|
case WIDEN_SUM_EXPR:
|
||||||
|
@ -4193,7 +4183,10 @@ get_initial_def_for_reduction (gimple *stmt, tree init_val,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
init_def = build_vector_from_val (vectype, init_value);
|
init_val = gimple_convert (&stmts, TREE_TYPE (vectype), init_val);
|
||||||
|
if (! gimple_seq_empty_p (stmts))
|
||||||
|
gsi_insert_seq_on_edge_immediate (loop_preheader_edge (loop), stmts);
|
||||||
|
init_def = build_vector_from_val (vectype, init_val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue