hasAnyUseOfValue can check SDUse nodes of its users directly instead
authorDan Gohman <gohman@apple.com>
Wed, 9 Jul 2008 22:39:01 +0000 (22:39 +0000)
committerDan Gohman <gohman@apple.com>
Wed, 9 Jul 2008 22:39:01 +0000 (22:39 +0000)
of examining every operand of every user.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53374 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index fc70c19ff6d2bb980304496116c09bb0db3524bd..0eb92967555ef99292b7b60d85453b8b6ea0a911 100644 (file)
@@ -4401,8 +4401,6 @@ bool SDNode::hasNUsesOfValue(unsigned NUses, unsigned Value) const {
 
   SDOperand TheValue(const_cast<SDNode *>(this), Value);
 
-  SmallPtrSet<SDNode*, 32> UsersHandled;
-
   // TODO: Only iterate over uses of a given value of the node
   for (SDNode::use_iterator UI = use_begin(), E = use_end(); UI != E; ++UI) {
     if (*UI == TheValue) {
@@ -4426,17 +4424,9 @@ bool SDNode::hasAnyUseOfValue(unsigned Value) const {
 
   SDOperand TheValue(const_cast<SDNode *>(this), Value);
 
-  SmallPtrSet<SDNode*, 32> UsersHandled;
-
-  for (SDNode::use_iterator UI = use_begin(), E = use_end(); UI != E; ++UI) {
-    SDNode *User = UI->getUser();
-    if (User->getNumOperands() == 1 ||
-        UsersHandled.insert(User))     // First time we've seen this?
-      for (unsigned i = 0, e = User->getNumOperands(); i != e; ++i)
-        if (User->getOperand(i) == TheValue) {
-          return true;
-        }
-  }
+  for (SDNode::use_iterator UI = use_begin(), E = use_end(); UI != E; ++UI)
+    if (UI->getSDOperand() == TheValue)
+      return true;
 
   return false;
 }