aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-02-05 06:29:23 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-02-05 06:29:23 +0000
commit4ee621125876cc954cba5280dd9395552755a871 (patch)
tree2fcdf9127e7ef02c3d6c2d13e863bc8fe2fba3ec /lib
parent35409221bc8c170c71041594927aaf2b2a6d4832 (diff)
downloadexternal_llvm-4ee621125876cc954cba5280dd9395552755a871.zip
external_llvm-4ee621125876cc954cba5280dd9395552755a871.tar.gz
external_llvm-4ee621125876cc954cba5280dd9395552755a871.tar.bz2
* 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
Diffstat (limited to 'lib')
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAG.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index a8cd865..8c08378 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -2177,7 +2177,7 @@ MVT::ValueType *SDNode::getValueTypeList(MVT::ValueType VT) {
/// hasNUsesOfValue - Return true if there are exactly NUSES uses of the
/// indicated value. This method ignores uses of other values defined by this
/// operation.
-bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) {
+bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) const {
assert(Value < getNumValues() && "Bad value!");
// If there is only one value, this is easy.
@@ -2185,11 +2185,11 @@ bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) {
return use_size() == NUses;
if (Uses.size() < NUses) return false;
- SDOperand TheValue(this, Value);
+ SDOperand TheValue(const_cast<SDNode *>(this), Value);
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) {
SDNode *User = *UI;
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 {
switch (getOpcode()) {
default: