User: | Jiri Slaby |
Error type: | Reachable Error Location |
Error type description: | A specified error location is reachable in some program path |
File location: | systemc/token_ring.01.cil.c |
Line in file: | 8 |
Project: | SV-COMP 2012 |
Tools: |
Manual Work
|
Entered: | 2012-11-19 13:47:39 UTC |
1/* Generated by CIL v. 1.3.6 */ 2/* print_CIL_Input is true */ 3 4void error(void) 5{ 6 7 { 8 ERROR: ; 9 goto ERROR; 10 return; 11} 12} 13int m_pc = 0; 14int t1_pc = 0; 15int m_st ; 16int t1_st ; 17int m_i ; 18int t1_i ; 19int M_E = 2; 20int T1_E = 2; 21int E_M = 2; 22int E_1 = 2; 23int is_master_triggered(void) ; 24int is_transmit1_triggered(void) ; 25void immediate_notify(void) ; 26int token ; 27int __VERIFIER_nondet_int() ; 28int local ; 29void master(void) 30{ 31 32 { 33 if (m_pc == 0) { 34 goto M_ENTRY; 35 } else { 36 if (m_pc == 1) { 37 goto M_WAIT; 38 } else { 39 40 } 41 } 42 M_ENTRY: ; 43 { 44 while (1) { 45 while_0_continue: /* CIL Label */ ; 46 { 47 token = __VERIFIER_nondet_int(); 48 local = token; 49 E_1 = 1; 50 immediate_notify(); 51 E_1 = 2; 52 m_pc = 1; 53 m_st = 2; 54 } 55 56 goto return_label; 57 M_WAIT: ; 58 if (token != local + 1) { 59 { 60 error(); 61 } 62 } else { 63 64 } 65 } 66 while_0_break: /* CIL Label */ ; 67 } 68 69 return_label: /* CIL Label */ 70 return; 71} 72} 73void transmit1(void) 74{ 75 76 { 77 if (t1_pc == 0) { 78 goto T1_ENTRY; 79 } else { 80 if (t1_pc == 1) { 81 goto T1_WAIT; 82 } else { 83 84 } 85 } 86 T1_ENTRY: ; 87 { 88 while (1) { 89 while_1_continue: /* CIL Label */ ; 90 t1_pc = 1; 91 t1_st = 2; 92 93 goto return_label; 94 T1_WAIT: 95 { 96 token += 1; 97 E_M = 1; 98 immediate_notify(); 99 E_M = 2; 100 } 101 } 102 while_1_break: /* CIL Label */ ; 103 } 104 105 return_label: /* CIL Label */ 106 return; 107} 108} 109int is_master_triggered(void) 110{ int __retres1 ; 111 112 { 113 if (m_pc == 1) { 114 if (E_M == 1) { 115 __retres1 = 1; 116 goto return_label; 117 } else { 118 119 } 120 } else { 121 122 } 123 __retres1 = 0; 124 return_label: /* CIL Label */ 125 return (__retres1); 126} 127} 128int is_transmit1_triggered(void) 129{ int __retres1 ; 130 131 { 132 if (t1_pc == 1) { 133 if (E_1 == 1) { 134 __retres1 = 1; 135 goto return_label; 136 } else { 137 138 } 139 } else { 140 141 } 142 __retres1 = 0; 143 return_label: /* CIL Label */ 144 return (__retres1); 145} 146} 147void update_channels(void) 148{ 149 150 { 151 152 return; 153} 154} 155void init_threads(void) 156{ 157 158 { 159 if (m_i == 1) { 160 m_st = 0; 161 } else { 162 m_st = 2; 163 } 164 if (t1_i == 1) { 165 t1_st = 0; 166 } else { 167 t1_st = 2; 168 } 169 170 return; 171} 172} 173int exists_runnable_thread(void) 174{ int __retres1 ; 175 176 { 177 if (m_st == 0) { 178 __retres1 = 1; 179 goto return_label; 180 } else { 181 if (t1_st == 0) { 182 __retres1 = 1; 183 goto return_label; 184 } else { 185 186 } 187 } 188 __retres1 = 0; 189 return_label: /* CIL Label */ 190 return (__retres1); 191} 192} 193void eval(void) 194{// int __VERIFIER_nondet_int() ; 195 int tmp ; 196 197 { 198 { 199 while (1) { 200 while_2_continue: /* CIL Label */ ; 201 { 202 tmp = exists_runnable_thread(); 203 } 204 if (tmp) { 205 206 } else { 207 goto while_2_break; 208 } 209 if (m_st == 0) { 210 int tmp_ndt_1; 211 tmp_ndt_1 = __VERIFIER_nondet_int(); 212 if (tmp_ndt_1) { 213 { 214 m_st = 1; 215 master(); 216 } 217 } else { 218 219 } 220 } else { 221 222 } 223 if (t1_st == 0) { 224 int tmp_ndt_2; 225 tmp_ndt_2 = __VERIFIER_nondet_int(); 226 if (tmp_ndt_2) { 227 { 228 t1_st = 1; 229 transmit1(); 230 } 231 } else { 232 233 } 234 } else { 235 236 } 237 } 238 while_2_break: /* CIL Label */ ; 239 } 240 241 return; 242} 243} 244void fire_delta_events(void) 245{ 246 247 { 248 if (M_E == 0) { 249 M_E = 1; 250 } else { 251 252 } 253 if (T1_E == 0) { 254 T1_E = 1; 255 } else { 256 257 } 258 if (E_M == 0) { 259 E_M = 1; 260 } else { 261 262 } 263 if (E_1 == 0) { 264 E_1 = 1; 265 } else { 266 267 } 268 269 return; 270} 271} 272void reset_delta_events(void) 273{ 274 275 { 276 if (M_E == 1) { 277 M_E = 2; 278 } else { 279 280 } 281 if (T1_E == 1) { 282 T1_E = 2; 283 } else { 284 285 } 286 if (E_M == 1) { 287 E_M = 2; 288 } else { 289 290 } 291 if (E_1 == 1) { 292 E_1 = 2; 293 } else { 294 295 } 296 297 return; 298} 299} 300void activate_threads(void) 301{ int tmp ; 302 int tmp___0 ; 303 304 { 305 { 306 tmp = is_master_triggered(); 307 } 308 if (tmp) { 309 m_st = 0; 310 } else { 311 312 } 313 { 314 tmp___0 = is_transmit1_triggered(); 315 } 316 if (tmp___0) { 317 t1_st = 0; 318 } else { 319 320 } 321 322 return; 323} 324} 325void immediate_notify(void) 326{ 327 328 { 329 { 330 activate_threads(); 331 } 332 333 return; 334} 335} 336void fire_time_events(void) 337{ 338 339 { 340 M_E = 1; 341 342 return; 343} 344} 345void reset_time_events(void) 346{ 347 348 { 349 if (M_E == 1) { 350 M_E = 2; 351 } else { 352 353 } 354 if (T1_E == 1) { 355 T1_E = 2; 356 } else { 357 358 } 359 if (E_M == 1) { 360 E_M = 2; 361 } else { 362 363 } 364 if (E_1 == 1) { 365 E_1 = 2; 366 } else { 367 368 } 369 370 return; 371} 372} 373void init_model(void) 374{ 375 376 { 377 m_i = 1; 378 t1_i = 1; 379 380 return; 381} 382} 383int stop_simulation(void) 384{ int tmp ; 385 int __retres2 ; 386 387 { 388 { 389 tmp = exists_runnable_thread(); 390 } 391 if (tmp) { 392 __retres2 = 0; 393 goto return_label; 394 } else { 395 396 } 397 __retres2 = 1; 398 return_label: /* CIL Label */ 399 return (__retres2); 400} 401} 402void start_simulation(void) 403{ int kernel_st ; 404 int tmp ; 405 int tmp___0 ; 406 407 { 408 { 409 kernel_st = 0; 410 update_channels(); 411 init_threads(); 412 fire_delta_events(); 413 activate_threads(); 414 reset_delta_events(); 415 } 416 { 417 while (1) { 418 while_3_continue: /* CIL Label */ ; 419 { 420 kernel_st = 1; 421 eval(); 422 } 423 { 424 kernel_st = 2; 425 update_channels(); 426 } 427 { 428 kernel_st = 3; 429 fire_delta_events(); 430 activate_threads(); 431 reset_delta_events(); 432 } 433 { 434 tmp = exists_runnable_thread(); 435 } 436 if (tmp == 0) { 437 { 438 kernel_st = 4; 439 fire_time_events(); 440 activate_threads(); 441 reset_time_events(); 442 } 443 } else { 444 445 } 446 { 447 tmp___0 = stop_simulation(); 448 } 449 if (tmp___0) { 450 goto while_3_break; 451 } else { 452 453 } 454 } 455 while_3_break: /* CIL Label */ ; 456 } 457 458 return; 459} 460} 461int main(void) 462{ int __retres1 ; 463 464 { 465 { 466 init_model(); 467 start_simulation(); 468 } 469 __retres1 = 0; 470 return (__retres1); 471} 472}