From cd6e7e7d5945b71e7c803644a8b45e17cbff5a1e Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Mon, 16 Jan 2006 16:53:48 +0000 Subject: [PATCH] tree-vrp.c (extract_range_from_binary_expr): Cope with vrp_int_const_binop returning non-constant nodes. * tree-vrp.c (extract_range_from_binary_expr): Cope with vrp_int_const_binop returning non-constant nodes. From-SVN: r109754 --- gcc/ChangeLog | 5 +++++ gcc/tree-vrp.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2e3bedba0a6f..61e005c6dda5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-01-16 Eric Botcazou + + * tree-vrp.c (extract_range_from_binary_expr): Cope with + vrp_int_const_binop returning non-constant nodes. + 2006-01-16 Paul Brook * config/m68k/m68k.c (output_move_const_into_data_reg): diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 6bd4725ea1cd..7fcd62d0fb99 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -1412,12 +1412,13 @@ extract_range_from_binary_expr (value_range_t *vr, tree expr) max = val[0]; for (i = 1; i < 4; i++) { - if (TREE_OVERFLOW (min) || TREE_OVERFLOW (max)) + if (!is_gimple_min_invariant (min) || TREE_OVERFLOW (min) + || !is_gimple_min_invariant (max) || TREE_OVERFLOW (max)) break; if (val[i]) { - if (TREE_OVERFLOW (val[i])) + if (!is_gimple_min_invariant (val[i]) || TREE_OVERFLOW (val[i])) { /* If we found an overflowed value, set MIN and MAX to it so that we set the resulting range to @@ -1484,7 +1485,8 @@ extract_range_from_binary_expr (value_range_t *vr, tree expr) /* If either MIN or MAX overflowed, then set the resulting range to VARYING. */ - if (TREE_OVERFLOW (min) || TREE_OVERFLOW (max)) + if (!is_gimple_min_invariant (min) || TREE_OVERFLOW (min) + || !is_gimple_min_invariant (max) || TREE_OVERFLOW (max)) { set_value_range_to_varying (vr); return; -- 2.47.2