From: Brian Norris Date: Wed, 6 Feb 2013 22:42:00 +0000 (-0800) Subject: cyclegraph: mergeNodes(): return early if we violate RMW X-Git-Tag: oopsla2013~278 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=commitdiff_plain;h=3e538ef764be5b82ef8a58f1fcdf98708cd8aa73 cyclegraph: mergeNodes(): return early if we violate RMW To be consistent, and to prevent unecessary merging work, we should simply return from the mergeNodes() function as soon as we know it has failed. --- diff --git a/cyclegraph.cc b/cyclegraph.cc index b138372..89fc36c 100644 --- a/cyclegraph.cc +++ b/cyclegraph.cc @@ -147,8 +147,10 @@ bool CycleGraph::mergeNodes(CycleNode *w_node, CycleNode *p_node, /* Transfer the RMW */ CycleNode *promise_rmw = p_node->getRMW(); - if (promise_rmw && promise_rmw != w_node->getRMW() && w_node->setRMW(promise_rmw)) + if (promise_rmw && promise_rmw != w_node->getRMW() && w_node->setRMW(promise_rmw)) { hasCycles = true; + return false; + } /* Transfer back edges to w_node */ while (p_node->getNumBackEdges() > 0) {