forked from OSchip/llvm-project
[cleanup] Add a getOperandNo method to the Use class and implement it
out-of-line so that it can refer to the methods on User. As a consequence, this removes the need to define one template method if value_use_iterator in the extremely strange User.h header (!!!). This makse Use.h slightly less peculiar. The only remaining real peculiarity is the definition of Use::set in Value.h llvm-svn: 202805
This commit is contained in:
parent
230f29f910
commit
387e059c04
|
@ -116,6 +116,9 @@ public:
|
||||||
|
|
||||||
Use *getNext() const { return Next; }
|
Use *getNext() const { return Next; }
|
||||||
|
|
||||||
|
/// \brief Return the operand # of this use in its User.
|
||||||
|
unsigned getOperandNo() const;
|
||||||
|
|
||||||
/// \brief Initializes the waymarking tags on an array of Uses.
|
/// \brief Initializes the waymarking tags on an array of Uses.
|
||||||
///
|
///
|
||||||
/// This sets up the array of Uses such that getUser() can find the User from
|
/// This sets up the array of Uses such that getUser() can find the User from
|
||||||
|
@ -208,9 +211,8 @@ public:
|
||||||
Use &getUse() const { return *U; }
|
Use &getUse() const { return *U; }
|
||||||
|
|
||||||
/// \brief Return the operand # of this use in its User.
|
/// \brief Return the operand # of this use in its User.
|
||||||
///
|
/// FIXME: Replace all callers with a direct call to Use::getOperandNo.
|
||||||
/// Defined in User.h
|
unsigned getOperandNo() const { return U->getOperandNo(); }
|
||||||
unsigned getOperandNo() const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Create wrappers for C Binding types (see CBindingWrapping.h).
|
// Create wrappers for C Binding types (see CBindingWrapping.h).
|
||||||
|
|
|
@ -206,12 +206,6 @@ template<> struct simplify_type<User::const_op_iterator> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// value_use_iterator::getOperandNo - Requires the definition of the User class.
|
|
||||||
template<typename UserTy>
|
|
||||||
unsigned value_use_iterator<UserTy>::getOperandNo() const {
|
|
||||||
return U - U->getUser()->op_begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // End llvm namespace
|
} // End llvm namespace
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "llvm/IR/Use.h"
|
#include "llvm/IR/Use.h"
|
||||||
|
#include "llvm/IR/User.h"
|
||||||
#include "llvm/IR/Value.h"
|
#include "llvm/IR/Value.h"
|
||||||
#include <new>
|
#include <new>
|
||||||
|
|
||||||
|
@ -44,6 +45,10 @@ User *Use::getUser() const {
|
||||||
: reinterpret_cast<User *>(const_cast<Use *>(End));
|
: reinterpret_cast<User *>(const_cast<Use *>(End));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned Use::getOperandNo() const {
|
||||||
|
return this - getUser()->op_begin();
|
||||||
|
}
|
||||||
|
|
||||||
// Sets up the waymarking algoritm's tags for a series of Uses. See the
|
// Sets up the waymarking algoritm's tags for a series of Uses. See the
|
||||||
// algorithm details here:
|
// algorithm details here:
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue