unsigned NumOperands;
void *operator new(size_t s, unsigned Us);
+ void *operator new(size_t s, unsigned Us, bool Prefix);
User(const Type *ty, unsigned vty, Use *OpList, unsigned NumOps)
: Value(ty, vty), OperandList(OpList), NumOperands(NumOps) {}
Use *allocHungoffUses(unsigned) const;
}
public:
~User() {
- Use::zap(OperandList, OperandList + NumOperands);
+ if ((intptr_t(OperandList) & 1) == 0)
+ Use::zap(OperandList, OperandList + NumOperands);
}
/// operator delete - free memory allocated for User and Use objects
void operator delete(void *Usr);
void operator delete(void*, unsigned) {
assert(0 && "Constructor throws?");
}
+ /// placement delete - required by std, but never called.
+ void operator delete(void*, unsigned, bool) {
+ assert(0 && "Constructor throws?");
+ }
protected:
template <int Idx, typename U> static Use &OpFrom(const U *that) {
return Idx < 0