Fix yield bug
[satcheck.git] / schedulebuilder.cc
index 9e7d3debe71c6bc181ad5bc0da64b573e1fabf03..6cf4b5aae9598963b8e6a86b2fa6cf68c7319b78 100644 (file)
@@ -13,6 +13,7 @@
 #include "constgen.h"
 #include "branchrecord.h"
 #include "storeloadset.h"
+#include "model.h"
 
 ScheduleBuilder::ScheduleBuilder(MCExecution *_execution, ConstGen *cgen) :
        cg(cgen),
@@ -31,20 +32,20 @@ void neatPrint(EPRecord *r, ConstGen *cgen, bool *satsolution) {
        case LOAD: {
                StoreLoadSet * sls=cgen->getStoreLoadSet(r);
                model_print("address=%p ",  sls->getAddressEncoding(cgen, r, satsolution));
-               model_print("rd=%lu ", sls->getValueEncoding(cgen, r, satsolution));
+               model_print("rd=%llu ", sls->getValueEncoding(cgen, r, satsolution));
        }
        break;
        case STORE: {
                StoreLoadSet * sls=cgen->getStoreLoadSet(r);
                model_print("address=%p ",  sls->getAddressEncoding(cgen, r, satsolution));
-               model_print("wr=%lu ", sls->getValueEncoding(cgen, r, satsolution));
+               model_print("wr=%llu ", sls->getValueEncoding(cgen, r, satsolution));
        }
        break;
        case RMW: {
                StoreLoadSet * sls=cgen->getStoreLoadSet(r);
                model_print("address=%p ",  sls->getAddressEncoding(cgen, r, satsolution));
-               model_print("rd=%lu ", sls->getRMWRValueEncoding(cgen, r, satsolution));
-               model_print("wr=%lu ", sls->getValueEncoding(cgen, r, satsolution));
+               model_print("rd=%llu ", sls->getRMWRValueEncoding(cgen, r, satsolution));
+               model_print("wr=%llu ", sls->getValueEncoding(cgen, r, satsolution));
        }
        break;
        default:
@@ -215,6 +216,8 @@ EPRecord * ScheduleBuilder::processRecord(EPRecord *record, bool *satsolution) {
        case LABEL:
                break;
        case YIELD:
+               if (model->params.noexecyields)
+                       return NULL;
                break;
        default:
                ASSERT(0);