From 3e538ef764be5b82ef8a58f1fcdf98708cd8aa73 Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Wed, 6 Feb 2013 14:42:00 -0800 Subject: [PATCH] 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. --- cyclegraph.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cyclegraph.cc b/cyclegraph.cc index b1383729..89fc36cc 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) { -- 2.34.1