diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2018-11-09 09:52:32 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2018-11-09 09:52:32 +0000 |
commit | c89af696c372d94688b06618a226ed49235ad212 (patch) | |
tree | e5607fc7bf18b658cf1c1f072b529f36de8df0d0 /gcc/tree-ssanames.c | |
parent | 15e109b35dd461f2d6af85b861c4c71ea4478cb4 (diff) | |
download | gcc-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.c | 30 |
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 |