diff --git a/include/llvm/IR/Instructions.h b/include/llvm/IR/Instructions.h index eeea9945e8a..786fa8cdc21 100644 --- a/include/llvm/IR/Instructions.h +++ b/include/llvm/IR/Instructions.h @@ -1259,6 +1259,10 @@ public: Value *getArgOperand(unsigned i) const { return getOperand(i); } void setArgOperand(unsigned i, Value *v) { setOperand(i, v); } + /// \brief Wrappers for getting the \c Use of a call argument. + const Use &getArgOperandUse(unsigned i) const { return getOperandUse(i); } + Use &getArgOperandUse(unsigned i) { return getOperandUse(i); } + /// getCallingConv/setCallingConv - Get or set the calling convention of this /// function call. CallingConv::ID getCallingConv() const { @@ -2903,6 +2907,10 @@ public: Value *getArgOperand(unsigned i) const { return getOperand(i); } void setArgOperand(unsigned i, Value *v) { setOperand(i, v); } + /// \brief Wrappers for getting the \c Use of a call argument. + const Use &getArgOperandUse(unsigned i) const { return getOperandUse(i); } + Use &getArgOperandUse(unsigned i) { return getOperandUse(i); } + /// getCallingConv/setCallingConv - Get or set the calling convention of this /// function call. CallingConv::ID getCallingConv() const { diff --git a/include/llvm/IR/IntrinsicInst.h b/include/llvm/IR/IntrinsicInst.h index 8344c56680a..e053f7867c5 100644 --- a/include/llvm/IR/IntrinsicInst.h +++ b/include/llvm/IR/IntrinsicInst.h @@ -118,8 +118,13 @@ namespace llvm { class MemIntrinsic : public IntrinsicInst { public: Value *getRawDest() const { return const_cast(getArgOperand(0)); } + const Use &getRawDestUse() const { return getArgOperandUse(0); } + Use &getRawDestUse() { return getArgOperandUse(0); } Value *getLength() const { return const_cast(getArgOperand(2)); } + const Use &getLengthUse() const { return getArgOperandUse(2); } + Use &getLengthUse() { return getArgOperandUse(2); } + ConstantInt *getAlignmentCst() const { return cast(const_cast(getArgOperand(3))); } @@ -192,6 +197,8 @@ namespace llvm { /// get* - Return the arguments to the instruction. /// Value *getValue() const { return const_cast(getArgOperand(1)); } + const Use &getValueUse() const { return getArgOperandUse(1); } + Use &getValueUse() { return getArgOperandUse(1); } void setValue(Value *Val) { assert(getValue()->getType() == Val->getType() && @@ -215,6 +222,8 @@ namespace llvm { /// get* - Return the arguments to the instruction. /// Value *getRawSource() const { return const_cast(getArgOperand(1)); } + const Use &getRawSourceUse() const { return getArgOperandUse(1); } + Use &getRawSourceUse() { return getArgOperandUse(1); } /// getSource - This is just like getRawSource, but it strips off any cast /// instructions that feed it, giving the original input. The returned