relation_trio rel = TRIO_VARYING) const final override;
};
+class operator_bitwise_not : public range_operator
+{
+public:
+ using range_operator::fold_range;
+ using range_operator::op1_range;
+ bool fold_range (irange &r, tree type,
+ const irange &lh, const irange &rh,
+ relation_trio rel = TRIO_VARYING) const final override;
+ bool op1_range (irange &r, tree type,
+ const irange &lhs, const irange &op2,
+ relation_trio rel = TRIO_VARYING) const final override;
+};
+
#endif // GCC_RANGE_OP_MIXED_H
operator_negate op_negate;
operator_mult op_mult;
operator_addr_expr op_addr;
+operator_bitwise_not op_bitwise_not;
// Invoke the initialization routines for each class of range.
set (MULT_EXPR, op_mult);
// Occur in both integer and pointer tables, but currently share
- // integral implelmentation.
+ // integral implementation.
set (ADDR_EXPR, op_addr);
+ set (BIT_NOT_EXPR, op_bitwise_not);
}
// The tables are hidden and accessed via a simple extern function.
}
-class operator_bitwise_not : public range_operator
-{
- using range_operator::fold_range;
- using range_operator::op1_range;
-public:
- virtual bool fold_range (irange &r, tree type,
- const irange &lh,
- const irange &rh,
- relation_trio rel = TRIO_VARYING) const;
- virtual bool op1_range (irange &r, tree type,
- const irange &lhs,
- const irange &op2,
- relation_trio rel = TRIO_VARYING) const;
-} op_bitwise_not;
-
bool
operator_bitwise_not::fold_range (irange &r, tree type,
const irange &lh,
set (BIT_AND_EXPR, op_bitwise_and);
set (BIT_IOR_EXPR, op_bitwise_or);
set (BIT_XOR_EXPR, op_bitwise_xor);
- set (BIT_NOT_EXPR, op_bitwise_not);
}
// Initialize any integral operators to the primary table
set (MIN_EXPR, op_ptr_min_max);
set (MAX_EXPR, op_ptr_min_max);
- set (BIT_NOT_EXPR, op_bitwise_not);
set (BIT_XOR_EXPR, op_bitwise_xor);
}