Thanks Richard. I changed the check on type as you proposed.
What about the second back-end part of patch (it has been sent 08.12.15). Thanks. Yuri. 2016-01-18 15:44 GMT+03:00 Richard Biener <richard.guent...@gmail.com>: > On Mon, Jan 11, 2016 at 11:06 AM, Yuri Rumyantsev <ysrum...@gmail.com> wrote: >> Hi Richard, >> >> Did you have anu chance to look at updated patch? > > diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c > index acbb70b..208a752 100644 > --- a/gcc/tree-vrp.c > +++ b/gcc/tree-vrp.c > @@ -5771,6 +5771,10 @@ register_edge_assert_for (tree name, edge e, > gimple_stmt_iterator si, > &comp_code, &val)) > return; > > + /* VRP doesn't track ranges for vector types. */ > + if (TREE_CODE (TREE_TYPE (name)) == VECTOR_TYPE) > + return; > + > > please instead fix extract_code_and_val_from_cond_with_ops with > > Index: gcc/tree-vrp.c > =================================================================== > --- gcc/tree-vrp.c (revision 232506) > +++ gcc/tree-vrp.c (working copy) > @@ -5067,8 +5067,9 @@ extract_code_and_val_from_cond_with_ops > if (invert) > comp_code = invert_tree_comparison (comp_code, 0); > > - /* VRP does not handle float types. */ > - if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (val))) > + /* VRP only handles integral and pointer types. */ > + if (! INTEGRAL_TYPE_P (TREE_TYPE (val)) > + && ! POINTER_TYPE_P (TREE_TYPE (val))) > return false; > > /* Do not register always-false predicates. > > Ok with that change. > > Thanks, > Richard. > >> Thanks. >> Yuri. >> >> 2015-12-18 13:20 GMT+03:00 Yuri Rumyantsev <ysrum...@gmail.com>: >>> Hi Richard, >>> >>> Here is updated patch for middle-end part of the whole patch which >>> fixes all your remarks I hope. >>> >>> Regression testing and bootstrapping did not show any new failures. >>> Is it OK for trunk? >>> >>> Yuri. >>> >>> ChangeLog: >>> 2015-12-18 Yuri Rumyantsev <ysrum...@gmail.com> >>> >>> PR middle-end/68542 >>> * fold-const.c (fold_binary_op_with_conditional_arg): Bail out for case >>> of mixind vector and scalar types. >>> (fold_relational_const): Add handling of vector >>> comparison with boolean result. >>> * tree-cfg.c (verify_gimple_comparison): Add argument CODE, allow >>> comparison of vector operands with boolean result for EQ/NE only. >>> (verify_gimple_assign_binary): Adjust call for verify_gimple_comparison. >>> (verify_gimple_cond): Likewise. >>> * tree-ssa-forwprop.c (combine_cond_expr_cond): Do not perform