diff options
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/InstrTypes.h | 6 | ||||
-rw-r--r-- | include/llvm/Instructions.h | 23 |
2 files changed, 7 insertions, 22 deletions
diff --git a/include/llvm/InstrTypes.h b/include/llvm/InstrTypes.h index 25fa5f0..a320ad0 100644 --- a/include/llvm/InstrTypes.h +++ b/include/llvm/InstrTypes.h @@ -85,8 +85,9 @@ public: //===----------------------------------------------------------------------===// class UnaryInstruction : public Instruction { - void *operator new(size_t, unsigned); // Do not implement - + void *operator new(size_t, unsigned); // Do not implement + UnaryInstruction(const UnaryInstruction&); // Do not implement + protected: UnaryInstruction(const Type *Ty, unsigned iType, Value *V, Instruction *IB = 0) : Instruction(Ty, iType, &Op<0>(), 1, IB) { @@ -116,6 +117,7 @@ public: I->getOpcode() == Instruction::Free || I->getOpcode() == Instruction::Load || I->getOpcode() == Instruction::VAArg || + I->getOpcode() == Instruction::GetResult || (I->getOpcode() >= CastOpsBegin && I->getOpcode() < CastOpsEnd); } static inline bool classof(const Value *V) { diff --git a/include/llvm/Instructions.h b/include/llvm/Instructions.h index e7b42f34..3b3aecf 100644 --- a/include/llvm/Instructions.h +++ b/include/llvm/Instructions.h @@ -2761,20 +2761,14 @@ public: /// GetResultInst - This instruction extracts individual result value from /// aggregate value, where aggregate value is returned by CallInst. /// -class GetResultInst : public /*FIXME: Unary*/Instruction { - void *operator new(size_t, unsigned); // DO NOT IMPLEMENT +class GetResultInst : public UnaryInstruction { unsigned Idx; GetResultInst(const GetResultInst &GRI) : - Instruction(GRI.getType(), Instruction::GetResult, &Op<0>(), 1) { - Op<0>().init(GRI.Op<0>(), this); - Idx = GRI.Idx; + UnaryInstruction(GRI.getType(), Instruction::GetResult, GRI.getOperand(0)), + Idx(GRI.Idx) { } public: - // allocate space for exactly one operand - void *operator new(size_t s) { - return User::operator new(s, 1); - } GetResultInst(Value *Aggr, unsigned index, const std::string &Name = "", Instruction *InsertBefore = 0); @@ -2797,9 +2791,6 @@ public: return Idx; } - /// Provide fast operand accessors - DECLARE_TRANSPARENT_OPERAND_ACCESSORS(Value); - // Methods for support type inquiry through isa, cast, and dyn_cast: static inline bool classof(const GetResultInst *) { return true; } static inline bool classof(const Instruction *I) { @@ -2810,14 +2801,6 @@ public: } }; -// FIXME: these are redundant if GetResultInst < UnaryInstruction -template <> -struct OperandTraits<GetResultInst> : FixedNumOperandTraits<1> { -}; - -DEFINE_TRANSPARENT_OPERAND_ACCESSORS(GetResultInst, Value) - - } // End llvm namespace #endif |