diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2006-01-16 16:53:48 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2006-01-16 16:53:48 +0000 |
commit | cd6e7e7d5945b71e7c803644a8b45e17cbff5a1e (patch) | |
tree | cc3fe1737539a5ef66ea94934912c395115f44de /gcc | |
parent | 8883f8bad976dcd8aa992eb8ccf2b5ba467d6145 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 8 |
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; |