aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2006-01-16 16:53:48 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2006-01-16 16:53:48 +0000
commitcd6e7e7d5945b71e7c803644a8b45e17cbff5a1e (patch)
treecc3fe1737539a5ef66ea94934912c395115f44de /gcc
parent8883f8bad976dcd8aa992eb8ccf2b5ba467d6145 (diff)
downloadgcc-cd6e7e7d5945b71e7c803644a8b45e17cbff5a1e.zip
gcc-cd6e7e7d5945b71e7c803644a8b45e17cbff5a1e.tar.gz
gcc-cd6e7e7d5945b71e7c803644a8b45e17cbff5a1e.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-vrp.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2e3bedb..61e005c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2006-01-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-vrp.c (extract_range_from_binary_expr): Cope with
+ vrp_int_const_binop returning non-constant nodes.
+
2006-01-16 Paul Brook <paul@codesourcery.com>
* config/m68k/m68k.c (output_move_const_into_data_reg):
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 6bd4725..7fcd62d 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;