enum value_range_kind kind () const; // DEPRECATED
protected:
+ vrange (enum value_range_discriminator d) : m_discriminator (d) { }
ENUM_BITFIELD(value_range_kind) m_kind : 8;
- ENUM_BITFIELD(value_range_discriminator) m_discriminator : 4;
+ const ENUM_BITFIELD(value_range_discriminator) m_discriminator : 4;
};
// An integer range without any storage.
bool intersect (const wide_int& lb, const wide_int& ub);
unsigned char m_num_ranges;
- unsigned char m_max_ranges;
+ const unsigned char m_max_ranges;
tree m_nonzero_mask;
tree *m_base;
};
{
public:
unsupported_range ()
+ : vrange (VR_UNKNOWN)
{
- m_discriminator = VR_UNKNOWN;
set_undefined ();
}
virtual void set_undefined () final override
inline
irange::irange (tree *base, unsigned nranges)
+ : vrange (VR_IRANGE),
+ m_max_ranges (nranges)
{
- m_discriminator = VR_IRANGE;
m_base = base;
- m_max_ranges = nranges;
set_undefined ();
}
inline
frange::frange ()
+ : vrange (VR_FRANGE)
{
- m_discriminator = VR_FRANGE;
set_undefined ();
}
inline
frange::frange (const frange &src)
+ : vrange (VR_FRANGE)
{
- m_discriminator = VR_FRANGE;
*this = src;
}
inline
frange::frange (tree type)
+ : vrange (VR_FRANGE)
{
- m_discriminator = VR_FRANGE;
set_varying (type);
}
frange::frange (tree type,
const REAL_VALUE_TYPE &min, const REAL_VALUE_TYPE &max,
value_range_kind kind)
+ : vrange (VR_FRANGE)
{
- m_discriminator = VR_FRANGE;
set (type, min, max, kind);
}
inline
frange::frange (tree min, tree max, value_range_kind kind)
+ : vrange (VR_FRANGE)
{
- m_discriminator = VR_FRANGE;
set (min, max, kind);
}