mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-10 04:33:40 +00:00
* Added SDNode::isOnlyUse().
* Fix hasNUsesOfValue(), it should be const. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25990 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
35409221bc
commit
4ee6211258
@ -619,7 +619,10 @@ public:
|
|||||||
/// hasNUsesOfValue - Return true if there are exactly NUSES uses of the
|
/// hasNUsesOfValue - Return true if there are exactly NUSES uses of the
|
||||||
/// indicated value. This method ignores uses of other values defined by this
|
/// indicated value. This method ignores uses of other values defined by this
|
||||||
/// operation.
|
/// operation.
|
||||||
bool hasNUsesOfValue(unsigned NUses, unsigned Value);
|
bool hasNUsesOfValue(unsigned NUses, unsigned Value) const;
|
||||||
|
|
||||||
|
// isOnlyUse - Return true if this node is the only use of N.
|
||||||
|
bool isOnlyUse(SDNode *N) const;
|
||||||
|
|
||||||
/// getNumOperands - Return the number of values used by this operation.
|
/// getNumOperands - Return the number of values used by this operation.
|
||||||
///
|
///
|
||||||
|
@ -2177,7 +2177,7 @@ MVT::ValueType *SDNode::getValueTypeList(MVT::ValueType VT) {
|
|||||||
/// hasNUsesOfValue - Return true if there are exactly NUSES uses of the
|
/// hasNUsesOfValue - Return true if there are exactly NUSES uses of the
|
||||||
/// indicated value. This method ignores uses of other values defined by this
|
/// indicated value. This method ignores uses of other values defined by this
|
||||||
/// operation.
|
/// operation.
|
||||||
bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) {
|
bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) const {
|
||||||
assert(Value < getNumValues() && "Bad value!");
|
assert(Value < getNumValues() && "Bad value!");
|
||||||
|
|
||||||
// If there is only one value, this is easy.
|
// If there is only one value, this is easy.
|
||||||
@ -2185,11 +2185,11 @@ bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) {
|
|||||||
return use_size() == NUses;
|
return use_size() == NUses;
|
||||||
if (Uses.size() < NUses) return false;
|
if (Uses.size() < NUses) return false;
|
||||||
|
|
||||||
SDOperand TheValue(this, Value);
|
SDOperand TheValue(const_cast<SDNode *>(this), Value);
|
||||||
|
|
||||||
std::set<SDNode*> UsersHandled;
|
std::set<SDNode*> UsersHandled;
|
||||||
|
|
||||||
for (std::vector<SDNode*>::iterator UI = Uses.begin(), E = Uses.end();
|
for (std::vector<SDNode*>::const_iterator UI = Uses.begin(), E = Uses.end();
|
||||||
UI != E; ++UI) {
|
UI != E; ++UI) {
|
||||||
SDNode *User = *UI;
|
SDNode *User = *UI;
|
||||||
if (User->getNumOperands() == 1 ||
|
if (User->getNumOperands() == 1 ||
|
||||||
@ -2207,6 +2207,21 @@ bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// isOnlyUse - Return true if this node is the only use of N.
|
||||||
|
bool SDNode::isOnlyUse(SDNode *N) const {
|
||||||
|
bool Seen = false;
|
||||||
|
for (SDNode::use_iterator I = N->use_begin(), E = N->use_end(); I != E; ++I) {
|
||||||
|
SDNode *User = *I;
|
||||||
|
if (User == this)
|
||||||
|
Seen = true;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Seen;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const char *SDNode::getOperationName(const SelectionDAG *G) const {
|
const char *SDNode::getOperationName(const SelectionDAG *G) const {
|
||||||
switch (getOpcode()) {
|
switch (getOpcode()) {
|
||||||
default:
|
default:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user