Fix apparent bug...
[satcheck.git] / clang / test / various-loads.c
1 #include <threads.h>
2 #include <stdbool.h>
3 #include "libinterface.h"
4
5 /* atomic */ int flag1, flag2;
6
7 #define true 1
8 #define false 0
9 #define NULL 0
10
11 uint64_t var = 0, var2 = 0;
12
13 void p0() {MC2_nextOpLoad(MCID_NODEP); 
14     load_64(&flag2);
15     MCID _mq; _mq=MC2_nextOpLoad(MCID_NODEP); int q = load_64(&flag1);
16     MCID _br0;
17     MCID _m_cond0_m=MC2_nextOpLoad(MCID_NODEP); 
18     int _cond0 = load_64(&flag1);
19     MCID _cond0_m = MC2_function_id(1, 1, sizeof(_cond0), _cond0);
20     if (_cond0) {
21                 _br0 = MC2_branchUsesID(_cond0_m, 1, 2, true);
22                 ;
23                 MC2_merge(_br0);
24         }
25  else { _br0 = MC2_branchUsesID(_cond0_m, 0, 2, true);  MC2_merge(_br0);
26          }      MCID _br1;
27         MC2_nextOpLoad(MCID_NODEP); 
28         int _cond1 = !load_64(&flag1);
29         MCID _cond1_m = MC2_function_id(2, 1, sizeof(_cond1), _cond1);
30         if (_cond1) {
31                 _br1 = MC2_branchUsesID(_cond1_m, 0, 2, true);
32                 ;
33                 MC2_merge(_br1);
34         }
35  else { _br1 = MC2_branchUsesID(_cond1_m, 1, 2, true);  MC2_merge(_br1);
36  }}
37
38 void p1() {
39         MCID _rmw0 = MC2_nextRMW(MCID_NODEP, MCID_NODEP, MCID_NODEP);
40         rmw_64(CAS, &flag1, var, var2);
41         MCID _rmw1 = MC2_nextRMW(MCID_NODEP, MCID_NODEP, MCID_NODEP);
42         int r = rmw_64(CAS, &flag1, var, var2);
43         MCID _br2;
44         MCID _rmw2 = MC2_nextRMW(MCID_NODEP, MCID_NODEP, MCID_NODEP);
45         
46         int _cond2 = rmw_64(CAS, &flag1, var, var2);
47         MCID _cond2_m = MC2_function_id(3, 1, sizeof(_cond2), _cond2);
48         if (_cond2) {
49                 _br2 = MC2_branchUsesID(_cond2_m, 1, 2, true);
50                 ;
51                 MC2_merge(_br2);
52         }
53  else { _br2 = MC2_branchUsesID(_cond2_m, 0, 2, true);  MC2_merge(_br2);
54  }}