diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4e9dd7d17cf6..fed32beda35a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-02-09 Andrew Pinski + + PR tree-opt/69282 + * optabs-tree.c (expand_vec_cond_expr_p): Don't early return if + get_vcond_mask_icode returns false. + 2016-02-09 Michael Meissner PR target/68404 diff --git a/gcc/optabs-tree.c b/gcc/optabs-tree.c index a229b970b3bb..faac08716412 100644 --- a/gcc/optabs-tree.c +++ b/gcc/optabs-tree.c @@ -322,9 +322,11 @@ expand_vec_cond_expr_p (tree value_type, tree cmp_op_type) { machine_mode value_mode = TYPE_MODE (value_type); machine_mode cmp_op_mode = TYPE_MODE (cmp_op_type); - if (VECTOR_BOOLEAN_TYPE_P (cmp_op_type)) - return get_vcond_mask_icode (TYPE_MODE (value_type), - TYPE_MODE (cmp_op_type)) != CODE_FOR_nothing; + if (VECTOR_BOOLEAN_TYPE_P (cmp_op_type) + && get_vcond_mask_icode (TYPE_MODE (value_type), + TYPE_MODE (cmp_op_type)) != CODE_FOR_nothing) + return true; + if (GET_MODE_SIZE (value_mode) != GET_MODE_SIZE (cmp_op_mode) || GET_MODE_NUNITS (value_mode) != GET_MODE_NUNITS (cmp_op_mode) || get_vcond_icode (TYPE_MODE (value_type), TYPE_MODE (cmp_op_type), diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3dad666bd343..00e8d1987239 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-02-09 Andrew Pinski + + PR tree-opt/69282 + * gcc.c-torture/compile/20160205-1.c: New testcase. + 2016-02-09 Michael Meissner PR target/68404 diff --git a/gcc/testsuite/gcc.c-torture/compile/20160205-1.c b/gcc/testsuite/gcc.c-torture/compile/20160205-1.c new file mode 100644 index 000000000000..ea0440f460eb --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20160205-1.c @@ -0,0 +1,8 @@ +int a[32]; +int fn1(int d) { + int c = 1; + for (int b = 0; b < 32; b++) + if (a[b]) + c = 0; + return c; +}