return false;
}
+bool
+range_operator::fold_range (frange &r ATTRIBUTE_UNUSED,
+ tree type ATTRIBUTE_UNUSED,
+ const irange &lh ATTRIBUTE_UNUSED,
+ const irange &rh ATTRIBUTE_UNUSED,
+ relation_trio) const
+{
+ return false;
+}
+
bool
range_operator::op1_range (frange &r ATTRIBUTE_UNUSED,
tree type ATTRIBUTE_UNUSED,
using range_operator::op1_op2_relation;
bool fold_range (irange &r, tree type,
const irange &op1, const irange &op2,
- relation_trio = TRIO_VARYING) const;
+ relation_trio = TRIO_VARYING) const final override;
bool fold_range (irange &r, tree type,
const frange &op1, const frange &op2,
relation_trio = TRIO_VARYING) const final override;
bool op1_range (irange &r, tree type,
const irange &lhs, const irange &op2,
- relation_trio = TRIO_VARYING) const;
+ relation_trio = TRIO_VARYING) const final override;
bool op1_range (frange &r, tree type,
const irange &lhs, const frange &op2,
relation_trio = TRIO_VARYING) const final override;
bool op2_range (irange &r, tree type,
const irange &lhs, const irange &op1,
- relation_trio = TRIO_VARYING) const;
+ relation_trio = TRIO_VARYING) const final override;
bool op2_range (frange &r, tree type,
const irange &lhs, const frange &op1,
relation_trio = TRIO_VARYING) const final override;
relation_kind op1_op2_relation (const irange &lhs) const final override;
- void update_bitmask (irange &r, const irange &lh, const irange &rh) const;
+ void update_bitmask (irange &r, const irange &lh,
+ const irange &rh) const final override;
};
class operator_ge : public range_operator
return m_operator->fold_range (as_a <frange> (r), type,
as_a <frange> (lh),
as_a <frange> (rh), rel);
+ case RO_FII:
+ return m_operator->fold_range (as_a <frange> (r), type,
+ as_a <irange> (lh),
+ as_a <irange> (rh), rel);
default:
return false;
}
tree type,
const wide_int &,
const wide_int &) const;
- void update_bitmask (irange &r, const irange &lh, const irange &rh) const
+ void update_bitmask (irange &r, const irange &lh,
+ const irange &rh) const final override
{ update_known_bitmask (r, LSHIFT_EXPR, lh, rh); }
} op_lshift;
const irange &op1,
const irange &op2,
relation_kind rel) const;
- void update_bitmask (irange &r, const irange &lh, const irange &rh) const
+ void update_bitmask (irange &r, const irange &lh,
+ const irange &rh) const final override
{ update_known_bitmask (r, RSHIFT_EXPR, lh, rh); }
} op_rshift;