aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2018-11-09 09:52:43 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2018-11-09 09:52:43 +0000
commit5756b6a8b5e309e84ed8f536672aa3a389c3185a (patch)
tree3f67e7d2a1542e81a6b31416b590e9821d7d4345 /gcc
parentc89af696c372d94688b06618a226ed49235ad212 (diff)
downloadgcc-5756b6a8b5e309e84ed8f536672aa3a389c3185a.zip
gcc-5756b6a8b5e309e84ed8f536672aa3a389c3185a.tar.gz
gcc-5756b6a8b5e309e84ed8f536672aa3a389c3185a.tar.bz2
vr-values.c (vr_values::get_value_range): Use value_range API instead of piecing together ranges.
* vr-values.c (vr_values::get_value_range): Use value_range API instead of piecing together ranges. (vr_values::update_value_range): Same. From-SVN: r265953
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/vr-values.c25
2 files changed, 12 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0389ead..c84b0fd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2018-11-08 Aldy Hernandez <aldyh@redhat.com>
+ * vr-values.c (vr_values::get_value_range): Use value_range API
+ instead of piecing together ranges.
+ (vr_values::update_value_range): Same.
+
+2018-11-08 Aldy Hernandez <aldyh@redhat.com>
+
* gimple-fold.c (size_must_be_zero_p): Use value_range API instead
of performing ad-hoc calculations.
* tree-ssanames.c (set_range_info): New overloaded function
diff --git a/gcc/vr-values.c b/gcc/vr-values.c
index 8c9fd15..4edc5a4 100644
--- a/gcc/vr-values.c
+++ b/gcc/vr-values.c
@@ -121,15 +121,9 @@ vr_values::get_value_range (const_tree var)
set_value_range_to_nonnull (vr, TREE_TYPE (sym));
else if (INTEGRAL_TYPE_P (TREE_TYPE (sym)))
{
- wide_int min, max;
- value_range_kind rtype = get_range_info (var, &min, &max);
- if (rtype == VR_RANGE || rtype == VR_ANTI_RANGE)
- set_value_range (vr, rtype,
- wide_int_to_tree (TREE_TYPE (var), min),
- wide_int_to_tree (TREE_TYPE (var), max),
- NULL);
- else
- set_value_range_to_varying (vr);
+ get_range_info (var, *vr);
+ if (vr->undefined_p ())
+ vr->set_varying ();
}
else
set_value_range_to_varying (vr);
@@ -178,17 +172,10 @@ vr_values::update_value_range (const_tree var, value_range *new_vr)
factor that in. */
if (INTEGRAL_TYPE_P (TREE_TYPE (var)))
{
- wide_int min, max;
- value_range_kind rtype = get_range_info (var, &min, &max);
+ value_range nr;
+ value_range_kind rtype = get_range_info (var, nr);
if (rtype == VR_RANGE || rtype == VR_ANTI_RANGE)
- {
- tree nr_min, nr_max;
- nr_min = wide_int_to_tree (TREE_TYPE (var), min);
- nr_max = wide_int_to_tree (TREE_TYPE (var), max);
- value_range nr;
- nr.set_and_canonicalize (rtype, nr_min, nr_max, NULL);
- new_vr->intersect (&nr);
- }
+ new_vr->intersect (&nr);
}
/* Update the value range, if necessary. */