diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2020-08-04 07:13:44 +0200 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-17 15:07:29 -0300 |
commit | 55e630c56d1a0b8ec00860e03a42fdeed51e3329 (patch) | |
tree | af40377ef71b18d51ff90e9dfb526d05bbfeaa4b | |
parent | e9454b7318e459f2e92febda448333dd8956bb77 (diff) | |
download | gcc-55e630c56d1a0b8ec00860e03a42fdeed51e3329.zip gcc-55e630c56d1a0b8ec00860e03a42fdeed51e3329.tar.gz gcc-55e630c56d1a0b8ec00860e03a42fdeed51e3329.tar.bz2 |
Adjust simplify_conversion_using_ranges for irange API.
gcc/ChangeLog:
* vr-values.c (simplify_conversion_using_ranges): Convert to irange API.
-rw-r--r-- | gcc/vr-values.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/vr-values.c b/gcc/vr-values.c index e78b255..38c9a65 100644 --- a/gcc/vr-values.c +++ b/gcc/vr-values.c @@ -3969,11 +3969,14 @@ simplify_conversion_using_ranges (gimple_stmt_iterator *gsi, gimple *stmt) /* Get the value-range of the inner operand. Use get_range_info in case innerop was created during substitute-and-fold. */ wide_int imin, imax; - if (!INTEGRAL_TYPE_P (TREE_TYPE (innerop)) - || get_range_info (innerop, &imin, &imax) != VR_RANGE) + value_range vr; + if (!INTEGRAL_TYPE_P (TREE_TYPE (innerop))) return false; - innermin = widest_int::from (imin, TYPE_SIGN (TREE_TYPE (innerop))); - innermax = widest_int::from (imax, TYPE_SIGN (TREE_TYPE (innerop))); + get_range_info (innerop, vr); + if (vr.undefined_p () || vr.varying_p ()) + return false; + innermin = widest_int::from (vr.lower_bound (), TYPE_SIGN (TREE_TYPE (innerop))); + innermax = widest_int::from (vr.upper_bound (), TYPE_SIGN (TREE_TYPE (innerop))); /* Simulate the conversion chain to check if the result is equal if the middle conversion is removed. */ |