aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssanames.c
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2018-11-09 09:52:32 +0000
committerAldy Hernandez <aldyh@gcc.gnu.org>2018-11-09 09:52:32 +0000
commitc89af696c372d94688b06618a226ed49235ad212 (patch)
treee5607fc7bf18b658cf1c1f072b529f36de8df0d0 /gcc/tree-ssanames.c
parent15e109b35dd461f2d6af85b861c4c71ea4478cb4 (diff)
downloadgcc-c89af696c372d94688b06618a226ed49235ad212.zip
gcc-c89af696c372d94688b06618a226ed49235ad212.tar.gz
gcc-c89af696c372d94688b06618a226ed49235ad212.tar.bz2
gimple-fold.c (size_must_be_zero_p): Use value_range API instead of performing ad-hoc calculations.
* 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 accepting value_range &. (get_range_info): Same. * tree-ssanames.h (set_range_info_raw): Remove. (set_range_info): New prototype. (get_range_info): Same. * tree-vrp.h (value_range::null_p): Rename to zero_p. * tree-vrp.c (value_range::null_p): Same. From-SVN: r265952
Diffstat (limited to 'gcc/tree-ssanames.c')
-rw-r--r--gcc/tree-ssanames.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index ff906e8..a2c2efb 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -398,6 +398,15 @@ set_range_info (tree name, enum value_range_kind range_type,
set_range_info_raw (name, range_type, min, max);
}
+/* Store range information for NAME from a value_range. */
+
+void
+set_range_info (tree name, const value_range &vr)
+{
+ wide_int min = wi::to_wide (vr.min ());
+ wide_int max = wi::to_wide (vr.max ());
+ set_range_info (name, vr.kind (), min, max);
+}
/* Gets range information MIN, MAX and returns enum value_range_kind
corresponding to tree ssa_name NAME. enum value_range_kind returned
@@ -421,6 +430,27 @@ get_range_info (const_tree name, wide_int *min, wide_int *max)
return SSA_NAME_RANGE_TYPE (name);
}
+/* Gets range information corresponding to ssa_name NAME and stores it
+ in a value_range VR. Returns the value_range_kind. */
+
+enum value_range_kind
+get_range_info (const_tree name, value_range &vr)
+{
+ tree min, max;
+ wide_int wmin, wmax;
+ enum value_range_kind kind = get_range_info (name, &wmin, &wmax);
+
+ if (kind == VR_VARYING || kind == VR_UNDEFINED)
+ min = max = NULL;
+ else
+ {
+ min = wide_int_to_tree (TREE_TYPE (name), wmin);
+ max = wide_int_to_tree (TREE_TYPE (name), wmax);
+ }
+ vr = value_range (kind, min, max);
+ return kind;
+}
+
/* Set nonnull attribute to pointer NAME. */
void