diff --git a/gcc/gimple-range-op.cc b/gcc/gimple-range-op.cc index 587de186db2..55dfbb23ce2 100644 --- a/gcc/gimple-range-op.cc +++ b/gcc/gimple-range-op.cc @@ -311,12 +311,37 @@ public: r = lh; return true; } + virtual bool fold_range (prange &r, tree, const prange &lh, + const prange &, relation_trio) const + { + r = lh; + return true; + } virtual bool op1_range (irange &r, tree, const irange &lhs, const irange &, relation_trio) const { r = lhs; return true; } + virtual bool op1_range (prange &r, tree, const prange &lhs, + const prange &, relation_trio) const + { + r = lhs; + return true; + } + virtual bool pointers_handled_p (range_op_dispatch_type type, + unsigned dispatch) const + { + switch (type) + { + case DISPATCH_FOLD_RANGE: + return dispatch == RO_PPP; + case DISPATCH_OP1_RANGE: + return dispatch == RO_PPP; + default: + return true; + } + } } op_cfn_pass_through_arg1; // Implement range operator for CFN_BUILT_IN_SIGNBIT. @@ -1107,6 +1132,17 @@ public: r.set (type, wi::zero (TYPE_PRECISION (type)), max - 2); return true; } + virtual bool pointers_handled_p (range_op_dispatch_type type, + unsigned dispatch) const + { + switch (type) + { + case DISPATCH_FOLD_RANGE: + return dispatch == RO_IPI; + default: + return true; + } + } } op_cfn_strlen;