User: | Jiri Slaby |
Error type: | Reachable Error Location |
Error type description: | A specified error location is reachable in some program path |
File location: | systemc/kundu2_unsafe.cil.c |
Line in file: | 8 |
Project: | SV-COMP 2013 |
Project version: | 2.6.28 |
Tools: |
Manual Work
|
Entered: | 2013-01-17 16:57:54 UTC |
1extern int __VERIFIER_nondet_int(); 2 3void error(void) 4{ 5 6 { 7 goto ERROR; 8 ERROR: ; 9 return; 10} 11} 12 13void immediate_notify(void) ; 14int max_loop ; 15int num ; 16int i ; 17int e ; 18int timer ; 19char data_0 ; 20char data_1 ; 21char read_data(int i___0 ) 22{ char c ; 23 char __retres3 ; 24 25 { 26 if (i___0 == 0) { 27 __retres3 = data_0; 28 goto return_label; 29 } else { 30 if (i___0 == 1) { 31 __retres3 = data_1; 32 goto return_label; 33 } else { 34 { 35 error(); 36 } 37 } 38 } 39 __retres3 = c; 40 return_label: /* CIL Label */ 41 return (__retres3); 42} 43} 44void write_data(int i___0 , char c ) 45{ 46 47 { 48 if (i___0 == 0) { 49 data_0 = c; 50 } else { 51 if (i___0 == 1) { 52 data_1 = c; 53 } else { 54 { 55 error(); 56 } 57 } 58 } 59 60 return; 61} 62} 63int P_1_pc; 64int P_1_st ; 65int P_1_i ; 66int P_1_ev ; 67void P_1(void) 68{ 69 70 { 71 if ((int )P_1_pc == 0) { 72 goto P_1_ENTRY_LOC; 73 } else { 74 if ((int )P_1_pc == 1) { 75 goto P_1_WAIT_LOC; 76 } else { 77 78 } 79 } 80 P_1_ENTRY_LOC: 81 { 82 while (i < max_loop) { 83 while_0_continue: /* CIL Label */ ; 84 { 85 write_data(num, 'A'); 86 num += 1; 87 P_1_pc = 1; 88 P_1_st = 2; 89 } 90 91 goto return_label; 92 P_1_WAIT_LOC: ; 93 } 94 while_0_break: /* CIL Label */ ; 95 } 96 P_1_st = 2; 97 98 return_label: /* CIL Label */ 99 return; 100} 101} 102int is_P_1_triggered(void) 103{ int __retres1 ; 104 105 { 106 if ((int )P_1_pc == 1) { 107 if ((int )P_1_ev == 1) { 108 __retres1 = 1; 109 goto return_label; 110 } else { 111 112 } 113 } else { 114 115 } 116 __retres1 = 0; 117 return_label: /* CIL Label */ 118 return (__retres1); 119} 120} 121int P_2_pc ; 122int P_2_st ; 123int P_2_i ; 124int P_2_ev ; 125void P_2(void) 126{ 127 128 { 129 if ((int )P_2_pc == 0) { 130 goto P_2_ENTRY_LOC; 131 } else { 132 if ((int )P_2_pc == 1) { 133 goto P_2_WAIT_LOC; 134 } else { 135 136 } 137 } 138 P_2_ENTRY_LOC: 139 { 140 while (i < max_loop) { 141 while_1_continue: /* CIL Label */ ; 142 { 143 write_data(num, 'B'); 144 num += 1; 145 } 146 if (timer) { 147 { 148 timer = 0; 149 e = 1; 150 immediate_notify(); 151 e = 2; 152 } 153 } else { 154 155 } 156 P_2_pc = 1; 157 P_2_st = 2; 158 159 goto return_label; 160 P_2_WAIT_LOC: ; 161 } 162 while_1_break: /* CIL Label */ ; 163 } 164 P_2_st = 2; 165 166 return_label: /* CIL Label */ 167 return; 168} 169} 170int is_P_2_triggered(void) 171{ int __retres1 ; 172 173 { 174 if ((int )P_2_pc == 1) { 175 if ((int )P_2_ev == 1) { 176 __retres1 = 1; 177 goto return_label; 178 } else { 179 180 } 181 } else { 182 183 } 184 __retres1 = 0; 185 return_label: /* CIL Label */ 186 return (__retres1); 187} 188} 189int C_1_pc ; 190int C_1_st ; 191int C_1_i ; 192int C_1_ev ; 193int C_1_pr ; 194void C_1(void) 195{ char c ; 196 197 { 198 if ((int )C_1_pc == 0) { 199 goto C_1_ENTRY_LOC; 200 } else { 201 if ((int )C_1_pc == 1) { 202 goto C_1_WAIT_1_LOC; 203 } else { 204 if ((int )C_1_pc == 2) { 205 goto C_1_WAIT_2_LOC; 206 } else { 207 208 } 209 } 210 } 211 C_1_ENTRY_LOC: 212 { 213 while (i < max_loop) { 214 while_2_continue: /* CIL Label */ ; 215 if (num == 0) { 216 timer = 1; 217 i += 1; 218 C_1_pc = 1; 219 C_1_st = 2; 220 221 goto return_label; 222 C_1_WAIT_1_LOC: ; 223 } else { 224 225 } 226 num -= 1; 227 if (! (num >= 0)) { 228 { 229 error(); 230 } 231 } else { 232 233 } 234 { 235 c = read_data(num); 236 i += 1; 237 C_1_pc = 2; 238 C_1_st = 2; 239 } 240 241 goto return_label; 242 C_1_WAIT_2_LOC: ; 243 } 244 while_2_break: /* CIL Label */ ; 245 } 246 C_1_st = 2; 247 248 return_label: /* CIL Label */ 249 return; 250} 251} 252int is_C_1_triggered(void) 253{ int __retres1 ; 254 255 { 256 if ((int )C_1_pc == 1) { 257 if ((int )e == 1) { 258 __retres1 = 1; 259 goto return_label; 260 } else { 261 262 } 263 } else { 264 265 } 266 if ((int )C_1_pc == 2) { 267 if ((int )C_1_ev == 1) { 268 __retres1 = 1; 269 goto return_label; 270 } else { 271 272 } 273 } else { 274 275 } 276 __retres1 = 0; 277 return_label: /* CIL Label */ 278 return (__retres1); 279} 280} 281void update_channels(void) 282{ 283 284 { 285 286 return; 287} 288} 289void init_threads(void) 290{ 291 292 { 293 if ((int )P_1_i == 1) { 294 P_1_st = 0; 295 } else { 296 P_1_st = 2; 297 } 298 if ((int )P_2_i == 1) { 299 P_2_st = 0; 300 } else { 301 P_2_st = 2; 302 } 303 if ((int )C_1_i == 1) { 304 C_1_st = 0; 305 } else { 306 C_1_st = 2; 307 } 308 309 return; 310} 311} 312int exists_runnable_thread(void) 313{ int __retres1 ; 314 315 { 316 if ((int )P_1_st == 0) { 317 __retres1 = 1; 318 goto return_label; 319 } else { 320 if ((int )P_2_st == 0) { 321 __retres1 = 1; 322 goto return_label; 323 } else { 324 if ((int )C_1_st == 0) { 325 __retres1 = 1; 326 goto return_label; 327 } else { 328 329 } 330 } 331 } 332 __retres1 = 0; 333 return_label: /* CIL Label */ 334 return (__retres1); 335} 336} 337void eval(void) 338{ int tmp ; 339 int tmp___0 ; 340 int tmp___1 ; 341 int tmp___2 ; 342 343 { 344 { 345 while (1) { 346 while_3_continue: /* CIL Label */ ; 347 { 348 tmp___2 = exists_runnable_thread(); 349 } 350 if (tmp___2) { 351 352 } else { 353 goto while_3_break; 354 } 355 if ((int )P_1_st == 0) { 356 { 357 tmp = __VERIFIER_nondet_int(); 358 } 359 if (tmp) { 360 { 361 P_1_st = 1; 362 P_1(); 363 } 364 } else { 365 366 } 367 } else { 368 369 } 370 if ((int )P_2_st == 0) { 371 { 372 tmp___0 = __VERIFIER_nondet_int(); 373 } 374 if (tmp___0) { 375 { 376 P_2_st = 1; 377 P_2(); 378 } 379 } else { 380 381 } 382 } else { 383 384 } 385 if ((int )C_1_st == 0) { 386 { 387 tmp___1 = __VERIFIER_nondet_int(); 388 } 389 if (tmp___1) { 390 { 391 C_1_st = 1; 392 C_1(); 393 } 394 } else { 395 396 } 397 } else { 398 399 } 400 } 401 while_3_break: /* CIL Label */ ; 402 } 403 404 return; 405} 406} 407void fire_delta_events(void) 408{ 409 410 { 411 412 return; 413} 414} 415void reset_delta_events(void) 416{ 417 418 { 419 420 return; 421} 422} 423void fire_time_events(void) 424{ 425 426 { 427 C_1_ev = 1; 428 P_1_ev = 1; 429 P_2_ev = 1; 430 431 return; 432} 433} 434void reset_time_events(void) 435{ 436 437 { 438 if ((int )P_1_ev == 1) { 439 P_1_ev = 2; 440 } else { 441 442 } 443 if ((int )P_2_ev == 1) { 444 P_2_ev = 2; 445 } else { 446 447 } 448 if ((int )C_1_ev == 1) { 449 C_1_ev = 2; 450 } else { 451 452 } 453 454 return; 455} 456} 457void activate_threads(void) 458{ int tmp ; 459 int tmp___0 ; 460 int tmp___1 ; 461 462 { 463 { 464 tmp = is_P_1_triggered(); 465 } 466 if (tmp) { 467 P_1_st = 0; 468 } else { 469 470 } 471 { 472 tmp___0 = is_P_2_triggered(); 473 } 474 if (tmp___0) { 475 P_2_st = 0; 476 } else { 477 478 } 479 { 480 tmp___1 = is_C_1_triggered(); 481 } 482 if (tmp___1) { 483 C_1_st = 0; 484 } else { 485 486 } 487 488 return; 489} 490} 491void immediate_notify(void) 492{ 493 494 { 495 { 496 activate_threads(); 497 } 498 499 return; 500} 501} 502int stop_simulation(void) 503{ int tmp ; 504 int __retres2 ; 505 506 { 507 { 508 tmp = exists_runnable_thread(); 509 } 510 if (tmp) { 511 __retres2 = 0; 512 goto return_label; 513 } else { 514 515 } 516 __retres2 = 1; 517 return_label: /* CIL Label */ 518 return (__retres2); 519} 520} 521void start_simulation(void) 522{ int kernel_st ; 523 int tmp ; 524 int tmp___0 ; 525 526 { 527 { 528 kernel_st = 0; 529 update_channels(); 530 init_threads(); 531 fire_delta_events(); 532 activate_threads(); 533 reset_delta_events(); 534 } 535 { 536 while (1) { 537 while_4_continue: /* CIL Label */ ; 538 { 539 kernel_st = 1; 540 eval(); 541 } 542 { 543 kernel_st = 2; 544 update_channels(); 545 } 546 { 547 kernel_st = 3; 548 fire_delta_events(); 549 activate_threads(); 550 reset_delta_events(); 551 } 552 { 553 tmp = exists_runnable_thread(); 554 } 555 if (tmp == 0) { 556 { 557 kernel_st = 4; 558 fire_time_events(); 559 activate_threads(); 560 reset_time_events(); 561 } 562 } else { 563 564 } 565 { 566 tmp___0 = stop_simulation(); 567 } 568 if (tmp___0) { 569 goto while_4_break; 570 } else { 571 572 } 573 } 574 while_4_break: /* CIL Label */ ; 575 } 576 577 return; 578} 579} 580void init_model(void) 581{ 582 583 { 584 P_1_i = 1; 585 P_2_i = 1; 586 C_1_i = 1; 587 588 return; 589} 590} 591int main(void) 592{ int count ; 593 int __retres2 ; 594 595 { 596 { 597 num = 0; 598 i = 0; 599 max_loop = 2; 600 e ; 601 timer = 0; 602 P_1_pc = 0; 603 P_2_pc = 0; 604 C_1_pc = 0; 605 606 count = 0; 607 init_model(); 608 start_simulation(); 609 } 610 __retres2 = 0; 611 return (__retres2); 612} 613} 614 615 616