tree-optimization/100292 - avoid invalid GIMPLE from vector lowering
We have to avoid folding the condition when building a COND_EXPR since we no longer gimplify the whole thing. The folding done at COND_EXPR build time will deal with possible simplifications. 2021-04-28 Richard Biener <rguenther@suse.de> PR tree-optimization/100292 * tree-vect-generic.c (expand_vector_condition): Do not fold the comparisons. * gcc.dg/pr100292.c: New testcase.
This commit is contained in:
parent
f9d670128f
commit
f7ee6a1e8a
11
gcc/testsuite/gcc.dg/pr100292.c
Normal file
11
gcc/testsuite/gcc.dg/pr100292.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* { dg-do compile } */
|
||||
|
||||
typedef unsigned char __attribute__((__vector_size__ (4))) V;
|
||||
|
||||
extern void bar (V v);
|
||||
|
||||
void
|
||||
foo (char c)
|
||||
{
|
||||
bar (c <= (V) 127);
|
||||
}
|
@ -1116,15 +1116,15 @@ expand_vector_condition (gimple_stmt_iterator *gsi, bitmap dce_ssa_names)
|
||||
comp_width, comp_index);
|
||||
tree aa2 = tree_vec_extract (gsi, comp_inner_type, a2,
|
||||
comp_width, comp_index);
|
||||
aa = fold_build2 (code, cond_type, aa1, aa2);
|
||||
aa = build2 (code, cond_type, aa1, aa2);
|
||||
}
|
||||
else if (a_is_scalar_bitmask)
|
||||
{
|
||||
wide_int w = wi::set_bit_in_zero (i, TYPE_PRECISION (TREE_TYPE (a)));
|
||||
result = gimplify_build2 (gsi, BIT_AND_EXPR, TREE_TYPE (a),
|
||||
a, wide_int_to_tree (TREE_TYPE (a), w));
|
||||
aa = fold_build2 (NE_EXPR, boolean_type_node, result,
|
||||
build_zero_cst (TREE_TYPE (a)));
|
||||
aa = build2 (NE_EXPR, boolean_type_node, result,
|
||||
build_zero_cst (TREE_TYPE (a)));
|
||||
}
|
||||
else
|
||||
aa = tree_vec_extract (gsi, cond_type, a, width, index);
|
||||
|
Loading…
Reference in New Issue
Block a user