diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-07 15:21:45 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-07 15:21:45 +0000 |
commit | 1c87e488d737d84577dd29ef53aa863c9deab2bc (patch) | |
tree | e5138b026bffda049169113f572baf658eda7db0 | |
parent | d07b1e9e2f5140548f7d323980782e3eb22fa1d1 (diff) | |
download | ppe42-gcc-1c87e488d737d84577dd29ef53aa863c9deab2bc.tar.gz ppe42-gcc-1c87e488d737d84577dd29ef53aa863c9deab2bc.zip |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120547 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 13 |
2 files changed, 13 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb376753944..4ca66b2a34e 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 e1c8ca0eb3a..36e9a3be787 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; |