Skip to content

Commit

Permalink
Add Freiburg case_distinction_with_ghosts example
Browse files Browse the repository at this point in the history
  • Loading branch information
sim642 committed Oct 20, 2023
1 parent f846894 commit f27b098
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions tests/regression/46-apron2/64-case_distinction_with_ghosts.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// PARAM: --enable ana.sv-comp.functions --set ana.activated[+] apron --set ana.relation.privatization mutex-meet --set sem.int.signed_overflow assume_none
#include <pthread.h>
#include <assert.h>

extern int __VERIFIER_nondet_int();
extern void __VERIFIER_atomic_begin();
extern void __VERIFIER_atomic_end();

int x = 0;
int g = 0;

void* inc()
{
int n = __VERIFIER_nondet_int();

while (x < n) {
__VERIFIER_atomic_begin();
x++;
__VERIFIER_atomic_end();

__VERIFIER_atomic_begin();
assert(g != 1 || x >= 42);
__VERIFIER_atomic_end();
}

return 0;
}

int main()
{
pthread_t tid;
pthread_create(&tid, 0, inc, 0);
__VERIFIER_atomic_begin();
g = 1; x = 42;
__VERIFIER_atomic_end();

assert(x >= 42);
return 0;
}

0 comments on commit f27b098

Please sign in to comment.