X-Git-Url: http://plrg.eecs.uci.edu/git/?p=c11tester.git;a=blobdiff_plain;f=model.cc;h=bfb63e48ddd5d0d9ac0bc096b3604d3e6d9e640d;hp=446137922bbce9b56aa37c092db174a0dc3df71f;hb=963f325c5b5df37487e17c3a05f4d15efabb8870;hpb=3510b440b186949cbc0760d369da6787f0def7ac diff --git a/model.cc b/model.cc index 44613792..bfb63e48 100644 --- a/model.cc +++ b/model.cc @@ -1765,13 +1765,13 @@ bool ModelChecker::r_modification_order(ModelAction *curr, const rf_type *rf) added = mo_graph->addEdge(act, rf) || added; } } else { - const ModelAction *prevreadfrom = act->get_reads_from(); - //if the previous read is unresolved, keep going... - if (prevreadfrom == NULL) - continue; - - if (!prevreadfrom->equals(rf)) { - added = mo_graph->addEdge(prevreadfrom, rf) || added; + const ModelAction *prevrf = act->get_reads_from(); + const Promise *prevrf_promise = act->get_reads_from_promise(); + if (prevrf) { + if (!prevrf->equals(rf)) + added = mo_graph->addEdge(prevrf, rf) || added; + } else if (!prevrf->equals(rf)) { + added = mo_graph->addEdge(prevrf_promise, rf) || added; } } break;