Fix bug in andersen's related to test_and_set.
Add operator == and != to SparseBitVector.
Simplify code for test_and_set


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42018 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/IPA/Andersens.cpp b/lib/Analysis/IPA/Andersens.cpp
index fed2460..9a1ff56 100644
--- a/lib/Analysis/IPA/Andersens.cpp
+++ b/lib/Analysis/IPA/Andersens.cpp
@@ -1212,10 +1212,9 @@
   }
 
   do {
-     Changed = false;
-
+    Changed = false;
     ++NumIters;
-    DOUT << "Starting iteration #" << Iteration++ << "!\n";
+    DOUT << "Starting iteration #" << Iteration++;
     // TODO: In the microoptimization category, we could just make Topo2Node
     // a fast map and thus only contain the visited nodes.
     for (unsigned i = 0; i < GraphNodes.size(); ++i) {
@@ -1295,7 +1294,7 @@
 
           // Add an edge to the graph, so we can just do regular bitmap ior next
           // time.  It may also let us notice a cycle.
-          if (!GraphNodes[*Src].Edges->test_and_set(*Dest)) {
+          if (GraphNodes[*Src].Edges->test_and_set(*Dest)) {
             if (GraphNodes[*Dest].PointsTo |= *(GraphNodes[*Src].PointsTo)) {
               GraphNodes[*Dest].Changed = true;
               // If we changed a node we've already processed, we need another