diff options
Diffstat (limited to 'include/llvm/OperandTraits.h')
-rw-r--r-- | include/llvm/OperandTraits.h | 41 |
1 files changed, 2 insertions, 39 deletions
diff --git a/include/llvm/OperandTraits.h b/include/llvm/OperandTraits.h index f0df5fa..3d8dc32 100644 --- a/include/llvm/OperandTraits.h +++ b/include/llvm/OperandTraits.h @@ -136,45 +136,8 @@ CLASS::const_op_iterator CLASS::op_end() const { \ VALUECLASS *CLASS::getOperand(unsigned i_nocapture) const { \ assert(i_nocapture < OperandTraits<CLASS>::operands(this) \ && "getOperand() out of range!"); \ - return static_cast<VALUECLASS*>( \ - OperandTraits<CLASS>::op_begin(const_cast<CLASS*>(this))[i_nocapture]); \ -} \ -void CLASS::setOperand(unsigned i_nocapture, VALUECLASS *Val_nocapture) { \ - assert(i_nocapture < OperandTraits<CLASS>::operands(this) \ - && "setOperand() out of range!"); \ - OperandTraits<CLASS>::op_begin(this)[i_nocapture] = Val_nocapture; \ -} \ -unsigned CLASS::getNumOperands() const { \ - return OperandTraits<CLASS>::operands(this); \ -} \ -template <int Idx_nocapture> Use &CLASS::Op() { \ - return this->OpFrom<Idx_nocapture>(this); \ -} \ -template <int Idx_nocapture> const Use &CLASS::Op() const { \ - return this->OpFrom<Idx_nocapture>(this); \ -} - - -/// Macro for generating out-of-class operand accessor -/// definitions with casted result -#define DEFINE_TRANSPARENT_CASTED_OPERAND_ACCESSORS(CLASS, VALUECLASS) \ -CLASS::op_iterator CLASS::op_begin() { \ - return OperandTraits<CLASS>::op_begin(this); \ -} \ -CLASS::const_op_iterator CLASS::op_begin() const { \ - return OperandTraits<CLASS>::op_begin(const_cast<CLASS*>(this)); \ -} \ -CLASS::op_iterator CLASS::op_end() { \ - return OperandTraits<CLASS>::op_end(this); \ -} \ -CLASS::const_op_iterator CLASS::op_end() const { \ - return OperandTraits<CLASS>::op_end(const_cast<CLASS*>(this)); \ -} \ -VALUECLASS *CLASS::getOperand(unsigned i_nocapture) const { \ - assert(i_nocapture < OperandTraits<CLASS>::operands(this) \ - && "getOperand() out of range!"); \ - return cast<VALUECLASS>( \ - OperandTraits<CLASS>::op_begin(const_cast<CLASS*>(this))[i_nocapture]); \ + return cast_or_null<VALUECLASS>( \ + OperandTraits<CLASS>::op_begin(const_cast<CLASS*>(this))[i_nocapture].get()); \ } \ void CLASS::setOperand(unsigned i_nocapture, VALUECLASS *Val_nocapture) { \ assert(i_nocapture < OperandTraits<CLASS>::operands(this) \ |