diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2024-04-30 18:54:11 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2024-05-01 09:37:04 +0200 |
commit | 1b5732de7e3980aa5197b1ac818f48f1ce9f87ab (patch) | |
tree | fdd78a646962322edc664c7442e8328782f34702 | |
parent | 3032ebf0c9b769f02f494e97417a1b68ad59c884 (diff) | |
download | gcc-1b5732de7e3980aa5197b1ac818f48f1ce9f87ab.zip gcc-1b5732de7e3980aa5197b1ac818f48f1ce9f87ab.tar.gz gcc-1b5732de7e3980aa5197b1ac818f48f1ce9f87ab.tar.bz2 |
Cleanups to unsupported_range.
Here are some cleanups to unsupported_range so the assignment operator
takes an unsupported_range and behaves like the other ranges. This
makes subsequent cleanups easier.
gcc/ChangeLog:
* value-range.cc (unsupported_range::union_): Cast vrange to
unsupported_range.
(unsupported_range::intersect): Same.
(unsupported_range::operator=): Make argument an unsupported_range.
* value-range.h: New constructor.
-rw-r--r-- | gcc/value-range.cc | 10 | ||||
-rw-r--r-- | gcc/value-range.h | 7 |
2 files changed, 13 insertions, 4 deletions
diff --git a/gcc/value-range.cc b/gcc/value-range.cc index ca6d521..7250115 100644 --- a/gcc/value-range.cc +++ b/gcc/value-range.cc @@ -147,8 +147,10 @@ unsupported_range::set_varying (tree) } bool -unsupported_range::union_ (const vrange &r) +unsupported_range::union_ (const vrange &v) { + const unsupported_range &r = as_a <unsupported_range> (v); + if (r.undefined_p () || varying_p ()) return false; if (undefined_p () || r.varying_p ()) @@ -161,8 +163,10 @@ unsupported_range::union_ (const vrange &r) } bool -unsupported_range::intersect (const vrange &r) +unsupported_range::intersect (const vrange &v) { + const unsupported_range &r = as_a <unsupported_range> (v); + if (undefined_p () || r.varying_p ()) return false; if (r.undefined_p ()) @@ -216,7 +220,7 @@ unsupported_range::fits_p (const vrange &) const } unsupported_range & -unsupported_range::operator= (const vrange &r) +unsupported_range::operator= (const unsupported_range &r) { if (r.undefined_p ()) set_undefined (); diff --git a/gcc/value-range.h b/gcc/value-range.h index 11c73fa..471f362 100644 --- a/gcc/value-range.h +++ b/gcc/value-range.h @@ -389,6 +389,11 @@ public: { set_undefined (); } + unsupported_range (const unsupported_range &src) + : vrange (VR_UNKNOWN) + { + unsupported_range::operator= (src); + } void set (tree min, tree, value_range_kind = VR_RANGE) final override; tree type () const final override; bool supports_type_p (const_tree) const final override; @@ -405,7 +410,7 @@ public: void set_zero (tree type) final override; void set_nonnegative (tree type) final override; bool fits_p (const vrange &) const final override; - unsupported_range& operator= (const vrange &r); + unsupported_range& operator= (const unsupported_range &r); tree lbound () const final override; tree ubound () const final override; }; |