if (!same_var(act))
return false;
- // Explore interleavings of seqcst writes to guarantee total
+ // Explore interleavings of seqcst writes/fences to guarantee total
// order of seq_cst operations that don't commute
- if ((could_be_write() || act->could_be_write()) && is_seqcst() && act->is_seqcst())
+ if ((could_be_write() || act->could_be_write() || is_fence() || act->is_fence()) && is_seqcst() && act->is_seqcst())
return true;
// Explore synchronizing read/write pairs
* Set this action's read-from promise
* @param promise The promise to read from
*/
-void ModelAction::set_read_from_promise(const Promise *promise)
+void ModelAction::set_read_from_promise(Promise *promise)
{
ASSERT(is_read());
reads_from_promise = promise;