Merge branch 'branch-weiyu' of ssh://plrg.eecs.uci.edu:/home/git/random-fuzzer into...
[c11tester.git] / cyclegraph.cc
index 7cfd21c87ef1168f86d059d0b19a5054bf7487a4..79030985e6b45e5a3555c4d66ef5a4bbea40dd44 100644 (file)
@@ -81,7 +81,7 @@ void CycleGraph::addNodeEdge(CycleNode *fromnode, CycleNode *tonode, bool forcee
 
        /* Propagate clock vector changes */
        if (tonode->cv->merge(fromnode->cv)) {
-               queue->push_back(fromnode);
+               queue->push_back(tonode);
                while(!queue->empty()) {
                        const CycleNode *node = queue->back();
                        queue->pop_back();
@@ -138,31 +138,31 @@ void CycleGraph::addRMWEdge(const ModelAction *from, const ModelAction *rmw)
 }
 
 void CycleGraph::addEdges(SnapList<ModelAction *> * edgeset, const ModelAction *to) {
-  for(SnapList<ModelAction*>::iterator it = edgeset->begin();it!=edgeset->end();) {
-               ModelAction *act = *it;
+       for(sllnode<ModelAction*> * it = edgeset->begin();it!=NULL;) {
+               ModelAction *act = it->getVal();
                CycleNode *node = getNode(act);
-               SnapList<ModelAction*>::iterator it2 = it;
-               it2++;
-               for(;it2!=edgeset->end(); ) {
-                       ModelAction *act2 = *it2;
+               sllnode<ModelAction*> * it2 = it;
+               it2=it2->getNext();
+               for(;it2!=NULL; ) {
+                       ModelAction *act2 = it2->getVal();
                        CycleNode *node2 = getNode(act2);
                        if (checkReachable(node, node2)) {
-                         it = edgeset->erase(it);
-                         goto endouterloop;
+                               it = edgeset->erase(it);
+                               goto endouterloop;
                        } else if (checkReachable(node2, node)) {
-                         it2 = edgeset->erase(it2);
-                         goto endinnerloop;
+                               it2 = edgeset->erase(it2);
+                               goto endinnerloop;
                        }
-                       it2++;
+                       it2=it2->getNext();
 endinnerloop:
                        ;
                }
-               it++;
+               it=it->getNext();
 endouterloop:
                ;
-  }
-  for(SnapList<ModelAction*>::iterator it = edgeset->begin();it!=edgeset->end();it++) {
-               ModelAction *from = *it;
+       }
+       for(sllnode<ModelAction*> *it = edgeset->begin();it!=NULL;it=it->getNext()) {
+               ModelAction *from = it->getVal();
                addEdge(from, to, from->get_tid() == to->get_tid());
        }
 }