User: | Jiri Slaby |
Error type: | Reachable Error Location |
Error type description: | A specified error location is reachable in some program path |
File location: | systemc/kundu1_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 C_1_pc ; 122int C_1_st ; 123int C_1_i ; 124int C_1_ev ; 125int C_1_pr ; 126void C_1(void) 127{ char c ; 128 129 { 130 if ((int )C_1_pc == 0) { 131 goto C_1_ENTRY_LOC; 132 } else { 133 if ((int )C_1_pc == 1) { 134 goto C_1_WAIT_1_LOC; 135 } else { 136 if ((int )C_1_pc == 2) { 137 goto C_1_WAIT_2_LOC; 138 } else { 139 140 } 141 } 142 } 143 C_1_ENTRY_LOC: 144 { 145 while (i < max_loop) { 146 while_2_continue: /* CIL Label */ ; 147 if (num == 0) { 148 timer = 1; 149 i += 1; 150 C_1_pc = 1; 151 C_1_st = 2; 152 153 goto return_label; 154 C_1_WAIT_1_LOC: ; 155 } else { 156 157 } 158 num -= 1; 159 if (! (num >= 0)) { 160 { 161 error(); 162 } 163 } else { 164 165 } 166 { 167 c = read_data(num); 168 i += 1; 169 C_1_pc = 2; 170 C_1_st = 2; 171 } 172 173 goto return_label; 174 C_1_WAIT_2_LOC: ; 175 } 176 while_2_break: /* CIL Label */ ; 177 } 178 C_1_st = 2; 179 180 return_label: /* CIL Label */ 181 return; 182} 183} 184int is_C_1_triggered(void) 185{ int __retres1 ; 186 187 { 188 if ((int )C_1_pc == 1) { 189 if ((int )e == 1) { 190 __retres1 = 1; 191 goto return_label; 192 } else { 193 194 } 195 } else { 196 197 } 198 if ((int )C_1_pc == 2) { 199 if ((int )C_1_ev == 1) { 200 __retres1 = 1; 201 goto return_label; 202 } else { 203 204 } 205 } else { 206 207 } 208 __retres1 = 0; 209 return_label: /* CIL Label */ 210 return (__retres1); 211} 212} 213void update_channels(void) 214{ 215 216 { 217 218 return; 219} 220} 221void init_threads(void) 222{ 223 224 { 225 if ((int )P_1_i == 1) { 226 P_1_st = 0; 227 } else { 228 P_1_st = 2; 229 } 230 if ((int )C_1_i == 1) { 231 C_1_st = 0; 232 } else { 233 C_1_st = 2; 234 } 235 236 return; 237} 238} 239int exists_runnable_thread(void) 240{ int __retres1 ; 241 242 { 243 if ((int )P_1_st == 0) { 244 __retres1 = 1; 245 goto return_label; 246 } else { 247 if ((int )C_1_st == 0) { 248 __retres1 = 1; 249 goto return_label; 250 } else { 251 252 } 253 } 254 } 255 __retres1 = 0; 256 return_label: /* CIL Label */ 257 return (__retres1); 258} 259 260void eval(void) 261{ int tmp ; 262 int tmp___0 ; 263 int tmp___1 ; 264 int tmp___2 ; 265 266 { 267 { 268 while (1) { 269 while_3_continue: /* CIL Label */ ; 270 { 271 tmp___2 = exists_runnable_thread(); 272 } 273 if (tmp___2) { 274 275 } else { 276 goto while_3_break; 277 } 278 if ((int )P_1_st == 0) { 279 { 280 tmp = __VERIFIER_nondet_int(); 281 } 282 if (tmp) { 283 { 284 P_1_st = 1; 285 P_1(); 286 } 287 } else { 288 289 } 290 } else { 291 292 } 293 if ((int )C_1_st == 0) { 294 { 295 tmp___1 = __VERIFIER_nondet_int(); 296 } 297 if (tmp___1) { 298 { 299 C_1_st = 1; 300 C_1(); 301 } 302 } else { 303 304 } 305 } else { 306 307 } 308 } 309 while_3_break: /* CIL Label */ ; 310 } 311 312 return; 313} 314} 315void fire_delta_events(void) 316{ 317 318 { 319 320 return; 321} 322} 323void reset_delta_events(void) 324{ 325 326 { 327 328 return; 329} 330} 331void fire_time_events(void) 332{ 333 334 { 335 C_1_ev = 1; 336 337 P_1_ev = 1; 338 339 340 341 342 return; 343} 344} 345void reset_time_events(void) 346{ 347 348 { 349 if ((int )P_1_ev == 1) { 350 P_1_ev = 2; 351 } else { 352 353 } 354 if ((int )C_1_ev == 1) { 355 C_1_ev = 2; 356 } else { 357 358 } 359 360 return; 361} 362} 363void activate_threads(void) 364{ int tmp ; 365 int tmp___0 ; 366 int tmp___1 ; 367 368 { 369 { 370 tmp = is_P_1_triggered(); 371 } 372 if (tmp) { 373 P_1_st = 0; 374 } else { 375 376 } 377 { 378 tmp___1 = is_C_1_triggered(); 379 } 380 if (tmp___1) { 381 C_1_st = 0; 382 } else { 383 384 } 385 386 return; 387} 388} 389void immediate_notify(void) 390{ 391 392 { 393 { 394 activate_threads(); 395 } 396 397 return; 398} 399} 400int stop_simulation(void) 401{ int tmp ; 402 int __retres2 ; 403 404 { 405 { 406 tmp = exists_runnable_thread(); 407 } 408 if (tmp) { 409 __retres2 = 0; 410 goto return_label; 411 } else { 412 413 } 414 __retres2 = 1; 415 return_label: /* CIL Label */ 416 return (__retres2); 417} 418} 419void start_simulation(void) 420{ int kernel_st ; 421 int tmp ; 422 int tmp___0 ; 423 424 { 425 { 426 kernel_st = 0; 427 update_channels(); 428 init_threads(); 429 fire_delta_events(); 430 activate_threads(); 431 reset_delta_events(); 432 } 433 { 434 while (1) { 435 while_4_continue: /* CIL Label */ ; 436 { 437 kernel_st = 1; 438 eval(); 439 } 440 { 441 kernel_st = 2; 442 update_channels(); 443 } 444 { 445 kernel_st = 3; 446 fire_delta_events(); 447 activate_threads(); 448 reset_delta_events(); 449 } 450 { 451 tmp = exists_runnable_thread(); 452 } 453 if (tmp == 0) { 454 { 455 kernel_st = 4; 456 fire_time_events(); 457 activate_threads(); 458 reset_time_events(); 459 } 460 } else { 461 462 } 463 { 464 tmp___0 = stop_simulation(); 465 } 466 if (tmp___0) { 467 goto while_4_break; 468 } else { 469 470 } 471 } 472 while_4_break: /* CIL Label */ ; 473 } 474 475 return; 476} 477} 478void init_model(void) 479{ 480 481 { 482 P_1_i = 1; 483 C_1_i = 1; 484 485 return; 486} 487} 488int main(void) 489{ int count ; 490 int __retres2 ; 491 492 { 493 { 494 num = 0; 495 i = 0; 496 max_loop = 2; 497 e ; 498 timer = 0; 499 P_1_pc = 0; 500 C_1_pc = 0; 501 502 count = 0; 503 init_model(); 504 start_simulation(); 505 } 506 __retres2 = 0; 507 return (__retres2); 508} 509} 510 511 512