From 26e4f1baa2647df48d9aaf58c21e159cb7f2a66b Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Fri, 12 Dec 2008 04:56:29 +0000 Subject: [PATCH] tree-vrp.c (extract_range_from_binary_expr): Don't shift by floor_log2 of zero. * tree-vrp.c (extract_range_from_binary_expr): Don't shift by floor_log2 of zero. Negate widened zero. From-SVN: r142702 --- gcc/ChangeLog | 5 +++++ gcc/tree-vrp.c | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2736005bbfd..6c9a378e78a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-12-12 Alexandre Oliva + + * tree-vrp.c (extract_range_from_binary_expr): Don't shift by + floor_log2 of zero. Negate widened zero. + 2008-12-12 Ben Elliston * config/fp-bit.c (nan): Rename from this .. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index a69b216b796..9d23b24087f 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -2557,11 +2557,11 @@ extract_range_from_binary_expr (value_range_t *vr, ior_max.high = vr0_max.high | vr1_max.high; if (ior_max.high != 0) { - ior_max.low = ~0u; + ior_max.low = ~(unsigned HOST_WIDE_INT)0u; ior_max.high |= ((HOST_WIDE_INT) 1 << floor_log2 (ior_max.high)) - 1; } - else + else if (ior_max.low != 0) ior_max.low |= ((unsigned HOST_WIDE_INT) 1u << floor_log2 (ior_max.low)) - 1;