On November 23, 2015 6:09:33 PM GMT+01:00, Marek Polacek <pola...@redhat.com> wrote: >On Mon, Nov 23, 2015 at 05:40:14PM +0100, Richard Biener wrote: >> On November 23, 2015 5:31:11 PM GMT+01:00, Marek Polacek ><pola...@redhat.com> wrote: >> >We blow up on the following testcase because we find ourselves >passing >> >[_13 + 1, INT_MAX] as a vr1 to >extract_range_from_multiplicative_op_1; >> >that's bad because this function immediately calls >vrp_int_const_binop >> >which just doesn't work for symbolic ranges, it only wants int_csts. >> > >> >This started with Richards S.'s changes in r228614 -- we're now >since >> >able to recurse into SSA names, thus get better info about ranges. >> >That means that range_includes_zero_p in >> >extract_range_from_binary_expr_1 >> >for the *_DIV_EXPR cases was able to determine that the range >doesn't >> >include zero, so we went through a different code path and ended up >> >calling extract_range_from_multiplicative_op_1 even with symbolic >> >ranges. >> > >> >I couldn't come up with anything better than checking that we're >> >dealing >> >with nonsymbolic ranges for such a case. >> > >> >Bootstrapped/regtested on x86_64-linux, ok for trunk? >> >> Hmm. I think we can do better if vr0 is symbolical - use min, max >for it. >> >> I suppose it would be best to implement a get_integer_range () >function doing that or also looking at equivalences if we are getting a >symbolic range. >> >> Anyway, those are future enhancements that shouldn't block this >patch. > >Is this something for this stage3? Or should I open a PR and fix it in >the >next stage1?
Open a PR for next stage1. Unless you are able to create a testcase that regressed of course. Richard. >> Thus OK. > >Thanks. > > Marek