From: Brian Demsky Date: Tue, 9 Oct 2012 06:35:21 +0000 (-0700) Subject: did a little more looking at infeasible executions... X-Git-Tag: pldi2013~70 X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker.git;a=commitdiff_plain;h=ee0f520bb244e2aa820e6b5a7e24c43c396b0905 did a little more looking at infeasible executions... another obvious property we missed...kills about 1/3 of the infeasible executions... --- diff --git a/model.cc b/model.cc index e11dcf7..ee3ce99 100644 --- a/model.cc +++ b/model.cc @@ -1779,6 +1779,11 @@ void ModelChecker::mo_check_promises(thread_id_t tid, const ModelAction *write) //do we have a pwrite for the promise, if not, set it if (promise->get_write() == NULL ) { promise->set_write(write); + //The pwrite cannot happen before the promise + if (write->happens_before(act) && (write != act)) { + failed_promise = true; + return; + } } if (mo_graph->checkPromise(write, promise)) { failed_promise = true;