friend struct HungoffOperandTraits;
virtual void anchor();
protected:
+ /// NumOperands - The number of values used by this User.
+ ///
+ unsigned NumOperands;
+
/// OperandList - This is a pointer to the array of Uses for this User.
/// For nodes of fixed arity (e.g. a binary operator) this array will live
/// prefixed to some derived class instance. For nodes of resizable variable
/// allocated and should be destroyed by the classes' virtual dtor.
Use *OperandList;
- /// NumOperands - The number of values used by this User.
- ///
- unsigned NumOperands;
-
void *operator new(size_t s, unsigned Us);
User(Type *ty, unsigned vty, Use *OpList, unsigned NumOps)
- : Value(ty, vty), OperandList(OpList), NumOperands(NumOps) {}
+ : Value(ty, vty), NumOperands(NumOps), OperandList(OpList) {}
Use *allocHungoffUses(unsigned) const;
void dropHungoffUses() {
Use::zap(OperandList, OperandList + NumOperands, true);
/// Convenience iterator for directly iterating over the Values in the
/// OperandList
struct value_op_iterator
- : iterator_adaptor_base<value_op_iterator, op_iterator, Value *, Value *,
- Value *> {
+ : iterator_adaptor_base<value_op_iterator, op_iterator,
+ std::random_access_iterator_tag, Value *,
+ ptrdiff_t, Value *, Value *> {
explicit value_op_iterator(Use *U = nullptr) : iterator_adaptor_base(U) {}
Value *operator*() const { return *I; }