diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2019-11-04 21:41:12 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2019-11-04 21:41:12 +0000 |
commit | 8ced1d76b143b6856699f815813045d551e3cef9 (patch) | |
tree | d70528682f093bb308726e1a647bda8b36090b30 | |
parent | a1b680597178df866e6de80444695fab82b90492 (diff) | |
download | gcc-8ced1d76b143b6856699f815813045d551e3cef9.zip gcc-8ced1d76b143b6856699f815813045d551e3cef9.tar.gz gcc-8ced1d76b143b6856699f815813045d551e3cef9.tar.bz2 |
Use the value_range_base constructors in value_range_base::invert to
make sure we build canonically correct ranges.
From-SVN: r277794
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vrp.c | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c585360..6bdd5ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2019-11-04 Aldy Hernandez <aldyh@redhat.com> + * tree-vrp.c (value_range_base::invert): Use constructors to build + range. + +2019-11-04 Aldy Hernandez <aldyh@redhat.com> + * tree-vrp.c (range_int_cst_singleton_p): Remove. * tree-vrp.h (range_int_cst_singleton_p): Remove. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 070db90..085308e 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -6286,10 +6286,12 @@ value_range_base::contains_p (tree cst) const void value_range_base::invert () { + /* We can't just invert VR_RANGE and VR_ANTI_RANGE because we may + create non-canonical ranges. Use the constructors instead. */ if (m_kind == VR_RANGE) - m_kind = VR_ANTI_RANGE; + *this = value_range_base (VR_ANTI_RANGE, m_min, m_max); else if (m_kind == VR_ANTI_RANGE) - m_kind = VR_RANGE; + *this = value_range_base (VR_RANGE, m_min, m_max); else gcc_unreachable (); } |