From 90aaa1dcf7bac94faf1125a0345b41d7d68d0a4f Mon Sep 17 00:00:00 2001 From: Daniel Berlin Date: Sun, 16 Sep 2007 23:59:53 +0000 Subject: Fix bug in andersen's related to test_and_set. Add operator == and != to SparseBitVector. Simplify code for test_and_set llvm-svn: 42018 --- llvm/lib/Analysis/IPA/Andersens.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'llvm/lib/Analysis/IPA/Andersens.cpp') diff --git a/llvm/lib/Analysis/IPA/Andersens.cpp b/llvm/lib/Analysis/IPA/Andersens.cpp index fed246091d7..9a1ff569b88 100644 --- a/llvm/lib/Analysis/IPA/Andersens.cpp +++ b/llvm/lib/Analysis/IPA/Andersens.cpp @@ -1212,10 +1212,9 @@ void Andersens::SolveConstraints() { } 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 @@ void Andersens::SolveConstraints() { // 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 -- cgit v1.2.3