On 01/06/2018 11:58 PM, Prathamesh Kulkarni wrote: [ Snip ] >> I think with those changes we're probably in good shape. But please >> repost for final approval. > I have the updated the attached version with your suggestions. > Does it look OK ? > Bootstrap+test passes on x86_64-unknown-linux-gnu. > > Thanks, > Prathamesh >> jeff > > pr82665-9.diff > > > diff --git a/gcc/vr-values.c b/gcc/vr-values.c > index 794b4635f9e..41a4a0b041f 100644 > --- a/gcc/vr-values.c > +++ b/gcc/vr-values.c > @@ -793,6 +793,39 @@ vr_values::extract_range_from_binary_expr (value_range > *vr, > > extract_range_from_binary_expr_1 (vr, code, expr_type, &vr0, &vr1); > > + /* Set value_range for n in following sequence: > + def = __builtin_memchr (arg, 0, sz) > + n = def - arg > + Here the range for n can be set to [0, PTRDIFF_MAX - 1]. */ > + > + if (vr->type == VR_VARYING > + && code == POINTER_DIFF_EXPR > + && TREE_CODE (op0) == SSA_NAME > + && TREE_CODE (op1) == SSA_NAME) > + { > + tree op0_ptype = TREE_TYPE (TREE_TYPE (op0)); > + tree op1_ptype = TREE_TYPE (TREE_TYPE (op1)); > + gcall *call_stmt = NULL; > + > + if (TYPE_MODE (op0_ptype) == TYPE_MODE (char_type_node) > + && TYPE_PRECISION (op0_ptype) == TYPE_PRECISION (char_type_node) > + && TYPE_MODE (op1_ptype) == TYPE_MODE (char_type_node) > + && TYPE_PRECISION (op1_ptype) == TYPE_PRECISION (char_type_node) Note that while the operands of POINTER_DIFF_EXPR can be pointers to different types, we do require that they have the same mode and precision. So the tests of TYPE_MODE and TYPE_PRECISION for op1_ptype are not needed.
OK with those two checks removed. Jeff ps. FWIW, the close a stage in our development cycle is a patch submission deadline. So if a patch is submitted prior to the deadline, then it can move forward, even if review/approval happens after the deadline.