PR3934: Fix a bogus two-address pass assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68979 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/TwoAddressInstructionPass.cpp b/lib/CodeGen/TwoAddressInstructionPass.cpp
index 20770a1..8a18dc0 100644
--- a/lib/CodeGen/TwoAddressInstructionPass.cpp
+++ b/lib/CodeGen/TwoAddressInstructionPass.cpp
@@ -628,10 +628,10 @@
   if (IsDstPhys && !IsSrcPhys)
     DstRegMap.insert(std::make_pair(SrcReg, DstReg));
   else if (!IsDstPhys && IsSrcPhys) {
-    bool isNew =
-      SrcRegMap.insert(std::make_pair(DstReg, SrcReg)).second;
-    isNew = isNew; // Silence compiler warning.
-    assert(isNew && "Can't map to two src physical registers!");
+    bool isNew = SrcRegMap.insert(std::make_pair(DstReg, SrcReg)).second;
+    if (!isNew)
+      assert(SrcRegMap[DstReg] == SrcReg &&
+             "Can't map to two src physical registers!");
 
     SmallVector<unsigned, 4> VirtRegPairs;
     bool isCopy = false;
@@ -653,8 +653,9 @@
         break;
       }
       bool isNew = SrcRegMap.insert(std::make_pair(NewReg, DstReg)).second;
-      isNew = isNew; // Silence compiler warning.
-      assert(isNew && "Can't map to two src physical registers!");
+      if (!isNew)
+      assert(SrcRegMap[NewReg] == DstReg &&
+             "Can't map to two src physical registers!");
       VirtRegPairs.push_back(NewReg);
       DstReg = NewReg;
     }
@@ -666,8 +667,9 @@
         unsigned FromReg = VirtRegPairs.back();
         VirtRegPairs.pop_back();
         bool isNew = DstRegMap.insert(std::make_pair(FromReg, ToReg)).second;
-        isNew = isNew; // Silence compiler warning.
-        assert(isNew && "Can't map to two dst physical registers!");
+        if (!isNew)
+          assert(DstRegMap[FromReg] == ToReg &&
+                 "Can't map to two dst physical registers!");
         ToReg = FromReg;
       }
     }