On Fri, Apr 15, 2016 at 12:44 PM, kugan <kugan.vivekanandara...@linaro.org> wrote: > As pointed out by Richard, for signed & sign-bit-CST value range should be > [-INF, 0] range, not a [-INF, INF] range as happens now. > > This patch fixes this. I bootstrapped and regression tested for > x86-64-linux-gnu with no new regression. Is this OK for statege-1.
I think you need to check vr0 for singleton-constant == sign_bit as well, there is nothing that canonicalizes this during propagation. Otherwise ok. Thanks, Richard. > Thanks, > Kugan > > > gcc/ChangeLog: > > 2016-04-14 Kugan Vivekanandarajah <kug...@linaro.org> > > PR middle-end/68217 > * tree-vrp.c (extract_range_from_binary_expr_1): In case of signed & > sign-bit-CST, > generate [-INF, 0] instead of [-INF, INF]. > > > gcc/testsuite/ChangeLog: > > 2016-04-14 Kugan Vivekanandarajah <kug...@linaro.org> > > PR middle-end/68217 > * gcc.dg/pr68217.c: New test.