[WebAssembly] Fix a typo in a comment.
[oota-llvm.git] / lib / IR / Use.cpp
index b6720e5676496789b8eed104663387965daf4d3f..cae845d99fe58fe3a943b4d38566f3339c7af805 100644 (file)
@@ -8,33 +8,33 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/IR/Use.h"
+#include "llvm/IR/User.h"
 #include "llvm/IR/Value.h"
 #include <new>
 
 namespace llvm {
 
 void Use::swap(Use &RHS) {
-  Value *V1(Val);
-  Value *V2(RHS.Val);
-  if (V1 != V2) {
-    if (V1) {
-      removeFromList();
-    }
+  if (Val == RHS.Val)
+    return;
 
-    if (V2) {
-      RHS.removeFromList();
-      Val = V2;
-      V2->addUse(*this);
-    } else {
-      Val = 0;
-    }
+  if (Val)
+    removeFromList();
 
-    if (V1) {
-      RHS.Val = V1;
-      V1->addUse(RHS);
-    } else {
-      RHS.Val = 0;
-    }
+  Value *OldVal = Val;
+  if (RHS.Val) {
+    RHS.removeFromList();
+    Val = RHS.Val;
+    Val->addUse(*this);
+  } else {
+    Val = nullptr;
+  }
+
+  if (OldVal) {
+    RHS.Val = OldVal;
+    RHS.Val->addUse(RHS);
+  } else {
+    RHS.Val = nullptr;
   }
 }
 
@@ -45,10 +45,14 @@ User *Use::getUser() const {
                        : reinterpret_cast<User *>(const_cast<Use *>(End));
 }
 
-// Sets up the waymarking algoritm's tags for a series of Uses. See the
+unsigned Use::getOperandNo() const {
+  return this - getUser()->op_begin();
+}
+
+// Sets up the waymarking algorithm's tags for a series of Uses. See the
 // algorithm details here:
 //
-//   http://www.llvm.org/docs/ProgrammersManual.html#UserLayout
+//   http://www.llvm.org/docs/ProgrammersManual.html#the-waymarking-algorithm
 //
 Use *Use::initTags(Use *const Start, Use *Stop) {
   ptrdiff_t Done = 0;