unsigned NumOperands;
void *operator new(size_t s, unsigned Us);
- User(const Type *Ty, unsigned vty, Use *OpList, unsigned NumOps)
- : Value(Ty, vty), OperandList(OpList), NumOperands(NumOps) {}
+ User(const Type *ty, unsigned vty, Use *OpList, unsigned NumOps)
+ : Value(ty, vty), OperandList(OpList), NumOperands(NumOps) {}
Use *allocHungoffUses(unsigned) const;
void dropHungoffUses(Use *U) {
if (OperandList == U) {
~User() {
Use::zap(OperandList, OperandList + NumOperands);
}
+ /// operator delete - free memory allocated for User and Use objects
void operator delete(void *Usr);
+ /// placement delete - required by std, but never called.
+ void operator delete(void*, unsigned) {
+ assert(0 && "Constructor throws?");
+ }
template <unsigned Idx> Use &Op() {
return OperandTraits<User>::op_begin(this)[Idx];
}