On Wed, Sep 30, 2015 at 6:43 PM, Jeff Law <l...@redhat.com> wrote: > On 09/30/2015 01:48 AM, Richard Biener wrote: >> >> On Tue, Sep 29, 2015 at 6:55 PM, Jeff Law <l...@redhat.com> wrote: >>> >>> The pdp11 port fails to build with the trunk because of a warning. >>> Essentially VRP determines that the result of using BRANCH_COST is a >>> constant with the range [0..1]. That's always less than 4, 3 and the >>> various other magic constants used with BRANCH_COST and VRP issues a >>> warning >>> about that comparison. >> >> >> It does? Huh. Is it about undefined overflow which is the only thing >> VRP should end up >> warning about? If so I wonder how that happens, at least I can't >> reproduce it for >> --target=pdp11 --enable-werror build of cc1. > > You have to use a trunk compiler to build the pdp11 cross. You'll bump into > this repeatedly: > > if (warn_type_limits > && ret && only_ranges > && TREE_CODE_CLASS (code) == tcc_comparison > && TREE_CODE (op0) == SSA_NAME) > { > /* If the comparison is being folded and the operand on the LHS > is being compared against a constant value that is outside of > the natural range of OP0's type, then the predicate will > always fold regardless of the value of OP0. If -Wtype-limits > was specified, emit a warning. */ > tree type = TREE_TYPE (op0); > value_range_t *vr0 = get_value_range (op0); > > if (vr0->type == VR_RANGE > && INTEGRAL_TYPE_P (type) > && vrp_val_is_min (vr0->min) > && vrp_val_is_max (vr0->max) > && is_gimple_min_invariant (op1)) > { > location_t location; > > if (!gimple_has_location (stmt)) > location = input_location; > else > location = gimple_location (stmt); > > warning_at (location, OPT_Wtype_limits, > integer_zerop (ret) > ? G_("comparison always false " > "due to limited range of data type") > : G_("comparison always true " > "due to limited range of data type")); > } > }
Oh, I didn't remember we have this kind of warning in VRP ... it's bound to trigger for example after jump-threading. So I'm not sure it's useful. Richard. > return ret; > } > > > Jeff