@@ -18,7 +18,9 @@ int X; // boolean variable to test mutual exclusion
1818
1919void * thr1 (void * _ ) {
2020 while (1 ) {
21+ __VERIFIER_atomic_begin ();
2122 b1 = 1 ;
23+ __VERIFIER_atomic_end ();
2224 __VERIFIER_atomic_begin ();
2325 x = 1 ;
2426 __VERIFIER_atomic_end ();
@@ -29,8 +31,14 @@ void *thr1(void *_) {
2931 __VERIFIER_atomic_begin ();
3032 b1 = 0 ;
3133 __VERIFIER_atomic_end ();
34+ __VERIFIER_atomic_begin ();
3235 y1 = y ;
33- while (y1 != 0 ) {};
36+ __VERIFIER_atomic_end ();
37+ while (y1 != 0 ) {
38+ __VERIFIER_atomic_begin ();
39+ y1 = y ;
40+ __VERIFIER_atomic_end ();
41+ };
3442 continue ;
3543 }
3644 __VERIFIER_atomic_begin ();
@@ -40,15 +48,29 @@ void *thr1(void *_) {
4048 int x1 = x ;
4149 __VERIFIER_atomic_end ();
4250 if (x1 != 1 ) {
51+ __VERIFIER_atomic_begin ();
4352 b1 = 0 ;
53+ __VERIFIER_atomic_end ();
4454 __VERIFIER_atomic_begin ();
4555 int b21 = b2 ;
4656 __VERIFIER_atomic_end ();
47- while (b21 >= 1 ) {};
57+ while (b21 >= 1 ) {
58+ __VERIFIER_atomic_begin ();
59+ b21 = b2 ;
60+ __VERIFIER_atomic_end ();
61+ };
62+ __VERIFIER_atomic_begin ();
4863 y1 = y ;
64+ __VERIFIER_atomic_end ();
4965 if (y1 != 1 ) {
66+ __VERIFIER_atomic_begin ();
5067 y1 = y ;
51- while (y1 != 0 ) {};
68+ __VERIFIER_atomic_end ();
69+ while (y1 != 0 ) {
70+ __VERIFIER_atomic_begin ();
71+ y1 = y ;
72+ __VERIFIER_atomic_end ();
73+ };
5274 continue ;
5375 }
5476 }
@@ -61,25 +83,35 @@ void *thr1(void *_) {
6183 __VERIFIER_atomic_begin ();
6284 y = 0 ;
6385 __VERIFIER_atomic_end ();
86+ __VERIFIER_atomic_begin ();
6487 b1 = 0 ;
88+ __VERIFIER_atomic_end ();
6589 return 0 ;
6690}
6791
6892void * thr2 (void * _ ) {
6993 while (1 ) {
94+ __VERIFIER_atomic_begin ();
7095 b2 = 1 ;
96+ __VERIFIER_atomic_end ();
7197 __VERIFIER_atomic_begin ();
7298 x = 2 ;
7399 __VERIFIER_atomic_end ();
74100 __VERIFIER_atomic_begin ();
75101 int y2 = y ;
76102 __VERIFIER_atomic_end ();
77103 if (y2 != 0 ) {
104+ __VERIFIER_atomic_begin ();
78105 b2 = 0 ;
106+ __VERIFIER_atomic_end ();
79107 __VERIFIER_atomic_begin ();
80108 y2 = y ;
81109 __VERIFIER_atomic_end ();
82- while (y2 != 0 ) {};
110+ while (y2 != 0 ) {
111+ __VERIFIER_atomic_begin ();
112+ y2 = y ;
113+ __VERIFIER_atomic_end ();
114+ };
83115 continue ;
84116 }
85117 __VERIFIER_atomic_begin ();
@@ -89,15 +121,29 @@ void *thr2(void *_) {
89121 int x2 = x ;
90122 __VERIFIER_atomic_end ();
91123 if (x2 != 2 ) {
124+ __VERIFIER_atomic_begin ();
92125 b2 = 0 ;
126+ __VERIFIER_atomic_end ();
93127 __VERIFIER_atomic_begin ();
94128 int b12 = b1 ;
95129 __VERIFIER_atomic_end ();
96- while (b12 >= 1 ) {};
130+ while (b12 >= 1 ) {
131+ __VERIFIER_atomic_begin ();
132+ b12 = b1 ;
133+ __VERIFIER_atomic_end ();
134+ };
135+ __VERIFIER_atomic_begin ();
97136 y2 = y ;
137+ __VERIFIER_atomic_end ();
98138 if (y2 != 2 ) {
139+ __VERIFIER_atomic_begin ();
99140 y2 = y ;
100- while (y2 != 0 ) {};
141+ __VERIFIER_atomic_end ();
142+ while (y2 != 0 ) {
143+ __VERIFIER_atomic_begin ();
144+ y2 = y ;
145+ __VERIFIER_atomic_end ();
146+ };
101147 continue ;
102148 }
103149 }
0 commit comments