diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2022-06-01 17:41:10 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2022-06-03 10:31:01 +0200 |
commit | f4fa81ba63299030d068327f3d90920de8c54d1c (patch) | |
tree | a245acf7aa94501fa1c5a8d199324d1494865c05 | |
parent | 89b0276d3fafdd254e17beee3c86ec00edcf28a2 (diff) | |
download | gcc-f4fa81ba63299030d068327f3d90920de8c54d1c.zip gcc-f4fa81ba63299030d068327f3d90920de8c54d1c.tar.gz gcc-f4fa81ba63299030d068327f3d90920de8c54d1c.tar.bz2 |
Remove unneeded vrange_traits.
The traits struct is no longer needed.
Tested on x86-64 Linux.
gcc/ChangeLog:
* value-range.h (struct vrange_traits): Remove.
(is_a): Rewrite without vrange_traits.
(as_a): Same.
-rw-r--r-- | gcc/value-range.h | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/gcc/value-range.h b/gcc/value-range.h index 61e6a18..26e41ed 100644 --- a/gcc/value-range.h +++ b/gcc/value-range.h @@ -245,24 +245,12 @@ public: virtual void dump (FILE *) const override; }; -// Traits to implement vrange is_a<> and as_a<>. - -template<typename T> -struct vrange_traits -{ - // Default to something unusable. - typedef void range_type; -}; - -template<> -struct vrange_traits<irange> -{ - typedef irange range_type; -}; +// is_a<> and as_a<> implementation for vrange. +// Anything we haven't specialized is a hard fail. template <typename T> inline bool -is_a (vrange &v) +is_a (vrange &) { gcc_unreachable (); return false; @@ -281,18 +269,16 @@ template <typename T> inline T & as_a (vrange &v) { - typedef typename vrange_traits<T>::range_type range_type; - gcc_checking_assert (is_a <range_type> (v)); - return static_cast <range_type &> (v); + gcc_checking_assert (is_a <T> (v)); + return static_cast <T &> (v); } template <typename T> inline const T & as_a (const vrange &v) { - typedef typename vrange_traits<T>::range_type range_type; - gcc_checking_assert (is_a <range_type> (v)); - return static_cast <const range_type &> (v); + gcc_checking_assert (is_a <T> (v)); + return static_cast <const T &> (v); } // Specializations for the different range types. |