On Mon, Jan 18, 2016 at 3:02 PM, Yuri Rumyantsev <ysrum...@gmail.com> wrote: > 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).
Can't see it in my inbox - can you reply to the mail with a ping? Thanks, Richard. > 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