aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2007-01-07 15:21:45 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2007-01-07 15:21:45 +0000
commitb881887e66d13ed96a421c0d8438e677c33ba6ea (patch)
treee5138b026bffda049169113f572baf658eda7db0 /gcc
parent696e990bdbd5fcc6a8763ee2e2055ecfb6877b88 (diff)
downloadgcc-b881887e66d13ed96a421c0d8438e677c33ba6ea.zip
gcc-b881887e66d13ed96a421c0d8438e677c33ba6ea.tar.gz
gcc-b881887e66d13ed96a421c0d8438e677c33ba6ea.tar.bz2
tree-vrp.c (extract_range_from_assert): CSE calls to compare_values where possible.
2007-01-07 Richard Guenther <rguenther@suse.de> * tree-vrp.c (extract_range_from_assert): CSE calls to compare_values where possible. (extract_range_from_unary_expr): Likewise. From-SVN: r120547
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-vrp.c13
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fb37675..4ca66b2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-01-07 Richard Guenther <rguenther@suse.de>
+
+ * tree-vrp.c (extract_range_from_assert): CSE calls to
+ compare_values where possible.
+ (extract_range_from_unary_expr): Likewise.
+
2007-01-07 Anatoly Sokolov <aesok@post.ru>
* config/avr/avr-protos.h (call_insn_operand): Delete prototype.
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index e1c8ca0..36e9a3b 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -1066,6 +1066,7 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
else
{
tree min, max, anti_min, anti_max, real_min, real_max;
+ int cmp;
/* We want to compute the logical AND of the two ranges;
there are three cases to consider.
@@ -1130,8 +1131,8 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
/* Case 3a, the anti-range extends into the low
part of the real range. Thus creating a new
low for the real range. */
- else if ((compare_values (anti_max, real_min) == 1
- || compare_values (anti_max, real_min) == 0)
+ else if (((cmp = compare_values (anti_max, real_min)) == 1
+ || cmp == 0)
&& compare_values (anti_max, real_max) == -1)
{
min = fold_build2 (PLUS_EXPR, TREE_TYPE (var_vr->min),
@@ -1144,8 +1145,8 @@ extract_range_from_assert (value_range_t *vr_p, tree expr)
part of the real range. Thus creating a new
higher for the real range. */
else if (compare_values (anti_min, real_min) == 1
- && (compare_values (anti_min, real_max) == -1
- || compare_values (anti_min, real_max) == 0))
+ && ((cmp = compare_values (anti_min, real_max)) == -1
+ || cmp == 0))
{
max = fold_build2 (MINUS_EXPR, TREE_TYPE (var_vr->min),
anti_min,
@@ -1734,8 +1735,8 @@ extract_range_from_unary_expr (value_range_t *vr, tree expr)
&& is_gimple_val (new_max)
&& tree_int_cst_equal (new_min, orig_min)
&& tree_int_cst_equal (new_max, orig_max)
- && compare_values (new_min, new_max) <= 0
- && compare_values (new_min, new_max) >= -1)
+ && (cmp = compare_values (new_min, new_max)) <= 0
+ && cmp >= -1)
{
set_value_range (vr, VR_RANGE, new_min, new_max, vr->equiv);
return;