static inline void
frange_drop_inf (frange &r, tree type)
{
- // FIXME: build_real() bails on decimal float modes when called with
- // a max representable endpoint.
- if (DECIMAL_FLOAT_MODE_P (TYPE_MODE (type)))
- return;
-
REAL_VALUE_TYPE max;
real_max_representable (&max, type);
frange tmp (type, r.lower_bound (), max);
static inline void
frange_drop_ninf (frange &r, tree type)
{
- // FIXME: build_real() bails on decimal float modes when called with
- // a max representable endpoint.
- if (DECIMAL_FLOAT_MODE_P (TYPE_MODE (type)))
- return;
-
REAL_VALUE_TYPE min;
real_min_representable (&min, type);
frange tmp (type, min, r.upper_bound ());
value_range_kind = VR_RANGE);
static bool supports_p (const_tree type)
{
- return SCALAR_FLOAT_TYPE_P (type);
+ // ?? Decimal floats can have multiple representations for the
+ // same number. Supporting them may be as simple as just
+ // disabling them in singleton_p. No clue.
+ return SCALAR_FLOAT_TYPE_P (type) && !DECIMAL_FLOAT_TYPE_P (type);
}
virtual tree type () const override;
virtual void set (tree, tree, value_range_kind = VR_RANGE) override;