diff --git a/regression/book-examples/account/C10.desc b/regression/book-examples/account/C10.desc index be2cbd46aa8..174afea2971 100644 --- a/regression/book-examples/account/C10.desc +++ b/regression/book-examples/account/C10.desc @@ -1,4 +1,4 @@ -KNOWNBUG +CORE no-new-smt gcc-only account.c ^EXIT=10$ diff --git a/regression/cbmc-concurrency/CMakeLists.txt b/regression/cbmc-concurrency/CMakeLists.txt index 58bbbe6cdb6..b914944e990 100644 --- a/regression/cbmc-concurrency/CMakeLists.txt +++ b/regression/cbmc-concurrency/CMakeLists.txt @@ -1,4 +1,4 @@ -if((NOT WIN32) AND (NOT APPLE) AND (NOT (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD"))) +if(NOT WIN32) add_test_pl_tests( "$ --validate-goto-model --validate-ssa-equation" ) diff --git a/regression/cbmc-concurrency/Makefile b/regression/cbmc-concurrency/Makefile index 5d828116230..2e444c7c7c6 100644 --- a/regression/cbmc-concurrency/Makefile +++ b/regression/cbmc-concurrency/Makefile @@ -3,9 +3,8 @@ default: tests.log include ../../src/config.inc include ../../src/common -ifeq ($(filter-out OSX MSVC FreeBSD,$(BUILD_ENV_)),) +ifeq ($(filter-out MSVC,$(BUILD_ENV_)),) # no POSIX threads on Windows - # for OSX and FreeBSD we'd need sound handling of pointers in multi-threaded programs no_pthread = -X pthread endif diff --git a/regression/cbmc-concurrency/dirty_local1/test.desc b/regression/cbmc-concurrency/dirty_local1/test.desc index e10a8e8dd2a..5cb4c772c88 100644 --- a/regression/cbmc-concurrency/dirty_local1/test.desc +++ b/regression/cbmc-concurrency/dirty_local1/test.desc @@ -1,8 +1,9 @@ CORE main.c --no-standard-checks +^VERIFICATION FAILED$ ^EXIT=10$ ^SIGNAL=0$ -^VERIFICATION FAILED$ -- ^warning: ignoring +pointer handling for concurrency is unsound diff --git a/regression/cbmc-concurrency/global_pointer1/detect_unsoundness.desc b/regression/cbmc-concurrency/global_pointer1/detect_unsoundness.desc new file mode 100644 index 00000000000..4026199c97a --- /dev/null +++ b/regression/cbmc-concurrency/global_pointer1/detect_unsoundness.desc @@ -0,0 +1,9 @@ +CORE pthread +main.c + +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +^warning: ignoring +pointer handling for concurrency is unsound diff --git a/regression/cbmc-concurrency/global_pointer1/main.c b/regression/cbmc-concurrency/global_pointer1/main.c index 816fb4605ec..804373650bb 100644 --- a/regression/cbmc-concurrency/global_pointer1/main.c +++ b/regression/cbmc-concurrency/global_pointer1/main.c @@ -7,12 +7,16 @@ int g; void *thread1(void * arg) { v = &g; + return NULL; } void *thread2(void *arg) { assert(v == &g); +#ifndef NO_DEREF *v = 1; +#endif + return NULL; } int main() @@ -26,7 +30,9 @@ int main() pthread_join(t2, 0); assert(v == &g); +#ifndef NO_DEREF assert(*v == 1); +#endif return 0; } diff --git a/regression/cbmc-concurrency/global_pointer1/no_deref.desc b/regression/cbmc-concurrency/global_pointer1/no_deref.desc new file mode 100644 index 00000000000..74bc0aa6484 --- /dev/null +++ b/regression/cbmc-concurrency/global_pointer1/no_deref.desc @@ -0,0 +1,8 @@ +CORE pthread +main.c +-DNO_DEREF +^EXIT=0$ +^SIGNAL=0$ +^VERIFICATION SUCCESSFUL$ +-- +^warning: ignoring diff --git a/regression/cbmc-concurrency/global_pointer1/test.desc b/regression/cbmc-concurrency/global_pointer1/test.desc index 52168c7eba4..c239dca4b31 100644 --- a/regression/cbmc-concurrency/global_pointer1/test.desc +++ b/regression/cbmc-concurrency/global_pointer1/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG +KNOWNBUG pthread main.c ^EXIT=0$ diff --git a/regression/cbmc-concurrency/malloc1/test.desc b/regression/cbmc-concurrency/malloc1/test.desc index 915afae768a..2a6c5537fb8 100644 --- a/regression/cbmc-concurrency/malloc1/test.desc +++ b/regression/cbmc-concurrency/malloc1/test.desc @@ -1,8 +1,9 @@ CORE main.c --no-malloc-may-fail +^VERIFICATION SUCCESSFUL$ ^EXIT=0$ ^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring +pointer handling for concurrency is unsound diff --git a/regression/cbmc-concurrency/malloc2/test.desc b/regression/cbmc-concurrency/malloc2/test.desc index 915afae768a..38cc5dade1f 100644 --- a/regression/cbmc-concurrency/malloc2/test.desc +++ b/regression/cbmc-concurrency/malloc2/test.desc @@ -1,8 +1,9 @@ CORE main.c --no-malloc-may-fail -^EXIT=0$ +^VERIFICATION FAILED$ +^EXIT=10$ ^SIGNAL=0$ -^VERIFICATION SUCCESSFUL$ -- ^warning: ignoring +pointer handling for concurrency is unsound diff --git a/regression/cbmc-concurrency/may_alias1/main.c b/regression/cbmc-concurrency/may_alias1/main.c new file mode 100644 index 00000000000..fa3c68ac184 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias1/main.c @@ -0,0 +1,13 @@ +int *object; +_Bool create_object; +void allocator(void) { + __CPROVER_assume(create_object); + object = __CPROVER_allocate(sizeof(int), 1); + create_object = 0; +} +int main() { + __CPROVER_ASYNC_1: allocator(); + create_object = 1; + __CPROVER_assume(create_object == 0); + *object = 42; +} diff --git a/regression/cbmc-concurrency/may_alias1/test.desc b/regression/cbmc-concurrency/may_alias1/test.desc new file mode 100644 index 00000000000..89da33633c8 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias1/test.desc @@ -0,0 +1,9 @@ +CORE +main.c +--no-malloc-may-fail +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring diff --git a/regression/cbmc-concurrency/may_alias2/main.c b/regression/cbmc-concurrency/may_alias2/main.c new file mode 100644 index 00000000000..c0a5873443b --- /dev/null +++ b/regression/cbmc-concurrency/may_alias2/main.c @@ -0,0 +1,19 @@ +#include + +int *ptr; +int val; +_Bool done; + +void writer(void) +{ + val = 42; + ptr = &val; + done = 1; +} + +int main(void) +{ + __CPROVER_ASYNC_1: writer(); + __CPROVER_assume(done == 1); + assert(*ptr == 42); +} diff --git a/regression/cbmc-concurrency/may_alias2/test.desc b/regression/cbmc-concurrency/may_alias2/test.desc new file mode 100644 index 00000000000..ce159a72d58 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias2/test.desc @@ -0,0 +1,8 @@ +CORE +main.c + +^EXIT=(0|10)$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring diff --git a/regression/cbmc-concurrency/may_alias3/main.c b/regression/cbmc-concurrency/may_alias3/main.c new file mode 100644 index 00000000000..7e60786c8e0 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias3/main.c @@ -0,0 +1,20 @@ +#include + +int *shared_ptr; +_Bool flag; + +void thread1(void) +{ + int local = 0; + shared_ptr = &local; + flag = 1; +} + +int main(void) +{ + int x = 10; + shared_ptr = &x; + __CPROVER_ASYNC_1: thread1(); + __CPROVER_assume(flag == 1); + assert(*shared_ptr == 10); +} diff --git a/regression/cbmc-concurrency/may_alias3/test.desc b/regression/cbmc-concurrency/may_alias3/test.desc new file mode 100644 index 00000000000..ce159a72d58 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias3/test.desc @@ -0,0 +1,8 @@ +CORE +main.c + +^EXIT=(0|10)$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring diff --git a/regression/cbmc-concurrency/may_alias_byte_extract/main.c b/regression/cbmc-concurrency/may_alias_byte_extract/main.c new file mode 100644 index 00000000000..bc32b5ad1af --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_byte_extract/main.c @@ -0,0 +1,20 @@ +// Test char* accessing an int through shared pointer (byte_extract). +#include + +char *shared_ptr; +int val; +_Bool done; + +void writer(void) +{ + val = 0x42; + shared_ptr = (char *)&val; + done = 1; +} + +int main(void) +{ + __CPROVER_ASYNC_1: writer(); + __CPROVER_assume(done == 1); + assert(*shared_ptr == 0x42); +} diff --git a/regression/cbmc-concurrency/may_alias_byte_extract/test.desc b/regression/cbmc-concurrency/may_alias_byte_extract/test.desc new file mode 100644 index 00000000000..0a6db772fec --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_byte_extract/test.desc @@ -0,0 +1,13 @@ +CORE +main.c + +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Tests different-size type access: char* reading from an int through +a shared pointer. The byte_extract mechanism reinterprets the int +value as a char. diff --git a/regression/cbmc-concurrency/may_alias_dynamic/main.c b/regression/cbmc-concurrency/may_alias_dynamic/main.c new file mode 100644 index 00000000000..9eae2bf4c6c --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_dynamic/main.c @@ -0,0 +1,19 @@ +// Test shared pointer to malloc'd object (the original issue #790 example). +int *object; +_Bool create_object; + +void allocator(void) +{ + __CPROVER_assume(create_object); + object = __CPROVER_allocate(sizeof(int), 1); + *object = 42; + create_object = 0; +} + +int main() +{ + __CPROVER_ASYNC_1: allocator(); + create_object = 1; + __CPROVER_assume(create_object == 0); + __CPROVER_assert(*object == 42, "object value"); +} diff --git a/regression/cbmc-concurrency/may_alias_dynamic/test.desc b/regression/cbmc-concurrency/may_alias_dynamic/test.desc new file mode 100644 index 00000000000..811ecc87ffe --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_dynamic/test.desc @@ -0,0 +1,12 @@ +CORE +main.c +--no-malloc-may-fail +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Tests the original issue #790 example: allocator thread creates an +object via __CPROVER_allocate and writes through the shared pointer. diff --git a/regression/cbmc-concurrency/may_alias_local_ptr/main.c b/regression/cbmc-concurrency/may_alias_local_ptr/main.c new file mode 100644 index 00000000000..b1f7ca5727e --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_local_ptr/main.c @@ -0,0 +1,29 @@ +// Test that local pointers derived from shared sources are handled +// correctly by the may-alias mechanism. +#include + +int *shared_ptr; +int val1, val2; +_Bool done; + +void writer(void) +{ + val1 = 42; + val2 = 99; + shared_ptr = &val2; + done = 1; +} + +int main(void) +{ + shared_ptr = &val1; + __CPROVER_ASYNC_1: writer(); + __CPROVER_assume(done == 1); + + // Direct dereference of shared pointer + assert(*shared_ptr == 42); + + // Copy to local, then dereference — must also detect the bug + int *local_ptr = shared_ptr; + assert(*local_ptr == 42); +} diff --git a/regression/cbmc-concurrency/may_alias_local_ptr/test.desc b/regression/cbmc-concurrency/may_alias_local_ptr/test.desc new file mode 100644 index 00000000000..d5d2f248e06 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_local_ptr/test.desc @@ -0,0 +1,13 @@ +CORE +main.c + +^VERIFICATION FAILED$ +^EXIT=10$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Tests that local pointers derived from shared sources are handled by +the may-alias mechanism. Both *shared_ptr and *local_ptr should fail +because the writer thread changes shared_ptr to point to val2 (=99). diff --git a/regression/cbmc-concurrency/may_alias_no_false_positive/main.c b/regression/cbmc-concurrency/may_alias_no_false_positive/main.c new file mode 100644 index 00000000000..84cd2759025 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_no_false_positive/main.c @@ -0,0 +1,22 @@ +// Verify that may-alias does NOT trigger for non-shared pointers. +// This sequential program must verify successfully — no false positives. +#include +#include + +int main(void) +{ + int x = 42; + int *p = &x; + assert(*p == 42); + + int *q = malloc(sizeof(int)); + if(q) + { + *q = 99; + assert(*q == 99); + } + + int arr[3] = {1, 2, 3}; + int *r = &arr[1]; + assert(*r == 2); +} diff --git a/regression/cbmc-concurrency/may_alias_no_false_positive/test.desc b/regression/cbmc-concurrency/may_alias_no_false_positive/test.desc new file mode 100644 index 00000000000..b9ff50e4748 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_no_false_positive/test.desc @@ -0,0 +1,12 @@ +CORE +main.c + +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Verify that may-alias does NOT trigger for non-shared pointers in +sequential code. All assertions must succeed — no false positives. diff --git a/regression/cbmc-concurrency/may_alias_refine/main.c b/regression/cbmc-concurrency/may_alias_refine/main.c new file mode 100644 index 00000000000..939407c2b7e --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_refine/main.c @@ -0,0 +1,20 @@ +// Test --refine-concurrency produces correct results. +#include + +int *shared_ptr; +int val; +_Bool done; + +void writer(void) +{ + val = 42; + shared_ptr = &val; + done = 1; +} + +int main(void) +{ + __CPROVER_ASYNC_1: writer(); + __CPROVER_assume(done == 1); + assert(*shared_ptr == 42); +} diff --git a/regression/cbmc-concurrency/may_alias_refine/test.desc b/regression/cbmc-concurrency/may_alias_refine/test.desc new file mode 100644 index 00000000000..d1b9f8f7a3c --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_refine/test.desc @@ -0,0 +1,12 @@ +CORE +main.c +--refine-concurrency +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Tests that --refine-concurrency produces correct results for a +concurrent program with shared pointer dereferences. diff --git a/regression/cbmc-concurrency/may_alias_soundness/main.c b/regression/cbmc-concurrency/may_alias_soundness/main.c new file mode 100644 index 00000000000..33c98ee5a2e --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_soundness/main.c @@ -0,0 +1,23 @@ +// Soundness test: the assertion MUST fail. +// writer() sets ptr to &val2 (which is 99), so *ptr != 42 is possible. +#include + +int *ptr; +int val1, val2; +_Bool done; + +void writer(void) +{ + val1 = 42; + val2 = 99; + ptr = &val2; + done = 1; +} + +int main(void) +{ + ptr = &val1; + __CPROVER_ASYNC_1: writer(); + __CPROVER_assume(done == 1); + assert(*ptr == 42); +} diff --git a/regression/cbmc-concurrency/may_alias_soundness/test.desc b/regression/cbmc-concurrency/may_alias_soundness/test.desc new file mode 100644 index 00000000000..e74f2dff9d0 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_soundness/test.desc @@ -0,0 +1,13 @@ +CORE +main.c + +^VERIFICATION FAILED$ +^EXIT=10$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Soundness test: writer() changes ptr to point to val2 (=99), so +*ptr == 42 must fail. This verifies that may-alias constraints +correctly propagate pointer aliasing through the memory model. diff --git a/regression/cbmc-concurrency/may_alias_type_compat/main.c b/regression/cbmc-concurrency/may_alias_type_compat/main.c new file mode 100644 index 00000000000..50dabde634c --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_type_compat/main.c @@ -0,0 +1,21 @@ +// Test that may-alias handles type-compatible (same-size) types. +// shared_ptr is int* but points to an unsigned int. +#include + +int *shared_ptr; +unsigned int val_unsigned; +_Bool done; + +void writer(void) +{ + val_unsigned = 42; + shared_ptr = (int *)&val_unsigned; + done = 1; +} + +int main(void) +{ + __CPROVER_ASYNC_1: writer(); + __CPROVER_assume(done == 1); + assert(*shared_ptr == 42); +} diff --git a/regression/cbmc-concurrency/may_alias_type_compat/test.desc b/regression/cbmc-concurrency/may_alias_type_compat/test.desc new file mode 100644 index 00000000000..d89b0926e26 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_type_compat/test.desc @@ -0,0 +1,14 @@ +CORE +main.c + +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Tests that may-alias correctly handles type-compatible (same bit-width) +types. shared_ptr is int* but points to unsigned int. Without the type +compatibility relaxation, the may-alias object would not alias with +val_unsigned and the assertion would incorrectly fail. diff --git a/regression/cbmc-concurrency/may_alias_write_concurrent/main.c b/regression/cbmc-concurrency/may_alias_write_concurrent/main.c new file mode 100644 index 00000000000..14dfdba7eee --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_write_concurrent/main.c @@ -0,0 +1,30 @@ +// Two threads write through shared pointer with synchronization. +// thread2 writes 42 after thread1, main reads after thread2. +// Must verify successfully — no false positives. +#include + +int *shared_ptr; +int val; +_Bool step1_done, step2_done; + +void thread1(void) +{ + shared_ptr = &val; + *shared_ptr = 10; + step1_done = 1; +} + +void thread2(void) +{ + __CPROVER_assume(step1_done == 1); + *shared_ptr = 42; + step2_done = 1; +} + +int main(void) +{ + __CPROVER_ASYNC_1: thread1(); + __CPROVER_ASYNC_2: thread2(); + __CPROVER_assume(step2_done == 1); + assert(*shared_ptr == 42); +} diff --git a/regression/cbmc-concurrency/may_alias_write_concurrent/test.desc b/regression/cbmc-concurrency/may_alias_write_concurrent/test.desc new file mode 100644 index 00000000000..ccc801caf1f --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_write_concurrent/test.desc @@ -0,0 +1,14 @@ +CORE +main.c + +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Tests that writes through shared pointers in concurrent context do +not cause false positives. thread2 writes 42 after thread1 (via +synchronization), and main reads after thread2. The assertion must +succeed. diff --git a/regression/cbmc-concurrency/may_alias_write_through/main.c b/regression/cbmc-concurrency/may_alias_write_through/main.c new file mode 100644 index 00000000000..73bd3e985a8 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_write_through/main.c @@ -0,0 +1,20 @@ +// Test write through a shared pointer in concurrent context. +#include + +int *shared_ptr; +int val; +_Bool done; + +void writer(void) +{ + shared_ptr = &val; + done = 1; +} + +int main(void) +{ + __CPROVER_ASYNC_1: writer(); + __CPROVER_assume(done == 1); + *shared_ptr = 42; + assert(val == 42); +} diff --git a/regression/cbmc-concurrency/may_alias_write_through/test.desc b/regression/cbmc-concurrency/may_alias_write_through/test.desc new file mode 100644 index 00000000000..1d6528d0310 --- /dev/null +++ b/regression/cbmc-concurrency/may_alias_write_through/test.desc @@ -0,0 +1,12 @@ +CORE +main.c + +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ +^SIGNAL=0$ +-- +pointer handling for concurrency is unsound +^warning: ignoring +-- +Tests write through a shared pointer: *shared_ptr = 42 should +correctly update val when shared_ptr points to &val. diff --git a/regression/cbmc-concurrency/thread_chain_posix2/test.desc b/regression/cbmc-concurrency/thread_chain_posix2/test.desc index 59567af5127..df815ec727a 100644 --- a/regression/cbmc-concurrency/thread_chain_posix2/test.desc +++ b/regression/cbmc-concurrency/thread_chain_posix2/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG pthread +CORE pthread main.c -D_ENABLE_CHAIN_ --unwind 2 ^EXIT=0$ diff --git a/regression/cbmc-concurrency/thread_chain_posix3/test.desc b/regression/cbmc-concurrency/thread_chain_posix3/test.desc index c89f16b63ce..2d9c79b7f48 100644 --- a/regression/cbmc-concurrency/thread_chain_posix3/test.desc +++ b/regression/cbmc-concurrency/thread_chain_posix3/test.desc @@ -1,4 +1,4 @@ -KNOWNBUG pthread +CORE pthread main.c -D_ENABLE_CHAIN_ -D_SANITY_CHECK_ --unwind 2 ^EXIT=10$ diff --git a/regression/cbmc-library/realloc/test_03.desc b/regression/cbmc-library/realloc/test_03.desc index 05129eeb348..d43300d93d6 100644 --- a/regression/cbmc-library/realloc/test_03.desc +++ b/regression/cbmc-library/realloc/test_03.desc @@ -1,12 +1,8 @@ CORE main_03.c - -^EXIT=6$ +--no-malloc-may-fail +^VERIFICATION SUCCESSFUL$ +^EXIT=0$ ^SIGNAL=0$ -pointer handling for concurrency is unsound -- ^warning: ignoring --- -The test uses "__CPROVER_ASYNC_1:" and the async-called function foo does -pointer operations over allocated memory - which is not handled in a sound way -in CBMC. diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_PSO_ALL/aclwsrr000.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_PSO_ALL/aclwsrr000.c index 9014ba04465..51847850794 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_PSO_ALL/aclwsrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_PSO_ALL/aclwsrr000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_PSO_OPC/aclwsrr000.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_PSO_OPC/aclwsrr000.c index 9014ba04465..51847850794 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_PSO_OPC/aclwsrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_PSO_OPC/aclwsrr000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_RMO_ALL/aclwsrr000.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_RMO_ALL/aclwsrr000.c index 9014ba04465..51847850794 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_RMO_ALL/aclwsrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_RMO_ALL/aclwsrr000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_RMO_OPC/aclwsrr000.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_RMO_OPC/aclwsrr000.c index 9014ba04465..51847850794 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_RMO_OPC/aclwsrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_RMO_OPC/aclwsrr000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_TSO_ALL/aclwsrr000.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_TSO_ALL/aclwsrr000.c index 9014ba04465..51847850794 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_TSO_ALL/aclwsrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_TSO_ALL/aclwsrr000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_TSO_OPC/aclwsrr000.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_TSO_OPC/aclwsrr000.c index 9014ba04465..51847850794 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr000_TSO_OPC/aclwsrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr000_TSO_OPC/aclwsrr000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_POWER_ALL/aclwsrr002.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_POWER_ALL/aclwsrr002.c index 47719b99fb3..17d43b76d8a 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_POWER_ALL/aclwsrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_POWER_ALL/aclwsrr002.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_POWER_OPC/aclwsrr002.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_POWER_OPC/aclwsrr002.c index 47719b99fb3..17d43b76d8a 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_POWER_OPC/aclwsrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_POWER_OPC/aclwsrr002.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_PSO_ALL/aclwsrr002.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_PSO_ALL/aclwsrr002.c index 47719b99fb3..17d43b76d8a 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_PSO_ALL/aclwsrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_PSO_ALL/aclwsrr002.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_PSO_OPC/aclwsrr002.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_PSO_OPC/aclwsrr002.c index 47719b99fb3..17d43b76d8a 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_PSO_OPC/aclwsrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_PSO_OPC/aclwsrr002.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_RMO_ALL/aclwsrr002.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_RMO_ALL/aclwsrr002.c index 47719b99fb3..17d43b76d8a 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_RMO_ALL/aclwsrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_RMO_ALL/aclwsrr002.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_RMO_OPC/aclwsrr002.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_RMO_OPC/aclwsrr002.c index 47719b99fb3..17d43b76d8a 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_RMO_OPC/aclwsrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_RMO_OPC/aclwsrr002.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_TSO_ALL/aclwsrr002.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_TSO_ALL/aclwsrr002.c index 47719b99fb3..17d43b76d8a 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_TSO_ALL/aclwsrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_TSO_ALL/aclwsrr002.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_TSO_OPC/aclwsrr002.c b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_TSO_OPC/aclwsrr002.c index 47719b99fb3..17d43b76d8a 100644 --- a/regression/goto-instrument-wmm-core/ppc_aclwsrr002_TSO_OPC/aclwsrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_aclwsrr002_TSO_OPC/aclwsrr002.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww000_PSO_ALL/bclwdww000.c b/regression/goto-instrument-wmm-core/ppc_bclwdww000_PSO_ALL/bclwdww000.c index 2919c33539e..96c78fa8b46 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww000_PSO_ALL/bclwdww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww000_PSO_ALL/bclwdww000.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww000_PSO_OPC/bclwdww000.c b/regression/goto-instrument-wmm-core/ppc_bclwdww000_PSO_OPC/bclwdww000.c index 2919c33539e..96c78fa8b46 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww000_PSO_OPC/bclwdww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww000_PSO_OPC/bclwdww000.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww000_RMO_ALL/bclwdww000.c b/regression/goto-instrument-wmm-core/ppc_bclwdww000_RMO_ALL/bclwdww000.c index 2919c33539e..96c78fa8b46 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww000_RMO_ALL/bclwdww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww000_RMO_ALL/bclwdww000.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww000_RMO_OPC/bclwdww000.c b/regression/goto-instrument-wmm-core/ppc_bclwdww000_RMO_OPC/bclwdww000.c index 2919c33539e..96c78fa8b46 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww000_RMO_OPC/bclwdww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww000_RMO_OPC/bclwdww000.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww000_TSO_ALL/bclwdww000.c b/regression/goto-instrument-wmm-core/ppc_bclwdww000_TSO_ALL/bclwdww000.c index 2919c33539e..96c78fa8b46 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww000_TSO_ALL/bclwdww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww000_TSO_ALL/bclwdww000.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww000_TSO_OPC/bclwdww000.c b/regression/goto-instrument-wmm-core/ppc_bclwdww000_TSO_OPC/bclwdww000.c index 2919c33539e..96c78fa8b46 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww000_TSO_OPC/bclwdww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww000_TSO_OPC/bclwdww000.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww001_PSO_ALL/bclwdww001.c b/regression/goto-instrument-wmm-core/ppc_bclwdww001_PSO_ALL/bclwdww001.c index 545d47897fd..032b809d1b0 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww001_PSO_ALL/bclwdww001.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww001_PSO_ALL/bclwdww001.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww001_PSO_OPC/bclwdww001.c b/regression/goto-instrument-wmm-core/ppc_bclwdww001_PSO_OPC/bclwdww001.c index 545d47897fd..032b809d1b0 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww001_PSO_OPC/bclwdww001.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww001_PSO_OPC/bclwdww001.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww001_TSO_ALL/bclwdww001.c b/regression/goto-instrument-wmm-core/ppc_bclwdww001_TSO_ALL/bclwdww001.c index 545d47897fd..032b809d1b0 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww001_TSO_ALL/bclwdww001.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww001_TSO_ALL/bclwdww001.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww001_TSO_OPC/bclwdww001.c b/regression/goto-instrument-wmm-core/ppc_bclwdww001_TSO_OPC/bclwdww001.c index 545d47897fd..032b809d1b0 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww001_TSO_OPC/bclwdww001.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww001_TSO_OPC/bclwdww001.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww003_PSO_ALL/bclwdww003.c b/regression/goto-instrument-wmm-core/ppc_bclwdww003_PSO_ALL/bclwdww003.c index 3adf34a702f..b85e99471a3 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww003_PSO_ALL/bclwdww003.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww003_PSO_ALL/bclwdww003.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww003_PSO_OPC/bclwdww003.c b/regression/goto-instrument-wmm-core/ppc_bclwdww003_PSO_OPC/bclwdww003.c index 3adf34a702f..b85e99471a3 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww003_PSO_OPC/bclwdww003.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww003_PSO_OPC/bclwdww003.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww003_RMO_ALL/bclwdww003.c b/regression/goto-instrument-wmm-core/ppc_bclwdww003_RMO_ALL/bclwdww003.c index 3adf34a702f..b85e99471a3 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww003_RMO_ALL/bclwdww003.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww003_RMO_ALL/bclwdww003.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww003_RMO_OPC/bclwdww003.c b/regression/goto-instrument-wmm-core/ppc_bclwdww003_RMO_OPC/bclwdww003.c index 3adf34a702f..b85e99471a3 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww003_RMO_OPC/bclwdww003.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww003_RMO_OPC/bclwdww003.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww003_TSO_ALL/bclwdww003.c b/regression/goto-instrument-wmm-core/ppc_bclwdww003_TSO_ALL/bclwdww003.c index 3adf34a702f..b85e99471a3 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww003_TSO_ALL/bclwdww003.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww003_TSO_ALL/bclwdww003.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww003_TSO_OPC/bclwdww003.c b/regression/goto-instrument-wmm-core/ppc_bclwdww003_TSO_OPC/bclwdww003.c index 3adf34a702f..b85e99471a3 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww003_TSO_OPC/bclwdww003.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww003_TSO_OPC/bclwdww003.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww004_PSO_ALL/bclwdww004.c b/regression/goto-instrument-wmm-core/ppc_bclwdww004_PSO_ALL/bclwdww004.c index 8462bfbc067..0a4277a6296 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww004_PSO_ALL/bclwdww004.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww004_PSO_ALL/bclwdww004.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww004_PSO_OPC/bclwdww004.c b/regression/goto-instrument-wmm-core/ppc_bclwdww004_PSO_OPC/bclwdww004.c index 8462bfbc067..0a4277a6296 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww004_PSO_OPC/bclwdww004.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww004_PSO_OPC/bclwdww004.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww004_RMO_ALL/bclwdww004.c b/regression/goto-instrument-wmm-core/ppc_bclwdww004_RMO_ALL/bclwdww004.c index 8462bfbc067..0a4277a6296 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww004_RMO_ALL/bclwdww004.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww004_RMO_ALL/bclwdww004.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww004_RMO_OPC/bclwdww004.c b/regression/goto-instrument-wmm-core/ppc_bclwdww004_RMO_OPC/bclwdww004.c index 8462bfbc067..0a4277a6296 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww004_RMO_OPC/bclwdww004.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww004_RMO_OPC/bclwdww004.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww004_TSO_ALL/bclwdww004.c b/regression/goto-instrument-wmm-core/ppc_bclwdww004_TSO_ALL/bclwdww004.c index 8462bfbc067..0a4277a6296 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww004_TSO_ALL/bclwdww004.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww004_TSO_ALL/bclwdww004.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwdww004_TSO_OPC/bclwdww004.c b/regression/goto-instrument-wmm-core/ppc_bclwdww004_TSO_OPC/bclwdww004.c index 8462bfbc067..0a4277a6296 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwdww004_TSO_OPC/bclwdww004.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwdww004_TSO_OPC/bclwdww004.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwsww000_POWER_ALL/bclwsww000.c b/regression/goto-instrument-wmm-core/ppc_bclwsww000_POWER_ALL/bclwsww000.c index fa6be99d28d..d6576c17fab 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwsww000_POWER_ALL/bclwsww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwsww000_POWER_ALL/bclwsww000.c @@ -13,12 +13,12 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwsww000_POWER_OPC/bclwsww000.c b/regression/goto-instrument-wmm-core/ppc_bclwsww000_POWER_OPC/bclwsww000.c index fa6be99d28d..d6576c17fab 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwsww000_POWER_OPC/bclwsww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwsww000_POWER_OPC/bclwsww000.c @@ -13,12 +13,12 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwsww000_PSO_ALL/bclwsww000.c b/regression/goto-instrument-wmm-core/ppc_bclwsww000_PSO_ALL/bclwsww000.c index fa6be99d28d..d6576c17fab 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwsww000_PSO_ALL/bclwsww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwsww000_PSO_ALL/bclwsww000.c @@ -13,12 +13,12 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwsww000_PSO_OPC/bclwsww000.c b/regression/goto-instrument-wmm-core/ppc_bclwsww000_PSO_OPC/bclwsww000.c index fa6be99d28d..d6576c17fab 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwsww000_PSO_OPC/bclwsww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwsww000_PSO_OPC/bclwsww000.c @@ -13,12 +13,12 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwsww000_RMO_ALL/bclwsww000.c b/regression/goto-instrument-wmm-core/ppc_bclwsww000_RMO_ALL/bclwsww000.c index fa6be99d28d..d6576c17fab 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwsww000_RMO_ALL/bclwsww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwsww000_RMO_ALL/bclwsww000.c @@ -13,12 +13,12 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwsww000_RMO_OPC/bclwsww000.c b/regression/goto-instrument-wmm-core/ppc_bclwsww000_RMO_OPC/bclwsww000.c index fa6be99d28d..d6576c17fab 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwsww000_RMO_OPC/bclwsww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwsww000_RMO_OPC/bclwsww000.c @@ -13,12 +13,12 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwsww000_TSO_ALL/bclwsww000.c b/regression/goto-instrument-wmm-core/ppc_bclwsww000_TSO_ALL/bclwsww000.c index fa6be99d28d..d6576c17fab 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwsww000_TSO_ALL/bclwsww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwsww000_TSO_ALL/bclwsww000.c @@ -13,12 +13,12 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_bclwsww000_TSO_OPC/bclwsww000.c b/regression/goto-instrument-wmm-core/ppc_bclwsww000_TSO_OPC/bclwsww000.c index fa6be99d28d..d6576c17fab 100644 --- a/regression/goto-instrument-wmm-core/ppc_bclwsww000_TSO_OPC/bclwsww000.c +++ b/regression/goto-instrument-wmm-core/ppc_bclwsww000_TSO_OPC/bclwsww000.c @@ -13,12 +13,12 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_PSO_ALL/iriw+addrs.c b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_PSO_ALL/iriw+addrs.c index 5bdf2ff44be..a70dbfc2083 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_PSO_ALL/iriw+addrs.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_PSO_ALL/iriw+addrs.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_PSO_OPC/iriw+addrs.c b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_PSO_OPC/iriw+addrs.c index 5bdf2ff44be..a70dbfc2083 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_PSO_OPC/iriw+addrs.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_PSO_OPC/iriw+addrs.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_RMO_ALL/iriw+addrs.c b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_RMO_ALL/iriw+addrs.c index 5bdf2ff44be..a70dbfc2083 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_RMO_ALL/iriw+addrs.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_RMO_ALL/iriw+addrs.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_RMO_OPC/iriw+addrs.c b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_RMO_OPC/iriw+addrs.c index 5bdf2ff44be..a70dbfc2083 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_RMO_OPC/iriw+addrs.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_RMO_OPC/iriw+addrs.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_TSO_ALL/iriw+addrs.c b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_TSO_ALL/iriw+addrs.c index 5bdf2ff44be..a70dbfc2083 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_TSO_ALL/iriw+addrs.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_TSO_ALL/iriw+addrs.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_TSO_OPC/iriw+addrs.c b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_TSO_OPC/iriw+addrs.c index 5bdf2ff44be..a70dbfc2083 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+addrs_TSO_OPC/iriw+addrs.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+addrs_TSO_OPC/iriw+addrs.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_PSO_ALL/iriw+lwsync+addr.c b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_PSO_ALL/iriw+lwsync+addr.c index 4a81d136a05..fbf7c7685ac 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_PSO_ALL/iriw+lwsync+addr.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_PSO_ALL/iriw+lwsync+addr.c @@ -17,7 +17,7 @@ int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_PSO_OPC/iriw+lwsync+addr.c b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_PSO_OPC/iriw+lwsync+addr.c index 4a81d136a05..fbf7c7685ac 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_PSO_OPC/iriw+lwsync+addr.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_PSO_OPC/iriw+lwsync+addr.c @@ -17,7 +17,7 @@ int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_RMO_ALL/iriw+lwsync+addr.c b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_RMO_ALL/iriw+lwsync+addr.c index 4a81d136a05..fbf7c7685ac 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_RMO_ALL/iriw+lwsync+addr.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_RMO_ALL/iriw+lwsync+addr.c @@ -17,7 +17,7 @@ int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_RMO_OPC/iriw+lwsync+addr.c b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_RMO_OPC/iriw+lwsync+addr.c index 4a81d136a05..fbf7c7685ac 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_RMO_OPC/iriw+lwsync+addr.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_RMO_OPC/iriw+lwsync+addr.c @@ -17,7 +17,7 @@ int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_TSO_ALL/iriw+lwsync+addr.c b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_TSO_ALL/iriw+lwsync+addr.c index 4a81d136a05..fbf7c7685ac 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_TSO_ALL/iriw+lwsync+addr.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_TSO_ALL/iriw+lwsync+addr.c @@ -17,7 +17,7 @@ int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_TSO_OPC/iriw+lwsync+addr.c b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_TSO_OPC/iriw+lwsync+addr.c index 4a81d136a05..fbf7c7685ac 100644 --- a/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_TSO_OPC/iriw+lwsync+addr.c +++ b/regression/goto-instrument-wmm-core/ppc_iriw+lwsync+addr_TSO_OPC/iriw+lwsync+addr.c @@ -17,7 +17,7 @@ int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr000_POWER_ALL/lwswr000.c b/regression/goto-instrument-wmm-core/ppc_lwswr000_POWER_ALL/lwswr000.c index cbb15acf714..576041bd5c0 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr000_POWER_ALL/lwswr000.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr000_POWER_ALL/lwswr000.c @@ -16,13 +16,13 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; -int __unbuffered_p3_r4 = 0; +__CPROVER_thread_local int __unbuffered_p3_r4 = 0; int __unbuffered_p3_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr000_POWER_OPC/lwswr000.c b/regression/goto-instrument-wmm-core/ppc_lwswr000_POWER_OPC/lwswr000.c index cbb15acf714..576041bd5c0 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr000_POWER_OPC/lwswr000.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr000_POWER_OPC/lwswr000.c @@ -16,13 +16,13 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p3_r1 = 0; int __unbuffered_p3_r3 = 0; -int __unbuffered_p3_r4 = 0; +__CPROVER_thread_local int __unbuffered_p3_r4 = 0; int __unbuffered_p3_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr001_POWER_ALL/lwswr001.c b/regression/goto-instrument-wmm-core/ppc_lwswr001_POWER_ALL/lwswr001.c index 3c80650c0b4..a178f543cc8 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr001_POWER_ALL/lwswr001.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr001_POWER_ALL/lwswr001.c @@ -14,13 +14,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr001_POWER_OPC/lwswr001.c b/regression/goto-instrument-wmm-core/ppc_lwswr001_POWER_OPC/lwswr001.c index 3c80650c0b4..a178f543cc8 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr001_POWER_OPC/lwswr001.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr001_POWER_OPC/lwswr001.c @@ -14,13 +14,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr001_PSO_OPC/lwswr001.c b/regression/goto-instrument-wmm-core/ppc_lwswr001_PSO_OPC/lwswr001.c index 3c80650c0b4..a178f543cc8 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr001_PSO_OPC/lwswr001.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr001_PSO_OPC/lwswr001.c @@ -14,13 +14,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr001_RMO_OPC/lwswr001.c b/regression/goto-instrument-wmm-core/ppc_lwswr001_RMO_OPC/lwswr001.c index 3c80650c0b4..a178f543cc8 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr001_RMO_OPC/lwswr001.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr001_RMO_OPC/lwswr001.c @@ -14,13 +14,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr001_TSO_OPC/lwswr001.c b/regression/goto-instrument-wmm-core/ppc_lwswr001_TSO_OPC/lwswr001.c index 3c80650c0b4..a178f543cc8 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr001_TSO_OPC/lwswr001.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr001_TSO_OPC/lwswr001.c @@ -14,13 +14,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr002_POWER_ALL/lwswr002.c b/regression/goto-instrument-wmm-core/ppc_lwswr002_POWER_ALL/lwswr002.c index 8fbce92a0a6..89dc1b9101c 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr002_POWER_ALL/lwswr002.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr002_POWER_ALL/lwswr002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr002_POWER_OPC/lwswr002.c b/regression/goto-instrument-wmm-core/ppc_lwswr002_POWER_OPC/lwswr002.c index 8fbce92a0a6..89dc1b9101c 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr002_POWER_OPC/lwswr002.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr002_POWER_OPC/lwswr002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr002_PSO_ALL/lwswr002.c b/regression/goto-instrument-wmm-core/ppc_lwswr002_PSO_ALL/lwswr002.c index 8fbce92a0a6..89dc1b9101c 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr002_PSO_ALL/lwswr002.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr002_PSO_ALL/lwswr002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr002_PSO_OPC/lwswr002.c b/regression/goto-instrument-wmm-core/ppc_lwswr002_PSO_OPC/lwswr002.c index 8fbce92a0a6..89dc1b9101c 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr002_PSO_OPC/lwswr002.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr002_PSO_OPC/lwswr002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr002_RMO_ALL/lwswr002.c b/regression/goto-instrument-wmm-core/ppc_lwswr002_RMO_ALL/lwswr002.c index 8fbce92a0a6..89dc1b9101c 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr002_RMO_ALL/lwswr002.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr002_RMO_ALL/lwswr002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr002_RMO_OPC/lwswr002.c b/regression/goto-instrument-wmm-core/ppc_lwswr002_RMO_OPC/lwswr002.c index 8fbce92a0a6..89dc1b9101c 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr002_RMO_OPC/lwswr002.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr002_RMO_OPC/lwswr002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr002_TSO_ALL/lwswr002.c b/regression/goto-instrument-wmm-core/ppc_lwswr002_TSO_ALL/lwswr002.c index 8fbce92a0a6..89dc1b9101c 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr002_TSO_ALL/lwswr002.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr002_TSO_ALL/lwswr002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr002_TSO_OPC/lwswr002.c b/regression/goto-instrument-wmm-core/ppc_lwswr002_TSO_OPC/lwswr002.c index 8fbce92a0a6..89dc1b9101c 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr002_TSO_OPC/lwswr002.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr002_TSO_OPC/lwswr002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr003_POWER_ALL/lwswr003.c b/regression/goto-instrument-wmm-core/ppc_lwswr003_POWER_ALL/lwswr003.c index 504a017b14c..7732c2ac2ef 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr003_POWER_ALL/lwswr003.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr003_POWER_ALL/lwswr003.c @@ -14,15 +14,15 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr003_POWER_OPC/lwswr003.c b/regression/goto-instrument-wmm-core/ppc_lwswr003_POWER_OPC/lwswr003.c index 504a017b14c..7732c2ac2ef 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr003_POWER_OPC/lwswr003.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr003_POWER_OPC/lwswr003.c @@ -14,15 +14,15 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr003_PSO_ALL/lwswr003.c b/regression/goto-instrument-wmm-core/ppc_lwswr003_PSO_ALL/lwswr003.c index 504a017b14c..7732c2ac2ef 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr003_PSO_ALL/lwswr003.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr003_PSO_ALL/lwswr003.c @@ -14,15 +14,15 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr003_PSO_OPC/lwswr003.c b/regression/goto-instrument-wmm-core/ppc_lwswr003_PSO_OPC/lwswr003.c index 504a017b14c..7732c2ac2ef 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr003_PSO_OPC/lwswr003.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr003_PSO_OPC/lwswr003.c @@ -14,15 +14,15 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr003_RMO_ALL/lwswr003.c b/regression/goto-instrument-wmm-core/ppc_lwswr003_RMO_ALL/lwswr003.c index 504a017b14c..7732c2ac2ef 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr003_RMO_ALL/lwswr003.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr003_RMO_ALL/lwswr003.c @@ -14,15 +14,15 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr003_RMO_OPC/lwswr003.c b/regression/goto-instrument-wmm-core/ppc_lwswr003_RMO_OPC/lwswr003.c index 504a017b14c..7732c2ac2ef 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr003_RMO_OPC/lwswr003.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr003_RMO_OPC/lwswr003.c @@ -14,15 +14,15 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr003_TSO_ALL/lwswr003.c b/regression/goto-instrument-wmm-core/ppc_lwswr003_TSO_ALL/lwswr003.c index 504a017b14c..7732c2ac2ef 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr003_TSO_ALL/lwswr003.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr003_TSO_ALL/lwswr003.c @@ -14,15 +14,15 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_lwswr003_TSO_OPC/lwswr003.c b/regression/goto-instrument-wmm-core/ppc_lwswr003_TSO_OPC/lwswr003.c index 504a017b14c..7732c2ac2ef 100644 --- a/regression/goto-instrument-wmm-core/ppc_lwswr003_TSO_OPC/lwswr003.c +++ b/regression/goto-instrument-wmm-core/ppc_lwswr003_TSO_OPC/lwswr003.c @@ -14,15 +14,15 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; -int __unbuffered_p2_r4 = 0; +__CPROVER_thread_local int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_mix000_PSO_ALL/mix000.c b/regression/goto-instrument-wmm-core/ppc_mix000_PSO_ALL/mix000.c index 761c44e999e..ed1a35b568e 100644 --- a/regression/goto-instrument-wmm-core/ppc_mix000_PSO_ALL/mix000.c +++ b/regression/goto-instrument-wmm-core/ppc_mix000_PSO_ALL/mix000.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_mix000_PSO_OPC/mix000.c b/regression/goto-instrument-wmm-core/ppc_mix000_PSO_OPC/mix000.c index 761c44e999e..ed1a35b568e 100644 --- a/regression/goto-instrument-wmm-core/ppc_mix000_PSO_OPC/mix000.c +++ b/regression/goto-instrument-wmm-core/ppc_mix000_PSO_OPC/mix000.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_mix000_RMO_ALL/mix000.c b/regression/goto-instrument-wmm-core/ppc_mix000_RMO_ALL/mix000.c index 761c44e999e..ed1a35b568e 100644 --- a/regression/goto-instrument-wmm-core/ppc_mix000_RMO_ALL/mix000.c +++ b/regression/goto-instrument-wmm-core/ppc_mix000_RMO_ALL/mix000.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_mix000_TSO_ALL/mix000.c b/regression/goto-instrument-wmm-core/ppc_mix000_TSO_ALL/mix000.c index 761c44e999e..ed1a35b568e 100644 --- a/regression/goto-instrument-wmm-core/ppc_mix000_TSO_ALL/mix000.c +++ b/regression/goto-instrument-wmm-core/ppc_mix000_TSO_ALL/mix000.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_mix000_TSO_OPC/mix000.c b/regression/goto-instrument-wmm-core/ppc_mix000_TSO_OPC/mix000.c index 761c44e999e..ed1a35b568e 100644 --- a/regression/goto-instrument-wmm-core/ppc_mix000_TSO_OPC/mix000.c +++ b/regression/goto-instrument-wmm-core/ppc_mix000_TSO_OPC/mix000.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr000_PSO_ALL/podrwposwr000.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr000_PSO_ALL/podrwposwr000.c index 0ca7bda0643..443cd669c68 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr000_PSO_ALL/podrwposwr000.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr000_PSO_ALL/podrwposwr000.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr000_PSO_OPC/podrwposwr000.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr000_PSO_OPC/podrwposwr000.c index 0ca7bda0643..443cd669c68 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr000_PSO_OPC/podrwposwr000.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr000_PSO_OPC/podrwposwr000.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr000_TSO_ALL/podrwposwr000.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr000_TSO_ALL/podrwposwr000.c index 0ca7bda0643..443cd669c68 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr000_TSO_ALL/podrwposwr000.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr000_TSO_ALL/podrwposwr000.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr000_TSO_OPC/podrwposwr000.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr000_TSO_OPC/podrwposwr000.c index 0ca7bda0643..443cd669c68 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr000_TSO_OPC/podrwposwr000.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr000_TSO_OPC/podrwposwr000.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr001_PSO_ALL/podrwposwr001.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr001_PSO_ALL/podrwposwr001.c index c9a23e8ee53..d3e7965f394 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr001_PSO_ALL/podrwposwr001.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr001_PSO_ALL/podrwposwr001.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr001_PSO_OPC/podrwposwr001.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr001_PSO_OPC/podrwposwr001.c index c9a23e8ee53..d3e7965f394 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr001_PSO_OPC/podrwposwr001.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr001_PSO_OPC/podrwposwr001.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr001_TSO_ALL/podrwposwr001.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr001_TSO_ALL/podrwposwr001.c index c9a23e8ee53..d3e7965f394 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr001_TSO_ALL/podrwposwr001.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr001_TSO_ALL/podrwposwr001.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr001_TSO_OPC/podrwposwr001.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr001_TSO_OPC/podrwposwr001.c index c9a23e8ee53..d3e7965f394 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr001_TSO_OPC/podrwposwr001.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr001_TSO_OPC/podrwposwr001.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr002_PSO_ALL/podrwposwr002.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr002_PSO_ALL/podrwposwr002.c index 42d904da188..911f2a39b7b 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr002_PSO_ALL/podrwposwr002.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr002_PSO_ALL/podrwposwr002.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr002_PSO_OPC/podrwposwr002.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr002_PSO_OPC/podrwposwr002.c index 42d904da188..911f2a39b7b 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr002_PSO_OPC/podrwposwr002.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr002_PSO_OPC/podrwposwr002.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr002_TSO_ALL/podrwposwr002.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr002_TSO_ALL/podrwposwr002.c index 42d904da188..911f2a39b7b 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr002_TSO_ALL/podrwposwr002.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr002_TSO_ALL/podrwposwr002.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr002_TSO_OPC/podrwposwr002.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr002_TSO_OPC/podrwposwr002.c index 42d904da188..911f2a39b7b 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr002_TSO_OPC/podrwposwr002.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr002_TSO_OPC/podrwposwr002.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr003_PSO_ALL/podrwposwr003.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr003_PSO_ALL/podrwposwr003.c index 419c0236208..a77a97f2e31 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr003_PSO_ALL/podrwposwr003.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr003_PSO_ALL/podrwposwr003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr003_PSO_OPC/podrwposwr003.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr003_PSO_OPC/podrwposwr003.c index 419c0236208..a77a97f2e31 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr003_PSO_OPC/podrwposwr003.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr003_PSO_OPC/podrwposwr003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr003_TSO_ALL/podrwposwr003.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr003_TSO_ALL/podrwposwr003.c index 419c0236208..a77a97f2e31 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr003_TSO_ALL/podrwposwr003.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr003_TSO_ALL/podrwposwr003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr003_TSO_OPC/podrwposwr003.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr003_TSO_OPC/podrwposwr003.c index 419c0236208..a77a97f2e31 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr003_TSO_OPC/podrwposwr003.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr003_TSO_OPC/podrwposwr003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r8 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr005_PSO_ALL/podrwposwr005.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr005_PSO_ALL/podrwposwr005.c index 6a9cdaa3cac..27e23b58410 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr005_PSO_ALL/podrwposwr005.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr005_PSO_ALL/podrwposwr005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r5 = 0; -int __unbuffered_p1_r6 = 0; +__CPROVER_thread_local int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r7 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr005_PSO_OPC/podrwposwr005.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr005_PSO_OPC/podrwposwr005.c index 6a9cdaa3cac..27e23b58410 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr005_PSO_OPC/podrwposwr005.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr005_PSO_OPC/podrwposwr005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r5 = 0; -int __unbuffered_p1_r6 = 0; +__CPROVER_thread_local int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r7 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr005_TSO_ALL/podrwposwr005.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr005_TSO_ALL/podrwposwr005.c index 6a9cdaa3cac..27e23b58410 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr005_TSO_ALL/podrwposwr005.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr005_TSO_ALL/podrwposwr005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r5 = 0; -int __unbuffered_p1_r6 = 0; +__CPROVER_thread_local int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r7 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr005_TSO_OPC/podrwposwr005.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr005_TSO_OPC/podrwposwr005.c index 6a9cdaa3cac..27e23b58410 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr005_TSO_OPC/podrwposwr005.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr005_TSO_OPC/podrwposwr005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r5 = 0; -int __unbuffered_p1_r6 = 0; +__CPROVER_thread_local int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r7 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr007_PSO_ALL/podrwposwr007.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr007_PSO_ALL/podrwposwr007.c index 8a5f07c7a3c..f083725e8b0 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr007_PSO_ALL/podrwposwr007.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr007_PSO_ALL/podrwposwr007.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr007_PSO_OPC/podrwposwr007.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr007_PSO_OPC/podrwposwr007.c index 8a5f07c7a3c..f083725e8b0 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr007_PSO_OPC/podrwposwr007.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr007_PSO_OPC/podrwposwr007.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr007_TSO_ALL/podrwposwr007.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr007_TSO_ALL/podrwposwr007.c index 8a5f07c7a3c..f083725e8b0 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr007_TSO_ALL/podrwposwr007.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr007_TSO_ALL/podrwposwr007.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr007_TSO_OPC/podrwposwr007.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr007_TSO_OPC/podrwposwr007.c index 8a5f07c7a3c..f083725e8b0 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr007_TSO_OPC/podrwposwr007.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr007_TSO_OPC/podrwposwr007.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr008_PSO_ALL/podrwposwr008.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr008_PSO_ALL/podrwposwr008.c index 1e083a56240..172cafe79e5 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr008_PSO_ALL/podrwposwr008.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr008_PSO_ALL/podrwposwr008.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr008_PSO_OPC/podrwposwr008.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr008_PSO_OPC/podrwposwr008.c index 1e083a56240..172cafe79e5 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr008_PSO_OPC/podrwposwr008.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr008_PSO_OPC/podrwposwr008.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr008_TSO_ALL/podrwposwr008.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr008_TSO_ALL/podrwposwr008.c index 1e083a56240..172cafe79e5 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr008_TSO_ALL/podrwposwr008.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr008_TSO_ALL/podrwposwr008.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr008_TSO_OPC/podrwposwr008.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr008_TSO_OPC/podrwposwr008.c index 1e083a56240..172cafe79e5 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr008_TSO_OPC/podrwposwr008.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr008_TSO_OPC/podrwposwr008.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr009_PSO_ALL/podrwposwr009.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr009_PSO_ALL/podrwposwr009.c index a1ece5d600f..ca589ed43cb 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr009_PSO_ALL/podrwposwr009.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr009_PSO_ALL/podrwposwr009.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r5 = 0; -int __unbuffered_p1_r6 = 0; +__CPROVER_thread_local int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r7 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr009_PSO_OPC/podrwposwr009.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr009_PSO_OPC/podrwposwr009.c index a1ece5d600f..ca589ed43cb 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr009_PSO_OPC/podrwposwr009.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr009_PSO_OPC/podrwposwr009.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r5 = 0; -int __unbuffered_p1_r6 = 0; +__CPROVER_thread_local int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r7 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr009_TSO_ALL/podrwposwr009.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr009_TSO_ALL/podrwposwr009.c index a1ece5d600f..ca589ed43cb 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr009_TSO_ALL/podrwposwr009.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr009_TSO_ALL/podrwposwr009.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r5 = 0; -int __unbuffered_p1_r6 = 0; +__CPROVER_thread_local int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r7 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr009_TSO_OPC/podrwposwr009.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr009_TSO_OPC/podrwposwr009.c index a1ece5d600f..ca589ed43cb 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr009_TSO_OPC/podrwposwr009.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr009_TSO_OPC/podrwposwr009.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r5 = 0; -int __unbuffered_p1_r6 = 0; +__CPROVER_thread_local int __unbuffered_p1_r6 = 0; int __unbuffered_p1_r7 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr011_PSO_ALL/podrwposwr011.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr011_PSO_ALL/podrwposwr011.c index 2c78b38dfcc..8d112ec7451 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr011_PSO_ALL/podrwposwr011.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr011_PSO_ALL/podrwposwr011.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr011_PSO_OPC/podrwposwr011.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr011_PSO_OPC/podrwposwr011.c index 2c78b38dfcc..8d112ec7451 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr011_PSO_OPC/podrwposwr011.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr011_PSO_OPC/podrwposwr011.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr011_TSO_ALL/podrwposwr011.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr011_TSO_ALL/podrwposwr011.c index 2c78b38dfcc..8d112ec7451 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr011_TSO_ALL/podrwposwr011.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr011_TSO_ALL/podrwposwr011.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr011_TSO_OPC/podrwposwr011.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr011_TSO_OPC/podrwposwr011.c index 2c78b38dfcc..8d112ec7451 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr011_TSO_OPC/podrwposwr011.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr011_TSO_OPC/podrwposwr011.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr012_PSO_ALL/podrwposwr012.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr012_PSO_ALL/podrwposwr012.c index 3fedd6602e9..fef8ca0c055 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr012_PSO_ALL/podrwposwr012.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr012_PSO_ALL/podrwposwr012.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr012_PSO_OPC/podrwposwr012.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr012_PSO_OPC/podrwposwr012.c index 3fedd6602e9..fef8ca0c055 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr012_PSO_OPC/podrwposwr012.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr012_PSO_OPC/podrwposwr012.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr012_TSO_ALL/podrwposwr012.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr012_TSO_ALL/podrwposwr012.c index 3fedd6602e9..fef8ca0c055 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr012_TSO_ALL/podrwposwr012.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr012_TSO_ALL/podrwposwr012.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr012_TSO_OPC/podrwposwr012.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr012_TSO_OPC/podrwposwr012.c index 3fedd6602e9..fef8ca0c055 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr012_TSO_OPC/podrwposwr012.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr012_TSO_OPC/podrwposwr012.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr014_PSO_ALL/podrwposwr014.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr014_PSO_ALL/podrwposwr014.c index 40d9ba41d9f..13028fb57f4 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr014_PSO_ALL/podrwposwr014.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr014_PSO_ALL/podrwposwr014.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr014_PSO_OPC/podrwposwr014.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr014_PSO_OPC/podrwposwr014.c index 40d9ba41d9f..13028fb57f4 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr014_PSO_OPC/podrwposwr014.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr014_PSO_OPC/podrwposwr014.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr014_TSO_ALL/podrwposwr014.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr014_TSO_ALL/podrwposwr014.c index 40d9ba41d9f..13028fb57f4 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr014_TSO_ALL/podrwposwr014.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr014_TSO_ALL/podrwposwr014.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr014_TSO_OPC/podrwposwr014.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr014_TSO_OPC/podrwposwr014.c index 40d9ba41d9f..13028fb57f4 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr014_TSO_OPC/podrwposwr014.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr014_TSO_OPC/podrwposwr014.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr015_PSO_ALL/podrwposwr015.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr015_PSO_ALL/podrwposwr015.c index bae67e3f495..290e67c3d72 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr015_PSO_ALL/podrwposwr015.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr015_PSO_ALL/podrwposwr015.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr015_PSO_OPC/podrwposwr015.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr015_PSO_OPC/podrwposwr015.c index bae67e3f495..290e67c3d72 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr015_PSO_OPC/podrwposwr015.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr015_PSO_OPC/podrwposwr015.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr015_TSO_ALL/podrwposwr015.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr015_TSO_ALL/podrwposwr015.c index bae67e3f495..290e67c3d72 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr015_TSO_ALL/podrwposwr015.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr015_TSO_ALL/podrwposwr015.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_podrwposwr015_TSO_OPC/podrwposwr015.c b/regression/goto-instrument-wmm-core/ppc_podrwposwr015_TSO_OPC/podrwposwr015.c index bae67e3f495..290e67c3d72 100644 --- a/regression/goto-instrument-wmm-core/ppc_podrwposwr015_TSO_OPC/podrwposwr015.c +++ b/regression/goto-instrument-wmm-core/ppc_podrwposwr015_TSO_OPC/podrwposwr015.c @@ -19,7 +19,7 @@ int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r5 = 0; -int __unbuffered_p2_r6 = 0; +__CPROVER_thread_local int __unbuffered_p2_r6 = 0; int __unbuffered_p2_r7 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr000_PSO_ALL/posrr000.c b/regression/goto-instrument-wmm-core/ppc_posrr000_PSO_ALL/posrr000.c index 43dae58e9b9..0403afe07d2 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr000_PSO_ALL/posrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr000_PSO_ALL/posrr000.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p1_r7 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr000_PSO_OPC/posrr000.c b/regression/goto-instrument-wmm-core/ppc_posrr000_PSO_OPC/posrr000.c index 43dae58e9b9..0403afe07d2 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr000_PSO_OPC/posrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr000_PSO_OPC/posrr000.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p1_r7 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr000_TSO_ALL/posrr000.c b/regression/goto-instrument-wmm-core/ppc_posrr000_TSO_ALL/posrr000.c index 43dae58e9b9..0403afe07d2 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr000_TSO_ALL/posrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr000_TSO_ALL/posrr000.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p1_r7 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr000_TSO_OPC/posrr000.c b/regression/goto-instrument-wmm-core/ppc_posrr000_TSO_OPC/posrr000.c index 43dae58e9b9..0403afe07d2 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr000_TSO_OPC/posrr000.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr000_TSO_OPC/posrr000.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int __unbuffered_p1_r7 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr001_PSO_ALL/posrr001.c b/regression/goto-instrument-wmm-core/ppc_posrr001_PSO_ALL/posrr001.c index ea414e2127e..4dcdf3e9b41 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr001_PSO_ALL/posrr001.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr001_PSO_ALL/posrr001.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr001_PSO_OPC/posrr001.c b/regression/goto-instrument-wmm-core/ppc_posrr001_PSO_OPC/posrr001.c index ea414e2127e..4dcdf3e9b41 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr001_PSO_OPC/posrr001.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr001_PSO_OPC/posrr001.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr001_TSO_ALL/posrr001.c b/regression/goto-instrument-wmm-core/ppc_posrr001_TSO_ALL/posrr001.c index ea414e2127e..4dcdf3e9b41 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr001_TSO_ALL/posrr001.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr001_TSO_ALL/posrr001.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr001_TSO_OPC/posrr001.c b/regression/goto-instrument-wmm-core/ppc_posrr001_TSO_OPC/posrr001.c index ea414e2127e..4dcdf3e9b41 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr001_TSO_OPC/posrr001.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr001_TSO_OPC/posrr001.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr002_PSO_ALL/posrr002.c b/regression/goto-instrument-wmm-core/ppc_posrr002_PSO_ALL/posrr002.c index 4b25cefbb68..ec25ce2faeb 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr002_PSO_ALL/posrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr002_PSO_ALL/posrr002.c @@ -15,10 +15,10 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr002_PSO_OPC/posrr002.c b/regression/goto-instrument-wmm-core/ppc_posrr002_PSO_OPC/posrr002.c index 4b25cefbb68..ec25ce2faeb 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr002_PSO_OPC/posrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr002_PSO_OPC/posrr002.c @@ -15,10 +15,10 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr002_TSO_ALL/posrr002.c b/regression/goto-instrument-wmm-core/ppc_posrr002_TSO_ALL/posrr002.c index 4b25cefbb68..ec25ce2faeb 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr002_TSO_ALL/posrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr002_TSO_ALL/posrr002.c @@ -15,10 +15,10 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr002_TSO_OPC/posrr002.c b/regression/goto-instrument-wmm-core/ppc_posrr002_TSO_OPC/posrr002.c index 4b25cefbb68..ec25ce2faeb 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr002_TSO_OPC/posrr002.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr002_TSO_OPC/posrr002.c @@ -15,10 +15,10 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr003_PSO_ALL/posrr003.c b/regression/goto-instrument-wmm-core/ppc_posrr003_PSO_ALL/posrr003.c index 3e3eebf7425..a248db2e3c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr003_PSO_ALL/posrr003.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr003_PSO_ALL/posrr003.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr003_PSO_OPC/posrr003.c b/regression/goto-instrument-wmm-core/ppc_posrr003_PSO_OPC/posrr003.c index 3e3eebf7425..a248db2e3c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr003_PSO_OPC/posrr003.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr003_PSO_OPC/posrr003.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr003_TSO_ALL/posrr003.c b/regression/goto-instrument-wmm-core/ppc_posrr003_TSO_ALL/posrr003.c index 3e3eebf7425..a248db2e3c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr003_TSO_ALL/posrr003.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr003_TSO_ALL/posrr003.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_posrr003_TSO_OPC/posrr003.c b/regression/goto-instrument-wmm-core/ppc_posrr003_TSO_OPC/posrr003.c index 3e3eebf7425..a248db2e3c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_posrr003_TSO_OPC/posrr003.c +++ b/regression/goto-instrument-wmm-core/ppc_posrr003_TSO_OPC/posrr003.c @@ -16,7 +16,7 @@ int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe000_PSO_ALL/rfe000.c b/regression/goto-instrument-wmm-core/ppc_rfe000_PSO_ALL/rfe000.c index fd5d9809639..027c5a3f4c3 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe000_PSO_ALL/rfe000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe000_PSO_ALL/rfe000.c @@ -13,10 +13,10 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe000_PSO_OPC/rfe000.c b/regression/goto-instrument-wmm-core/ppc_rfe000_PSO_OPC/rfe000.c index fd5d9809639..027c5a3f4c3 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe000_PSO_OPC/rfe000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe000_PSO_OPC/rfe000.c @@ -13,10 +13,10 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe000_TSO_ALL/rfe000.c b/regression/goto-instrument-wmm-core/ppc_rfe000_TSO_ALL/rfe000.c index fd5d9809639..027c5a3f4c3 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe000_TSO_ALL/rfe000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe000_TSO_ALL/rfe000.c @@ -13,10 +13,10 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe000_TSO_OPC/rfe000.c b/regression/goto-instrument-wmm-core/ppc_rfe000_TSO_OPC/rfe000.c index fd5d9809639..027c5a3f4c3 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe000_TSO_OPC/rfe000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe000_TSO_OPC/rfe000.c @@ -13,10 +13,10 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe001_PSO_ALL/rfe001.c b/regression/goto-instrument-wmm-core/ppc_rfe001_PSO_ALL/rfe001.c index 5ae006485f6..a2b9acf62a9 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe001_PSO_ALL/rfe001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe001_PSO_ALL/rfe001.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe001_PSO_OPC/rfe001.c b/regression/goto-instrument-wmm-core/ppc_rfe001_PSO_OPC/rfe001.c index 5ae006485f6..a2b9acf62a9 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe001_PSO_OPC/rfe001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe001_PSO_OPC/rfe001.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe001_TSO_ALL/rfe001.c b/regression/goto-instrument-wmm-core/ppc_rfe001_TSO_ALL/rfe001.c index 5ae006485f6..a2b9acf62a9 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe001_TSO_ALL/rfe001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe001_TSO_ALL/rfe001.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe001_TSO_OPC/rfe001.c b/regression/goto-instrument-wmm-core/ppc_rfe001_TSO_OPC/rfe001.c index 5ae006485f6..a2b9acf62a9 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe001_TSO_OPC/rfe001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe001_TSO_OPC/rfe001.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe002_PSO_ALL/rfe002.c b/regression/goto-instrument-wmm-core/ppc_rfe002_PSO_ALL/rfe002.c index dc09f2a0a79..04f4ed2706e 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe002_PSO_ALL/rfe002.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe002_PSO_ALL/rfe002.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe002_PSO_OPC/rfe002.c b/regression/goto-instrument-wmm-core/ppc_rfe002_PSO_OPC/rfe002.c index dc09f2a0a79..04f4ed2706e 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe002_PSO_OPC/rfe002.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe002_PSO_OPC/rfe002.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe002_TSO_ALL/rfe002.c b/regression/goto-instrument-wmm-core/ppc_rfe002_TSO_ALL/rfe002.c index dc09f2a0a79..04f4ed2706e 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe002_TSO_ALL/rfe002.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe002_TSO_ALL/rfe002.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe002_TSO_OPC/rfe002.c b/regression/goto-instrument-wmm-core/ppc_rfe002_TSO_OPC/rfe002.c index dc09f2a0a79..04f4ed2706e 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe002_TSO_OPC/rfe002.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe002_TSO_OPC/rfe002.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe003_PSO_ALL/rfe003.c b/regression/goto-instrument-wmm-core/ppc_rfe003_PSO_ALL/rfe003.c index e2702aad4a6..784fd981db5 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe003_PSO_ALL/rfe003.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe003_PSO_ALL/rfe003.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe003_PSO_OPC/rfe003.c b/regression/goto-instrument-wmm-core/ppc_rfe003_PSO_OPC/rfe003.c index e2702aad4a6..784fd981db5 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe003_PSO_OPC/rfe003.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe003_PSO_OPC/rfe003.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe003_RMO_ALL/rfe003.c b/regression/goto-instrument-wmm-core/ppc_rfe003_RMO_ALL/rfe003.c index e2702aad4a6..2f90225bbe0 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe003_RMO_ALL/rfe003.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe003_RMO_ALL/rfe003.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe003_RMO_OPC/rfe003.c b/regression/goto-instrument-wmm-core/ppc_rfe003_RMO_OPC/rfe003.c index e2702aad4a6..2f90225bbe0 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe003_RMO_OPC/rfe003.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe003_RMO_OPC/rfe003.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe003_TSO_ALL/rfe003.c b/regression/goto-instrument-wmm-core/ppc_rfe003_TSO_ALL/rfe003.c index e2702aad4a6..784fd981db5 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe003_TSO_ALL/rfe003.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe003_TSO_ALL/rfe003.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe003_TSO_OPC/rfe003.c b/regression/goto-instrument-wmm-core/ppc_rfe003_TSO_OPC/rfe003.c index e2702aad4a6..784fd981db5 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe003_TSO_OPC/rfe003.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe003_TSO_OPC/rfe003.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe004_PSO_ALL/rfe004.c b/regression/goto-instrument-wmm-core/ppc_rfe004_PSO_ALL/rfe004.c index 9683f7c7d0e..cccfa85dad8 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe004_PSO_ALL/rfe004.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe004_PSO_ALL/rfe004.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe004_PSO_OPC/rfe004.c b/regression/goto-instrument-wmm-core/ppc_rfe004_PSO_OPC/rfe004.c index 9683f7c7d0e..cccfa85dad8 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe004_PSO_OPC/rfe004.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe004_PSO_OPC/rfe004.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe004_TSO_ALL/rfe004.c b/regression/goto-instrument-wmm-core/ppc_rfe004_TSO_ALL/rfe004.c index 9683f7c7d0e..cccfa85dad8 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe004_TSO_ALL/rfe004.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe004_TSO_ALL/rfe004.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe004_TSO_OPC/rfe004.c b/regression/goto-instrument-wmm-core/ppc_rfe004_TSO_OPC/rfe004.c index 9683f7c7d0e..cccfa85dad8 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe004_TSO_OPC/rfe004.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe004_TSO_OPC/rfe004.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe005_PSO_ALL/rfe005.c b/regression/goto-instrument-wmm-core/ppc_rfe005_PSO_ALL/rfe005.c index fe0b72c0a25..60ee16f80cf 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe005_PSO_ALL/rfe005.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe005_PSO_ALL/rfe005.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe005_PSO_OPC/rfe005.c b/regression/goto-instrument-wmm-core/ppc_rfe005_PSO_OPC/rfe005.c index fe0b72c0a25..60ee16f80cf 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe005_PSO_OPC/rfe005.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe005_PSO_OPC/rfe005.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe005_RMO_ALL/rfe005.c b/regression/goto-instrument-wmm-core/ppc_rfe005_RMO_ALL/rfe005.c index fe0b72c0a25..edf5c1b47e2 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe005_RMO_ALL/rfe005.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe005_RMO_ALL/rfe005.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe005_RMO_OPC/rfe005.c b/regression/goto-instrument-wmm-core/ppc_rfe005_RMO_OPC/rfe005.c index fe0b72c0a25..edf5c1b47e2 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe005_RMO_OPC/rfe005.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe005_RMO_OPC/rfe005.c @@ -13,7 +13,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe005_TSO_ALL/rfe005.c b/regression/goto-instrument-wmm-core/ppc_rfe005_TSO_ALL/rfe005.c index fe0b72c0a25..60ee16f80cf 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe005_TSO_ALL/rfe005.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe005_TSO_ALL/rfe005.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe005_TSO_OPC/rfe005.c b/regression/goto-instrument-wmm-core/ppc_rfe005_TSO_OPC/rfe005.c index fe0b72c0a25..60ee16f80cf 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe005_TSO_OPC/rfe005.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe005_TSO_OPC/rfe005.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe006_PSO_ALL/rfe006.c b/regression/goto-instrument-wmm-core/ppc_rfe006_PSO_ALL/rfe006.c index 1d820f3e05d..81f192c9d59 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe006_PSO_ALL/rfe006.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe006_PSO_ALL/rfe006.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe006_PSO_OPC/rfe006.c b/regression/goto-instrument-wmm-core/ppc_rfe006_PSO_OPC/rfe006.c index 1d820f3e05d..81f192c9d59 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe006_PSO_OPC/rfe006.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe006_PSO_OPC/rfe006.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe006_RMO_ALL/rfe006.c b/regression/goto-instrument-wmm-core/ppc_rfe006_RMO_ALL/rfe006.c index 1d820f3e05d..81f192c9d59 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe006_RMO_ALL/rfe006.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe006_RMO_ALL/rfe006.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe006_RMO_OPC/rfe006.c b/regression/goto-instrument-wmm-core/ppc_rfe006_RMO_OPC/rfe006.c index 1d820f3e05d..81f192c9d59 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe006_RMO_OPC/rfe006.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe006_RMO_OPC/rfe006.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe006_TSO_ALL/rfe006.c b/regression/goto-instrument-wmm-core/ppc_rfe006_TSO_ALL/rfe006.c index 1d820f3e05d..81f192c9d59 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe006_TSO_ALL/rfe006.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe006_TSO_ALL/rfe006.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfe006_TSO_OPC/rfe006.c b/regression/goto-instrument-wmm-core/ppc_rfe006_TSO_OPC/rfe006.c index 1d820f3e05d..81f192c9d59 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfe006_TSO_OPC/rfe006.c +++ b/regression/goto-instrument-wmm-core/ppc_rfe006_TSO_OPC/rfe006.c @@ -13,11 +13,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi000_POWER_ALL/rfi000.c b/regression/goto-instrument-wmm-core/ppc_rfi000_POWER_ALL/rfi000.c index cbd34c8e45a..0d8afa8c771 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi000_POWER_ALL/rfi000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi000_POWER_ALL/rfi000.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi000_POWER_OPC/rfi000.c b/regression/goto-instrument-wmm-core/ppc_rfi000_POWER_OPC/rfi000.c index cbd34c8e45a..0d8afa8c771 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi000_POWER_OPC/rfi000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi000_POWER_OPC/rfi000.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi000_PSO_ALL/rfi000.c b/regression/goto-instrument-wmm-core/ppc_rfi000_PSO_ALL/rfi000.c index cbd34c8e45a..0d8afa8c771 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi000_PSO_ALL/rfi000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi000_PSO_ALL/rfi000.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi000_PSO_OPC/rfi000.c b/regression/goto-instrument-wmm-core/ppc_rfi000_PSO_OPC/rfi000.c index cbd34c8e45a..0d8afa8c771 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi000_PSO_OPC/rfi000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi000_PSO_OPC/rfi000.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi000_RMO_ALL/rfi000.c b/regression/goto-instrument-wmm-core/ppc_rfi000_RMO_ALL/rfi000.c index cbd34c8e45a..0d8afa8c771 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi000_RMO_ALL/rfi000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi000_RMO_ALL/rfi000.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi000_RMO_OPC/rfi000.c b/regression/goto-instrument-wmm-core/ppc_rfi000_RMO_OPC/rfi000.c index cbd34c8e45a..0d8afa8c771 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi000_RMO_OPC/rfi000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi000_RMO_OPC/rfi000.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi000_TSO_ALL/rfi000.c b/regression/goto-instrument-wmm-core/ppc_rfi000_TSO_ALL/rfi000.c index cbd34c8e45a..0d8afa8c771 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi000_TSO_ALL/rfi000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi000_TSO_ALL/rfi000.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi000_TSO_OPC/rfi000.c b/regression/goto-instrument-wmm-core/ppc_rfi000_TSO_OPC/rfi000.c index cbd34c8e45a..0d8afa8c771 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi000_TSO_OPC/rfi000.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi000_TSO_OPC/rfi000.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi001_POWER_ALL/rfi001.c b/regression/goto-instrument-wmm-core/ppc_rfi001_POWER_ALL/rfi001.c index c9e4f79449b..5f5c8946356 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi001_POWER_ALL/rfi001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi001_POWER_ALL/rfi001.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi001_POWER_OPC/rfi001.c b/regression/goto-instrument-wmm-core/ppc_rfi001_POWER_OPC/rfi001.c index c9e4f79449b..5f5c8946356 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi001_POWER_OPC/rfi001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi001_POWER_OPC/rfi001.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi001_PSO_ALL/rfi001.c b/regression/goto-instrument-wmm-core/ppc_rfi001_PSO_ALL/rfi001.c index c9e4f79449b..5f5c8946356 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi001_PSO_ALL/rfi001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi001_PSO_ALL/rfi001.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi001_PSO_OPC/rfi001.c b/regression/goto-instrument-wmm-core/ppc_rfi001_PSO_OPC/rfi001.c index c9e4f79449b..5f5c8946356 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi001_PSO_OPC/rfi001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi001_PSO_OPC/rfi001.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi001_RMO_ALL/rfi001.c b/regression/goto-instrument-wmm-core/ppc_rfi001_RMO_ALL/rfi001.c index c9e4f79449b..5f5c8946356 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi001_RMO_ALL/rfi001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi001_RMO_ALL/rfi001.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi001_RMO_OPC/rfi001.c b/regression/goto-instrument-wmm-core/ppc_rfi001_RMO_OPC/rfi001.c index c9e4f79449b..5f5c8946356 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi001_RMO_OPC/rfi001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi001_RMO_OPC/rfi001.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi001_TSO_ALL/rfi001.c b/regression/goto-instrument-wmm-core/ppc_rfi001_TSO_ALL/rfi001.c index c9e4f79449b..5f5c8946356 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi001_TSO_ALL/rfi001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi001_TSO_ALL/rfi001.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi001_TSO_OPC/rfi001.c b/regression/goto-instrument-wmm-core/ppc_rfi001_TSO_OPC/rfi001.c index c9e4f79449b..5f5c8946356 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi001_TSO_OPC/rfi001.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi001_TSO_OPC/rfi001.c @@ -14,7 +14,7 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi002_TSO_ALL/rfi002.c b/regression/goto-instrument-wmm-core/ppc_rfi002_TSO_ALL/rfi002.c index c220303d7f4..1a2e8dfdcf8 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi002_TSO_ALL/rfi002.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi002_TSO_ALL/rfi002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_rfi002_TSO_OPC/rfi002.c b/regression/goto-instrument-wmm-core/ppc_rfi002_TSO_OPC/rfi002.c index c220303d7f4..1a2e8dfdcf8 100644 --- a/regression/goto-instrument-wmm-core/ppc_rfi002_TSO_OPC/rfi002.c +++ b/regression/goto-instrument-wmm-core/ppc_rfi002_TSO_OPC/rfi002.c @@ -14,11 +14,11 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; -int __unbuffered_p0_r4 = 0; +__CPROVER_thread_local int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r5 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; -int __unbuffered_p1_r4 = 0; +__CPROVER_thread_local int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r5 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe000_PSO_ALL/safe000.c b/regression/goto-instrument-wmm-core/ppc_safe000_PSO_ALL/safe000.c index 6ffd165cbb6..d5e6804c691 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe000_PSO_ALL/safe000.c +++ b/regression/goto-instrument-wmm-core/ppc_safe000_PSO_ALL/safe000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe000_PSO_OPC/safe000.c b/regression/goto-instrument-wmm-core/ppc_safe000_PSO_OPC/safe000.c index 6ffd165cbb6..d5e6804c691 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe000_PSO_OPC/safe000.c +++ b/regression/goto-instrument-wmm-core/ppc_safe000_PSO_OPC/safe000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe000_TSO_ALL/safe000.c b/regression/goto-instrument-wmm-core/ppc_safe000_TSO_ALL/safe000.c index 6ffd165cbb6..d5e6804c691 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe000_TSO_ALL/safe000.c +++ b/regression/goto-instrument-wmm-core/ppc_safe000_TSO_ALL/safe000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe000_TSO_OPC/safe000.c b/regression/goto-instrument-wmm-core/ppc_safe000_TSO_OPC/safe000.c index 6ffd165cbb6..d5e6804c691 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe000_TSO_OPC/safe000.c +++ b/regression/goto-instrument-wmm-core/ppc_safe000_TSO_OPC/safe000.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe001_PSO_ALL/safe001.c b/regression/goto-instrument-wmm-core/ppc_safe001_PSO_ALL/safe001.c index 9cdaf193ec5..d9d01d74215 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe001_PSO_ALL/safe001.c +++ b/regression/goto-instrument-wmm-core/ppc_safe001_PSO_ALL/safe001.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe001_PSO_OPC/safe001.c b/regression/goto-instrument-wmm-core/ppc_safe001_PSO_OPC/safe001.c index 9cdaf193ec5..d9d01d74215 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe001_PSO_OPC/safe001.c +++ b/regression/goto-instrument-wmm-core/ppc_safe001_PSO_OPC/safe001.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe001_TSO_ALL/safe001.c b/regression/goto-instrument-wmm-core/ppc_safe001_TSO_ALL/safe001.c index 9cdaf193ec5..d9d01d74215 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe001_TSO_ALL/safe001.c +++ b/regression/goto-instrument-wmm-core/ppc_safe001_TSO_ALL/safe001.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe001_TSO_OPC/safe001.c b/regression/goto-instrument-wmm-core/ppc_safe001_TSO_OPC/safe001.c index 9cdaf193ec5..d9d01d74215 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe001_TSO_OPC/safe001.c +++ b/regression/goto-instrument-wmm-core/ppc_safe001_TSO_OPC/safe001.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe002_PSO_ALL/safe002.c b/regression/goto-instrument-wmm-core/ppc_safe002_PSO_ALL/safe002.c index 8ab3de2c694..50a06c3f97c 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe002_PSO_ALL/safe002.c +++ b/regression/goto-instrument-wmm-core/ppc_safe002_PSO_ALL/safe002.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe002_PSO_OPC/safe002.c b/regression/goto-instrument-wmm-core/ppc_safe002_PSO_OPC/safe002.c index 8ab3de2c694..50a06c3f97c 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe002_PSO_OPC/safe002.c +++ b/regression/goto-instrument-wmm-core/ppc_safe002_PSO_OPC/safe002.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe002_TSO_ALL/safe002.c b/regression/goto-instrument-wmm-core/ppc_safe002_TSO_ALL/safe002.c index 8ab3de2c694..50a06c3f97c 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe002_TSO_ALL/safe002.c +++ b/regression/goto-instrument-wmm-core/ppc_safe002_TSO_ALL/safe002.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe002_TSO_OPC/safe002.c b/regression/goto-instrument-wmm-core/ppc_safe002_TSO_OPC/safe002.c index 8ab3de2c694..50a06c3f97c 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe002_TSO_OPC/safe002.c +++ b/regression/goto-instrument-wmm-core/ppc_safe002_TSO_OPC/safe002.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe003_PSO_ALL/safe003.c b/regression/goto-instrument-wmm-core/ppc_safe003_PSO_ALL/safe003.c index eb0bb9220f7..7052bc572e8 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe003_PSO_ALL/safe003.c +++ b/regression/goto-instrument-wmm-core/ppc_safe003_PSO_ALL/safe003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe003_PSO_OPC/safe003.c b/regression/goto-instrument-wmm-core/ppc_safe003_PSO_OPC/safe003.c index eb0bb9220f7..7052bc572e8 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe003_PSO_OPC/safe003.c +++ b/regression/goto-instrument-wmm-core/ppc_safe003_PSO_OPC/safe003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe003_RMO_ALL/safe003.c b/regression/goto-instrument-wmm-core/ppc_safe003_RMO_ALL/safe003.c index eb0bb9220f7..7052bc572e8 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe003_RMO_ALL/safe003.c +++ b/regression/goto-instrument-wmm-core/ppc_safe003_RMO_ALL/safe003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe003_RMO_OPC/safe003.c b/regression/goto-instrument-wmm-core/ppc_safe003_RMO_OPC/safe003.c index eb0bb9220f7..7052bc572e8 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe003_RMO_OPC/safe003.c +++ b/regression/goto-instrument-wmm-core/ppc_safe003_RMO_OPC/safe003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe003_TSO_ALL/safe003.c b/regression/goto-instrument-wmm-core/ppc_safe003_TSO_ALL/safe003.c index eb0bb9220f7..7052bc572e8 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe003_TSO_ALL/safe003.c +++ b/regression/goto-instrument-wmm-core/ppc_safe003_TSO_ALL/safe003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe003_TSO_OPC/safe003.c b/regression/goto-instrument-wmm-core/ppc_safe003_TSO_OPC/safe003.c index eb0bb9220f7..7052bc572e8 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe003_TSO_OPC/safe003.c +++ b/regression/goto-instrument-wmm-core/ppc_safe003_TSO_OPC/safe003.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe004_PSO_ALL/safe004.c b/regression/goto-instrument-wmm-core/ppc_safe004_PSO_ALL/safe004.c index 6b1fa9a097a..ef405807442 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe004_PSO_ALL/safe004.c +++ b/regression/goto-instrument-wmm-core/ppc_safe004_PSO_ALL/safe004.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe004_PSO_OPC/safe004.c b/regression/goto-instrument-wmm-core/ppc_safe004_PSO_OPC/safe004.c index 6b1fa9a097a..ef405807442 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe004_PSO_OPC/safe004.c +++ b/regression/goto-instrument-wmm-core/ppc_safe004_PSO_OPC/safe004.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe004_RMO_ALL/safe004.c b/regression/goto-instrument-wmm-core/ppc_safe004_RMO_ALL/safe004.c index 6b1fa9a097a..ef405807442 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe004_RMO_ALL/safe004.c +++ b/regression/goto-instrument-wmm-core/ppc_safe004_RMO_ALL/safe004.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe004_RMO_OPC/safe004.c b/regression/goto-instrument-wmm-core/ppc_safe004_RMO_OPC/safe004.c index 6b1fa9a097a..ef405807442 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe004_RMO_OPC/safe004.c +++ b/regression/goto-instrument-wmm-core/ppc_safe004_RMO_OPC/safe004.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe004_TSO_ALL/safe004.c b/regression/goto-instrument-wmm-core/ppc_safe004_TSO_ALL/safe004.c index 6b1fa9a097a..ef405807442 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe004_TSO_ALL/safe004.c +++ b/regression/goto-instrument-wmm-core/ppc_safe004_TSO_ALL/safe004.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe004_TSO_OPC/safe004.c b/regression/goto-instrument-wmm-core/ppc_safe004_TSO_OPC/safe004.c index 6b1fa9a097a..ef405807442 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe004_TSO_OPC/safe004.c +++ b/regression/goto-instrument-wmm-core/ppc_safe004_TSO_OPC/safe004.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe005_PSO_ALL/safe005.c b/regression/goto-instrument-wmm-core/ppc_safe005_PSO_ALL/safe005.c index aadd54724c0..d145339555b 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe005_PSO_ALL/safe005.c +++ b/regression/goto-instrument-wmm-core/ppc_safe005_PSO_ALL/safe005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe005_PSO_OPC/safe005.c b/regression/goto-instrument-wmm-core/ppc_safe005_PSO_OPC/safe005.c index aadd54724c0..d145339555b 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe005_PSO_OPC/safe005.c +++ b/regression/goto-instrument-wmm-core/ppc_safe005_PSO_OPC/safe005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe005_RMO_ALL/safe005.c b/regression/goto-instrument-wmm-core/ppc_safe005_RMO_ALL/safe005.c index aadd54724c0..d145339555b 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe005_RMO_ALL/safe005.c +++ b/regression/goto-instrument-wmm-core/ppc_safe005_RMO_ALL/safe005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe005_RMO_OPC/safe005.c b/regression/goto-instrument-wmm-core/ppc_safe005_RMO_OPC/safe005.c index aadd54724c0..d145339555b 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe005_RMO_OPC/safe005.c +++ b/regression/goto-instrument-wmm-core/ppc_safe005_RMO_OPC/safe005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe005_TSO_ALL/safe005.c b/regression/goto-instrument-wmm-core/ppc_safe005_TSO_ALL/safe005.c index aadd54724c0..d145339555b 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe005_TSO_ALL/safe005.c +++ b/regression/goto-instrument-wmm-core/ppc_safe005_TSO_ALL/safe005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe005_TSO_OPC/safe005.c b/regression/goto-instrument-wmm-core/ppc_safe005_TSO_OPC/safe005.c index aadd54724c0..d145339555b 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe005_TSO_OPC/safe005.c +++ b/regression/goto-instrument-wmm-core/ppc_safe005_TSO_OPC/safe005.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe006_PSO_ALL/safe006.c b/regression/goto-instrument-wmm-core/ppc_safe006_PSO_ALL/safe006.c index b68842537a5..05c5560a89f 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe006_PSO_ALL/safe006.c +++ b/regression/goto-instrument-wmm-core/ppc_safe006_PSO_ALL/safe006.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe006_PSO_OPC/safe006.c b/regression/goto-instrument-wmm-core/ppc_safe006_PSO_OPC/safe006.c index b68842537a5..05c5560a89f 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe006_PSO_OPC/safe006.c +++ b/regression/goto-instrument-wmm-core/ppc_safe006_PSO_OPC/safe006.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe006_RMO_ALL/safe006.c b/regression/goto-instrument-wmm-core/ppc_safe006_RMO_ALL/safe006.c index b68842537a5..05c5560a89f 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe006_RMO_ALL/safe006.c +++ b/regression/goto-instrument-wmm-core/ppc_safe006_RMO_ALL/safe006.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe006_RMO_OPC/safe006.c b/regression/goto-instrument-wmm-core/ppc_safe006_RMO_OPC/safe006.c index b68842537a5..05c5560a89f 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe006_RMO_OPC/safe006.c +++ b/regression/goto-instrument-wmm-core/ppc_safe006_RMO_OPC/safe006.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe006_TSO_ALL/safe006.c b/regression/goto-instrument-wmm-core/ppc_safe006_TSO_ALL/safe006.c index b68842537a5..05c5560a89f 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe006_TSO_ALL/safe006.c +++ b/regression/goto-instrument-wmm-core/ppc_safe006_TSO_ALL/safe006.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe006_TSO_OPC/safe006.c b/regression/goto-instrument-wmm-core/ppc_safe006_TSO_OPC/safe006.c index b68842537a5..05c5560a89f 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe006_TSO_OPC/safe006.c +++ b/regression/goto-instrument-wmm-core/ppc_safe006_TSO_OPC/safe006.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe018_POWER_ALL/safe018.c b/regression/goto-instrument-wmm-core/ppc_safe018_POWER_ALL/safe018.c index d066e4cec1e..0bb799b128e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe018_POWER_ALL/safe018.c +++ b/regression/goto-instrument-wmm-core/ppc_safe018_POWER_ALL/safe018.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe018_POWER_OPC/safe018.c b/regression/goto-instrument-wmm-core/ppc_safe018_POWER_OPC/safe018.c index d066e4cec1e..0bb799b128e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe018_POWER_OPC/safe018.c +++ b/regression/goto-instrument-wmm-core/ppc_safe018_POWER_OPC/safe018.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe018_PSO_ALL/safe018.c b/regression/goto-instrument-wmm-core/ppc_safe018_PSO_ALL/safe018.c index d066e4cec1e..0bb799b128e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe018_PSO_ALL/safe018.c +++ b/regression/goto-instrument-wmm-core/ppc_safe018_PSO_ALL/safe018.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe018_PSO_OPC/safe018.c b/regression/goto-instrument-wmm-core/ppc_safe018_PSO_OPC/safe018.c index d066e4cec1e..0bb799b128e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe018_PSO_OPC/safe018.c +++ b/regression/goto-instrument-wmm-core/ppc_safe018_PSO_OPC/safe018.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe018_RMO_ALL/safe018.c b/regression/goto-instrument-wmm-core/ppc_safe018_RMO_ALL/safe018.c index d066e4cec1e..0bb799b128e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe018_RMO_ALL/safe018.c +++ b/regression/goto-instrument-wmm-core/ppc_safe018_RMO_ALL/safe018.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe018_RMO_OPC/safe018.c b/regression/goto-instrument-wmm-core/ppc_safe018_RMO_OPC/safe018.c index d066e4cec1e..0bb799b128e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe018_RMO_OPC/safe018.c +++ b/regression/goto-instrument-wmm-core/ppc_safe018_RMO_OPC/safe018.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe018_TSO_ALL/safe018.c b/regression/goto-instrument-wmm-core/ppc_safe018_TSO_ALL/safe018.c index d066e4cec1e..0bb799b128e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe018_TSO_ALL/safe018.c +++ b/regression/goto-instrument-wmm-core/ppc_safe018_TSO_ALL/safe018.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe018_TSO_OPC/safe018.c b/regression/goto-instrument-wmm-core/ppc_safe018_TSO_OPC/safe018.c index d066e4cec1e..0bb799b128e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe018_TSO_OPC/safe018.c +++ b/regression/goto-instrument-wmm-core/ppc_safe018_TSO_OPC/safe018.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe019_POWER_ALL/safe019.c b/regression/goto-instrument-wmm-core/ppc_safe019_POWER_ALL/safe019.c index ddfc36f8f2a..4a1905e8cf4 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe019_POWER_ALL/safe019.c +++ b/regression/goto-instrument-wmm-core/ppc_safe019_POWER_ALL/safe019.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe019_POWER_OPC/safe019.c b/regression/goto-instrument-wmm-core/ppc_safe019_POWER_OPC/safe019.c index ddfc36f8f2a..4a1905e8cf4 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe019_POWER_OPC/safe019.c +++ b/regression/goto-instrument-wmm-core/ppc_safe019_POWER_OPC/safe019.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe019_PSO_ALL/safe019.c b/regression/goto-instrument-wmm-core/ppc_safe019_PSO_ALL/safe019.c index ddfc36f8f2a..4a1905e8cf4 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe019_PSO_ALL/safe019.c +++ b/regression/goto-instrument-wmm-core/ppc_safe019_PSO_ALL/safe019.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe019_PSO_OPC/safe019.c b/regression/goto-instrument-wmm-core/ppc_safe019_PSO_OPC/safe019.c index ddfc36f8f2a..4a1905e8cf4 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe019_PSO_OPC/safe019.c +++ b/regression/goto-instrument-wmm-core/ppc_safe019_PSO_OPC/safe019.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe019_RMO_ALL/safe019.c b/regression/goto-instrument-wmm-core/ppc_safe019_RMO_ALL/safe019.c index ddfc36f8f2a..4a1905e8cf4 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe019_RMO_ALL/safe019.c +++ b/regression/goto-instrument-wmm-core/ppc_safe019_RMO_ALL/safe019.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe019_RMO_OPC/safe019.c b/regression/goto-instrument-wmm-core/ppc_safe019_RMO_OPC/safe019.c index ddfc36f8f2a..4a1905e8cf4 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe019_RMO_OPC/safe019.c +++ b/regression/goto-instrument-wmm-core/ppc_safe019_RMO_OPC/safe019.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe019_TSO_ALL/safe019.c b/regression/goto-instrument-wmm-core/ppc_safe019_TSO_ALL/safe019.c index ddfc36f8f2a..4a1905e8cf4 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe019_TSO_ALL/safe019.c +++ b/regression/goto-instrument-wmm-core/ppc_safe019_TSO_ALL/safe019.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe019_TSO_OPC/safe019.c b/regression/goto-instrument-wmm-core/ppc_safe019_TSO_OPC/safe019.c index ddfc36f8f2a..4a1905e8cf4 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe019_TSO_OPC/safe019.c +++ b/regression/goto-instrument-wmm-core/ppc_safe019_TSO_OPC/safe019.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe043_POWER_ALL/safe043.c b/regression/goto-instrument-wmm-core/ppc_safe043_POWER_ALL/safe043.c index 95db9064ecb..98afccd15c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe043_POWER_ALL/safe043.c +++ b/regression/goto-instrument-wmm-core/ppc_safe043_POWER_ALL/safe043.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe043_POWER_OPC/safe043.c b/regression/goto-instrument-wmm-core/ppc_safe043_POWER_OPC/safe043.c index 95db9064ecb..98afccd15c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe043_POWER_OPC/safe043.c +++ b/regression/goto-instrument-wmm-core/ppc_safe043_POWER_OPC/safe043.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe043_PSO_ALL/safe043.c b/regression/goto-instrument-wmm-core/ppc_safe043_PSO_ALL/safe043.c index 95db9064ecb..98afccd15c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe043_PSO_ALL/safe043.c +++ b/regression/goto-instrument-wmm-core/ppc_safe043_PSO_ALL/safe043.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe043_PSO_OPC/safe043.c b/regression/goto-instrument-wmm-core/ppc_safe043_PSO_OPC/safe043.c index 95db9064ecb..98afccd15c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe043_PSO_OPC/safe043.c +++ b/regression/goto-instrument-wmm-core/ppc_safe043_PSO_OPC/safe043.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe043_RMO_ALL/safe043.c b/regression/goto-instrument-wmm-core/ppc_safe043_RMO_ALL/safe043.c index 95db9064ecb..98afccd15c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe043_RMO_ALL/safe043.c +++ b/regression/goto-instrument-wmm-core/ppc_safe043_RMO_ALL/safe043.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe043_RMO_OPC/safe043.c b/regression/goto-instrument-wmm-core/ppc_safe043_RMO_OPC/safe043.c index 95db9064ecb..98afccd15c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe043_RMO_OPC/safe043.c +++ b/regression/goto-instrument-wmm-core/ppc_safe043_RMO_OPC/safe043.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe043_TSO_ALL/safe043.c b/regression/goto-instrument-wmm-core/ppc_safe043_TSO_ALL/safe043.c index 95db9064ecb..98afccd15c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe043_TSO_ALL/safe043.c +++ b/regression/goto-instrument-wmm-core/ppc_safe043_TSO_ALL/safe043.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe043_TSO_OPC/safe043.c b/regression/goto-instrument-wmm-core/ppc_safe043_TSO_OPC/safe043.c index 95db9064ecb..98afccd15c2 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe043_TSO_OPC/safe043.c +++ b/regression/goto-instrument-wmm-core/ppc_safe043_TSO_OPC/safe043.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe044_POWER_ALL/safe044.c b/regression/goto-instrument-wmm-core/ppc_safe044_POWER_ALL/safe044.c index b9a0e3761c7..41b16f52947 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe044_POWER_ALL/safe044.c +++ b/regression/goto-instrument-wmm-core/ppc_safe044_POWER_ALL/safe044.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe044_POWER_OPC/safe044.c b/regression/goto-instrument-wmm-core/ppc_safe044_POWER_OPC/safe044.c index b9a0e3761c7..41b16f52947 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe044_POWER_OPC/safe044.c +++ b/regression/goto-instrument-wmm-core/ppc_safe044_POWER_OPC/safe044.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe044_PSO_ALL/safe044.c b/regression/goto-instrument-wmm-core/ppc_safe044_PSO_ALL/safe044.c index b9a0e3761c7..41b16f52947 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe044_PSO_ALL/safe044.c +++ b/regression/goto-instrument-wmm-core/ppc_safe044_PSO_ALL/safe044.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe044_PSO_OPC/safe044.c b/regression/goto-instrument-wmm-core/ppc_safe044_PSO_OPC/safe044.c index b9a0e3761c7..41b16f52947 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe044_PSO_OPC/safe044.c +++ b/regression/goto-instrument-wmm-core/ppc_safe044_PSO_OPC/safe044.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe044_RMO_ALL/safe044.c b/regression/goto-instrument-wmm-core/ppc_safe044_RMO_ALL/safe044.c index b9a0e3761c7..41b16f52947 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe044_RMO_ALL/safe044.c +++ b/regression/goto-instrument-wmm-core/ppc_safe044_RMO_ALL/safe044.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe044_RMO_OPC/safe044.c b/regression/goto-instrument-wmm-core/ppc_safe044_RMO_OPC/safe044.c index b9a0e3761c7..41b16f52947 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe044_RMO_OPC/safe044.c +++ b/regression/goto-instrument-wmm-core/ppc_safe044_RMO_OPC/safe044.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe044_TSO_ALL/safe044.c b/regression/goto-instrument-wmm-core/ppc_safe044_TSO_ALL/safe044.c index b9a0e3761c7..41b16f52947 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe044_TSO_ALL/safe044.c +++ b/regression/goto-instrument-wmm-core/ppc_safe044_TSO_ALL/safe044.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe044_TSO_OPC/safe044.c b/regression/goto-instrument-wmm-core/ppc_safe044_TSO_OPC/safe044.c index b9a0e3761c7..41b16f52947 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe044_TSO_OPC/safe044.c +++ b/regression/goto-instrument-wmm-core/ppc_safe044_TSO_OPC/safe044.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe063_PSO_ALL/safe063.c b/regression/goto-instrument-wmm-core/ppc_safe063_PSO_ALL/safe063.c index 80d8654608e..5452f96933a 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe063_PSO_ALL/safe063.c +++ b/regression/goto-instrument-wmm-core/ppc_safe063_PSO_ALL/safe063.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe063_PSO_OPC/safe063.c b/regression/goto-instrument-wmm-core/ppc_safe063_PSO_OPC/safe063.c index 80d8654608e..5452f96933a 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe063_PSO_OPC/safe063.c +++ b/regression/goto-instrument-wmm-core/ppc_safe063_PSO_OPC/safe063.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe063_TSO_ALL/safe063.c b/regression/goto-instrument-wmm-core/ppc_safe063_TSO_ALL/safe063.c index 80d8654608e..5452f96933a 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe063_TSO_ALL/safe063.c +++ b/regression/goto-instrument-wmm-core/ppc_safe063_TSO_ALL/safe063.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe063_TSO_OPC/safe063.c b/regression/goto-instrument-wmm-core/ppc_safe063_TSO_OPC/safe063.c index 80d8654608e..5452f96933a 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe063_TSO_OPC/safe063.c +++ b/regression/goto-instrument-wmm-core/ppc_safe063_TSO_OPC/safe063.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe064_POWER_ALL/safe064.c b/regression/goto-instrument-wmm-core/ppc_safe064_POWER_ALL/safe064.c index d83f442f7ef..12c9c123bc1 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe064_POWER_ALL/safe064.c +++ b/regression/goto-instrument-wmm-core/ppc_safe064_POWER_ALL/safe064.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe064_POWER_OPC/safe064.c b/regression/goto-instrument-wmm-core/ppc_safe064_POWER_OPC/safe064.c index d83f442f7ef..12c9c123bc1 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe064_POWER_OPC/safe064.c +++ b/regression/goto-instrument-wmm-core/ppc_safe064_POWER_OPC/safe064.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe064_PSO_ALL/safe064.c b/regression/goto-instrument-wmm-core/ppc_safe064_PSO_ALL/safe064.c index d83f442f7ef..12c9c123bc1 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe064_PSO_ALL/safe064.c +++ b/regression/goto-instrument-wmm-core/ppc_safe064_PSO_ALL/safe064.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe064_PSO_OPC/safe064.c b/regression/goto-instrument-wmm-core/ppc_safe064_PSO_OPC/safe064.c index d83f442f7ef..12c9c123bc1 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe064_PSO_OPC/safe064.c +++ b/regression/goto-instrument-wmm-core/ppc_safe064_PSO_OPC/safe064.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe064_RMO_ALL/safe064.c b/regression/goto-instrument-wmm-core/ppc_safe064_RMO_ALL/safe064.c index d83f442f7ef..12c9c123bc1 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe064_RMO_ALL/safe064.c +++ b/regression/goto-instrument-wmm-core/ppc_safe064_RMO_ALL/safe064.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe064_RMO_OPC/safe064.c b/regression/goto-instrument-wmm-core/ppc_safe064_RMO_OPC/safe064.c index d83f442f7ef..12c9c123bc1 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe064_RMO_OPC/safe064.c +++ b/regression/goto-instrument-wmm-core/ppc_safe064_RMO_OPC/safe064.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe064_TSO_ALL/safe064.c b/regression/goto-instrument-wmm-core/ppc_safe064_TSO_ALL/safe064.c index d83f442f7ef..12c9c123bc1 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe064_TSO_ALL/safe064.c +++ b/regression/goto-instrument-wmm-core/ppc_safe064_TSO_ALL/safe064.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe064_TSO_OPC/safe064.c b/regression/goto-instrument-wmm-core/ppc_safe064_TSO_OPC/safe064.c index d83f442f7ef..12c9c123bc1 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe064_TSO_OPC/safe064.c +++ b/regression/goto-instrument-wmm-core/ppc_safe064_TSO_OPC/safe064.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe073_PSO_ALL/safe073.c b/regression/goto-instrument-wmm-core/ppc_safe073_PSO_ALL/safe073.c index 96678d4f82c..00592fb341e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe073_PSO_ALL/safe073.c +++ b/regression/goto-instrument-wmm-core/ppc_safe073_PSO_ALL/safe073.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe073_PSO_OPC/safe073.c b/regression/goto-instrument-wmm-core/ppc_safe073_PSO_OPC/safe073.c index 96678d4f82c..00592fb341e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe073_PSO_OPC/safe073.c +++ b/regression/goto-instrument-wmm-core/ppc_safe073_PSO_OPC/safe073.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe073_RMO_ALL/safe073.c b/regression/goto-instrument-wmm-core/ppc_safe073_RMO_ALL/safe073.c index 96678d4f82c..00592fb341e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe073_RMO_ALL/safe073.c +++ b/regression/goto-instrument-wmm-core/ppc_safe073_RMO_ALL/safe073.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe073_RMO_OPC/safe073.c b/regression/goto-instrument-wmm-core/ppc_safe073_RMO_OPC/safe073.c index 96678d4f82c..00592fb341e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe073_RMO_OPC/safe073.c +++ b/regression/goto-instrument-wmm-core/ppc_safe073_RMO_OPC/safe073.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe073_TSO_ALL/safe073.c b/regression/goto-instrument-wmm-core/ppc_safe073_TSO_ALL/safe073.c index 96678d4f82c..00592fb341e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe073_TSO_ALL/safe073.c +++ b/regression/goto-instrument-wmm-core/ppc_safe073_TSO_ALL/safe073.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe073_TSO_OPC/safe073.c b/regression/goto-instrument-wmm-core/ppc_safe073_TSO_OPC/safe073.c index 96678d4f82c..00592fb341e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe073_TSO_OPC/safe073.c +++ b/regression/goto-instrument-wmm-core/ppc_safe073_TSO_OPC/safe073.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe074_PSO_ALL/safe074.c b/regression/goto-instrument-wmm-core/ppc_safe074_PSO_ALL/safe074.c index 6cc09a1c11e..c90fd968e59 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe074_PSO_ALL/safe074.c +++ b/regression/goto-instrument-wmm-core/ppc_safe074_PSO_ALL/safe074.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe074_PSO_OPC/safe074.c b/regression/goto-instrument-wmm-core/ppc_safe074_PSO_OPC/safe074.c index 6cc09a1c11e..c90fd968e59 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe074_PSO_OPC/safe074.c +++ b/regression/goto-instrument-wmm-core/ppc_safe074_PSO_OPC/safe074.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe074_RMO_ALL/safe074.c b/regression/goto-instrument-wmm-core/ppc_safe074_RMO_ALL/safe074.c index 6cc09a1c11e..c90fd968e59 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe074_RMO_ALL/safe074.c +++ b/regression/goto-instrument-wmm-core/ppc_safe074_RMO_ALL/safe074.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe074_RMO_OPC/safe074.c b/regression/goto-instrument-wmm-core/ppc_safe074_RMO_OPC/safe074.c index 6cc09a1c11e..c90fd968e59 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe074_RMO_OPC/safe074.c +++ b/regression/goto-instrument-wmm-core/ppc_safe074_RMO_OPC/safe074.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe074_TSO_ALL/safe074.c b/regression/goto-instrument-wmm-core/ppc_safe074_TSO_ALL/safe074.c index 6cc09a1c11e..c90fd968e59 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe074_TSO_ALL/safe074.c +++ b/regression/goto-instrument-wmm-core/ppc_safe074_TSO_ALL/safe074.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe074_TSO_OPC/safe074.c b/regression/goto-instrument-wmm-core/ppc_safe074_TSO_OPC/safe074.c index 6cc09a1c11e..c90fd968e59 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe074_TSO_OPC/safe074.c +++ b/regression/goto-instrument-wmm-core/ppc_safe074_TSO_OPC/safe074.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe075_POWER_ALL/safe075.c b/regression/goto-instrument-wmm-core/ppc_safe075_POWER_ALL/safe075.c index b2f1f0b1120..e13807cd5be 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe075_POWER_ALL/safe075.c +++ b/regression/goto-instrument-wmm-core/ppc_safe075_POWER_ALL/safe075.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe075_POWER_OPC/safe075.c b/regression/goto-instrument-wmm-core/ppc_safe075_POWER_OPC/safe075.c index b2f1f0b1120..e13807cd5be 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe075_POWER_OPC/safe075.c +++ b/regression/goto-instrument-wmm-core/ppc_safe075_POWER_OPC/safe075.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe075_PSO_ALL/safe075.c b/regression/goto-instrument-wmm-core/ppc_safe075_PSO_ALL/safe075.c index b2f1f0b1120..e13807cd5be 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe075_PSO_ALL/safe075.c +++ b/regression/goto-instrument-wmm-core/ppc_safe075_PSO_ALL/safe075.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe075_PSO_OPC/safe075.c b/regression/goto-instrument-wmm-core/ppc_safe075_PSO_OPC/safe075.c index b2f1f0b1120..e13807cd5be 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe075_PSO_OPC/safe075.c +++ b/regression/goto-instrument-wmm-core/ppc_safe075_PSO_OPC/safe075.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe075_RMO_ALL/safe075.c b/regression/goto-instrument-wmm-core/ppc_safe075_RMO_ALL/safe075.c index b2f1f0b1120..e13807cd5be 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe075_RMO_ALL/safe075.c +++ b/regression/goto-instrument-wmm-core/ppc_safe075_RMO_ALL/safe075.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe075_RMO_OPC/safe075.c b/regression/goto-instrument-wmm-core/ppc_safe075_RMO_OPC/safe075.c index b2f1f0b1120..e13807cd5be 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe075_RMO_OPC/safe075.c +++ b/regression/goto-instrument-wmm-core/ppc_safe075_RMO_OPC/safe075.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe075_TSO_ALL/safe075.c b/regression/goto-instrument-wmm-core/ppc_safe075_TSO_ALL/safe075.c index b2f1f0b1120..e13807cd5be 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe075_TSO_ALL/safe075.c +++ b/regression/goto-instrument-wmm-core/ppc_safe075_TSO_ALL/safe075.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe075_TSO_OPC/safe075.c b/regression/goto-instrument-wmm-core/ppc_safe075_TSO_OPC/safe075.c index b2f1f0b1120..e13807cd5be 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe075_TSO_OPC/safe075.c +++ b/regression/goto-instrument-wmm-core/ppc_safe075_TSO_OPC/safe075.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe076_POWER_ALL/safe076.c b/regression/goto-instrument-wmm-core/ppc_safe076_POWER_ALL/safe076.c index 8802bdab124..c12ab3e0aa3 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe076_POWER_ALL/safe076.c +++ b/regression/goto-instrument-wmm-core/ppc_safe076_POWER_ALL/safe076.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe076_POWER_OPC/safe076.c b/regression/goto-instrument-wmm-core/ppc_safe076_POWER_OPC/safe076.c index 8802bdab124..c12ab3e0aa3 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe076_POWER_OPC/safe076.c +++ b/regression/goto-instrument-wmm-core/ppc_safe076_POWER_OPC/safe076.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe076_PSO_ALL/safe076.c b/regression/goto-instrument-wmm-core/ppc_safe076_PSO_ALL/safe076.c index 8802bdab124..c12ab3e0aa3 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe076_PSO_ALL/safe076.c +++ b/regression/goto-instrument-wmm-core/ppc_safe076_PSO_ALL/safe076.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe076_PSO_OPC/safe076.c b/regression/goto-instrument-wmm-core/ppc_safe076_PSO_OPC/safe076.c index 8802bdab124..c12ab3e0aa3 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe076_PSO_OPC/safe076.c +++ b/regression/goto-instrument-wmm-core/ppc_safe076_PSO_OPC/safe076.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe076_RMO_ALL/safe076.c b/regression/goto-instrument-wmm-core/ppc_safe076_RMO_ALL/safe076.c index 8802bdab124..c12ab3e0aa3 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe076_RMO_ALL/safe076.c +++ b/regression/goto-instrument-wmm-core/ppc_safe076_RMO_ALL/safe076.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe076_RMO_OPC/safe076.c b/regression/goto-instrument-wmm-core/ppc_safe076_RMO_OPC/safe076.c index 8802bdab124..c12ab3e0aa3 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe076_RMO_OPC/safe076.c +++ b/regression/goto-instrument-wmm-core/ppc_safe076_RMO_OPC/safe076.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe076_TSO_ALL/safe076.c b/regression/goto-instrument-wmm-core/ppc_safe076_TSO_ALL/safe076.c index 8802bdab124..c12ab3e0aa3 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe076_TSO_ALL/safe076.c +++ b/regression/goto-instrument-wmm-core/ppc_safe076_TSO_ALL/safe076.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe076_TSO_OPC/safe076.c b/regression/goto-instrument-wmm-core/ppc_safe076_TSO_OPC/safe076.c index 8802bdab124..c12ab3e0aa3 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe076_TSO_OPC/safe076.c +++ b/regression/goto-instrument-wmm-core/ppc_safe076_TSO_OPC/safe076.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe077_PSO_ALL/safe077.c b/regression/goto-instrument-wmm-core/ppc_safe077_PSO_ALL/safe077.c index cd10ab3af45..004b0a95efb 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe077_PSO_ALL/safe077.c +++ b/regression/goto-instrument-wmm-core/ppc_safe077_PSO_ALL/safe077.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe077_PSO_OPC/safe077.c b/regression/goto-instrument-wmm-core/ppc_safe077_PSO_OPC/safe077.c index cd10ab3af45..004b0a95efb 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe077_PSO_OPC/safe077.c +++ b/regression/goto-instrument-wmm-core/ppc_safe077_PSO_OPC/safe077.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe077_RMO_ALL/safe077.c b/regression/goto-instrument-wmm-core/ppc_safe077_RMO_ALL/safe077.c index cd10ab3af45..004b0a95efb 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe077_RMO_ALL/safe077.c +++ b/regression/goto-instrument-wmm-core/ppc_safe077_RMO_ALL/safe077.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe077_RMO_OPC/safe077.c b/regression/goto-instrument-wmm-core/ppc_safe077_RMO_OPC/safe077.c index cd10ab3af45..004b0a95efb 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe077_RMO_OPC/safe077.c +++ b/regression/goto-instrument-wmm-core/ppc_safe077_RMO_OPC/safe077.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe077_TSO_ALL/safe077.c b/regression/goto-instrument-wmm-core/ppc_safe077_TSO_ALL/safe077.c index cd10ab3af45..004b0a95efb 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe077_TSO_ALL/safe077.c +++ b/regression/goto-instrument-wmm-core/ppc_safe077_TSO_ALL/safe077.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe077_TSO_OPC/safe077.c b/regression/goto-instrument-wmm-core/ppc_safe077_TSO_OPC/safe077.c index cd10ab3af45..004b0a95efb 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe077_TSO_OPC/safe077.c +++ b/regression/goto-instrument-wmm-core/ppc_safe077_TSO_OPC/safe077.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe078_POWER_ALL/safe078.c b/regression/goto-instrument-wmm-core/ppc_safe078_POWER_ALL/safe078.c index 79ef7a60bb7..eaee81335ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe078_POWER_ALL/safe078.c +++ b/regression/goto-instrument-wmm-core/ppc_safe078_POWER_ALL/safe078.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe078_POWER_OPC/safe078.c b/regression/goto-instrument-wmm-core/ppc_safe078_POWER_OPC/safe078.c index 79ef7a60bb7..eaee81335ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe078_POWER_OPC/safe078.c +++ b/regression/goto-instrument-wmm-core/ppc_safe078_POWER_OPC/safe078.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe078_PSO_ALL/safe078.c b/regression/goto-instrument-wmm-core/ppc_safe078_PSO_ALL/safe078.c index 79ef7a60bb7..eaee81335ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe078_PSO_ALL/safe078.c +++ b/regression/goto-instrument-wmm-core/ppc_safe078_PSO_ALL/safe078.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe078_PSO_OPC/safe078.c b/regression/goto-instrument-wmm-core/ppc_safe078_PSO_OPC/safe078.c index 79ef7a60bb7..eaee81335ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe078_PSO_OPC/safe078.c +++ b/regression/goto-instrument-wmm-core/ppc_safe078_PSO_OPC/safe078.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe078_RMO_ALL/safe078.c b/regression/goto-instrument-wmm-core/ppc_safe078_RMO_ALL/safe078.c index 79ef7a60bb7..eaee81335ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe078_RMO_ALL/safe078.c +++ b/regression/goto-instrument-wmm-core/ppc_safe078_RMO_ALL/safe078.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe078_RMO_OPC/safe078.c b/regression/goto-instrument-wmm-core/ppc_safe078_RMO_OPC/safe078.c index 79ef7a60bb7..eaee81335ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe078_RMO_OPC/safe078.c +++ b/regression/goto-instrument-wmm-core/ppc_safe078_RMO_OPC/safe078.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe078_TSO_ALL/safe078.c b/regression/goto-instrument-wmm-core/ppc_safe078_TSO_ALL/safe078.c index 79ef7a60bb7..eaee81335ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe078_TSO_ALL/safe078.c +++ b/regression/goto-instrument-wmm-core/ppc_safe078_TSO_ALL/safe078.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe078_TSO_OPC/safe078.c b/regression/goto-instrument-wmm-core/ppc_safe078_TSO_OPC/safe078.c index 79ef7a60bb7..eaee81335ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe078_TSO_OPC/safe078.c +++ b/regression/goto-instrument-wmm-core/ppc_safe078_TSO_OPC/safe078.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe079_POWER_ALL/safe079.c b/regression/goto-instrument-wmm-core/ppc_safe079_POWER_ALL/safe079.c index 0e9462e90eb..77280137821 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe079_POWER_ALL/safe079.c +++ b/regression/goto-instrument-wmm-core/ppc_safe079_POWER_ALL/safe079.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe079_POWER_OPC/safe079.c b/regression/goto-instrument-wmm-core/ppc_safe079_POWER_OPC/safe079.c index 0e9462e90eb..77280137821 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe079_POWER_OPC/safe079.c +++ b/regression/goto-instrument-wmm-core/ppc_safe079_POWER_OPC/safe079.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe079_PSO_ALL/safe079.c b/regression/goto-instrument-wmm-core/ppc_safe079_PSO_ALL/safe079.c index 0e9462e90eb..77280137821 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe079_PSO_ALL/safe079.c +++ b/regression/goto-instrument-wmm-core/ppc_safe079_PSO_ALL/safe079.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe079_PSO_OPC/safe079.c b/regression/goto-instrument-wmm-core/ppc_safe079_PSO_OPC/safe079.c index 0e9462e90eb..77280137821 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe079_PSO_OPC/safe079.c +++ b/regression/goto-instrument-wmm-core/ppc_safe079_PSO_OPC/safe079.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe079_RMO_ALL/safe079.c b/regression/goto-instrument-wmm-core/ppc_safe079_RMO_ALL/safe079.c index 0e9462e90eb..77280137821 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe079_RMO_ALL/safe079.c +++ b/regression/goto-instrument-wmm-core/ppc_safe079_RMO_ALL/safe079.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe079_RMO_OPC/safe079.c b/regression/goto-instrument-wmm-core/ppc_safe079_RMO_OPC/safe079.c index 0e9462e90eb..77280137821 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe079_RMO_OPC/safe079.c +++ b/regression/goto-instrument-wmm-core/ppc_safe079_RMO_OPC/safe079.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe079_TSO_ALL/safe079.c b/regression/goto-instrument-wmm-core/ppc_safe079_TSO_ALL/safe079.c index 0e9462e90eb..77280137821 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe079_TSO_ALL/safe079.c +++ b/regression/goto-instrument-wmm-core/ppc_safe079_TSO_ALL/safe079.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe079_TSO_OPC/safe079.c b/regression/goto-instrument-wmm-core/ppc_safe079_TSO_OPC/safe079.c index 0e9462e90eb..77280137821 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe079_TSO_OPC/safe079.c +++ b/regression/goto-instrument-wmm-core/ppc_safe079_TSO_OPC/safe079.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe080_POWER_ALL/safe080.c b/regression/goto-instrument-wmm-core/ppc_safe080_POWER_ALL/safe080.c index 594450d273c..43a43333e2e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe080_POWER_ALL/safe080.c +++ b/regression/goto-instrument-wmm-core/ppc_safe080_POWER_ALL/safe080.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe080_POWER_OPC/safe080.c b/regression/goto-instrument-wmm-core/ppc_safe080_POWER_OPC/safe080.c index 594450d273c..43a43333e2e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe080_POWER_OPC/safe080.c +++ b/regression/goto-instrument-wmm-core/ppc_safe080_POWER_OPC/safe080.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe080_PSO_ALL/safe080.c b/regression/goto-instrument-wmm-core/ppc_safe080_PSO_ALL/safe080.c index 594450d273c..43a43333e2e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe080_PSO_ALL/safe080.c +++ b/regression/goto-instrument-wmm-core/ppc_safe080_PSO_ALL/safe080.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe080_PSO_OPC/safe080.c b/regression/goto-instrument-wmm-core/ppc_safe080_PSO_OPC/safe080.c index 594450d273c..43a43333e2e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe080_PSO_OPC/safe080.c +++ b/regression/goto-instrument-wmm-core/ppc_safe080_PSO_OPC/safe080.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe080_RMO_ALL/safe080.c b/regression/goto-instrument-wmm-core/ppc_safe080_RMO_ALL/safe080.c index 594450d273c..43a43333e2e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe080_RMO_ALL/safe080.c +++ b/regression/goto-instrument-wmm-core/ppc_safe080_RMO_ALL/safe080.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe080_RMO_OPC/safe080.c b/regression/goto-instrument-wmm-core/ppc_safe080_RMO_OPC/safe080.c index 594450d273c..43a43333e2e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe080_RMO_OPC/safe080.c +++ b/regression/goto-instrument-wmm-core/ppc_safe080_RMO_OPC/safe080.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe080_TSO_ALL/safe080.c b/regression/goto-instrument-wmm-core/ppc_safe080_TSO_ALL/safe080.c index 594450d273c..43a43333e2e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe080_TSO_ALL/safe080.c +++ b/regression/goto-instrument-wmm-core/ppc_safe080_TSO_ALL/safe080.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe080_TSO_OPC/safe080.c b/regression/goto-instrument-wmm-core/ppc_safe080_TSO_OPC/safe080.c index 594450d273c..43a43333e2e 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe080_TSO_OPC/safe080.c +++ b/regression/goto-instrument-wmm-core/ppc_safe080_TSO_OPC/safe080.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe081_POWER_ALL/safe081.c b/regression/goto-instrument-wmm-core/ppc_safe081_POWER_ALL/safe081.c index a4e10dfd871..a1f62bd63dc 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe081_POWER_ALL/safe081.c +++ b/regression/goto-instrument-wmm-core/ppc_safe081_POWER_ALL/safe081.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe081_POWER_OPC/safe081.c b/regression/goto-instrument-wmm-core/ppc_safe081_POWER_OPC/safe081.c index a4e10dfd871..a1f62bd63dc 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe081_POWER_OPC/safe081.c +++ b/regression/goto-instrument-wmm-core/ppc_safe081_POWER_OPC/safe081.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe081_PSO_ALL/safe081.c b/regression/goto-instrument-wmm-core/ppc_safe081_PSO_ALL/safe081.c index a4e10dfd871..a1f62bd63dc 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe081_PSO_ALL/safe081.c +++ b/regression/goto-instrument-wmm-core/ppc_safe081_PSO_ALL/safe081.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe081_PSO_OPC/safe081.c b/regression/goto-instrument-wmm-core/ppc_safe081_PSO_OPC/safe081.c index a4e10dfd871..a1f62bd63dc 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe081_PSO_OPC/safe081.c +++ b/regression/goto-instrument-wmm-core/ppc_safe081_PSO_OPC/safe081.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe081_RMO_ALL/safe081.c b/regression/goto-instrument-wmm-core/ppc_safe081_RMO_ALL/safe081.c index a4e10dfd871..a1f62bd63dc 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe081_RMO_ALL/safe081.c +++ b/regression/goto-instrument-wmm-core/ppc_safe081_RMO_ALL/safe081.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe081_RMO_OPC/safe081.c b/regression/goto-instrument-wmm-core/ppc_safe081_RMO_OPC/safe081.c index a4e10dfd871..a1f62bd63dc 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe081_RMO_OPC/safe081.c +++ b/regression/goto-instrument-wmm-core/ppc_safe081_RMO_OPC/safe081.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe081_TSO_ALL/safe081.c b/regression/goto-instrument-wmm-core/ppc_safe081_TSO_ALL/safe081.c index a4e10dfd871..a1f62bd63dc 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe081_TSO_ALL/safe081.c +++ b/regression/goto-instrument-wmm-core/ppc_safe081_TSO_ALL/safe081.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe081_TSO_OPC/safe081.c b/regression/goto-instrument-wmm-core/ppc_safe081_TSO_OPC/safe081.c index a4e10dfd871..a1f62bd63dc 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe081_TSO_OPC/safe081.c +++ b/regression/goto-instrument-wmm-core/ppc_safe081_TSO_OPC/safe081.c @@ -17,7 +17,7 @@ int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; int __unbuffered_p1_r3 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe108_PSO_ALL/safe108.c b/regression/goto-instrument-wmm-core/ppc_safe108_PSO_ALL/safe108.c index f7245072972..d74578e5462 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe108_PSO_ALL/safe108.c +++ b/regression/goto-instrument-wmm-core/ppc_safe108_PSO_ALL/safe108.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe108_PSO_OPC/safe108.c b/regression/goto-instrument-wmm-core/ppc_safe108_PSO_OPC/safe108.c index f7245072972..d74578e5462 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe108_PSO_OPC/safe108.c +++ b/regression/goto-instrument-wmm-core/ppc_safe108_PSO_OPC/safe108.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe108_TSO_ALL/safe108.c b/regression/goto-instrument-wmm-core/ppc_safe108_TSO_ALL/safe108.c index f7245072972..d74578e5462 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe108_TSO_ALL/safe108.c +++ b/regression/goto-instrument-wmm-core/ppc_safe108_TSO_ALL/safe108.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe108_TSO_OPC/safe108.c b/regression/goto-instrument-wmm-core/ppc_safe108_TSO_OPC/safe108.c index f7245072972..d74578e5462 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe108_TSO_OPC/safe108.c +++ b/regression/goto-instrument-wmm-core/ppc_safe108_TSO_OPC/safe108.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe112_PSO_ALL/safe112.c b/regression/goto-instrument-wmm-core/ppc_safe112_PSO_ALL/safe112.c index 4da53a66a37..eb3d4d31831 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe112_PSO_ALL/safe112.c +++ b/regression/goto-instrument-wmm-core/ppc_safe112_PSO_ALL/safe112.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe112_PSO_OPC/safe112.c b/regression/goto-instrument-wmm-core/ppc_safe112_PSO_OPC/safe112.c index 4da53a66a37..eb3d4d31831 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe112_PSO_OPC/safe112.c +++ b/regression/goto-instrument-wmm-core/ppc_safe112_PSO_OPC/safe112.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe112_RMO_ALL/safe112.c b/regression/goto-instrument-wmm-core/ppc_safe112_RMO_ALL/safe112.c index 4da53a66a37..eb3d4d31831 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe112_RMO_ALL/safe112.c +++ b/regression/goto-instrument-wmm-core/ppc_safe112_RMO_ALL/safe112.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe112_RMO_OPC/safe112.c b/regression/goto-instrument-wmm-core/ppc_safe112_RMO_OPC/safe112.c index 4da53a66a37..eb3d4d31831 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe112_RMO_OPC/safe112.c +++ b/regression/goto-instrument-wmm-core/ppc_safe112_RMO_OPC/safe112.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe112_TSO_ALL/safe112.c b/regression/goto-instrument-wmm-core/ppc_safe112_TSO_ALL/safe112.c index 4da53a66a37..eb3d4d31831 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe112_TSO_ALL/safe112.c +++ b/regression/goto-instrument-wmm-core/ppc_safe112_TSO_ALL/safe112.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe112_TSO_OPC/safe112.c b/regression/goto-instrument-wmm-core/ppc_safe112_TSO_OPC/safe112.c index 4da53a66a37..eb3d4d31831 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe112_TSO_OPC/safe112.c +++ b/regression/goto-instrument-wmm-core/ppc_safe112_TSO_OPC/safe112.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe113_PSO_ALL/safe113.c b/regression/goto-instrument-wmm-core/ppc_safe113_PSO_ALL/safe113.c index 93704cc107e..8028900e048 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe113_PSO_ALL/safe113.c +++ b/regression/goto-instrument-wmm-core/ppc_safe113_PSO_ALL/safe113.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe113_PSO_OPC/safe113.c b/regression/goto-instrument-wmm-core/ppc_safe113_PSO_OPC/safe113.c index 93704cc107e..8028900e048 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe113_PSO_OPC/safe113.c +++ b/regression/goto-instrument-wmm-core/ppc_safe113_PSO_OPC/safe113.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe113_TSO_ALL/safe113.c b/regression/goto-instrument-wmm-core/ppc_safe113_TSO_ALL/safe113.c index 93704cc107e..8028900e048 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe113_TSO_ALL/safe113.c +++ b/regression/goto-instrument-wmm-core/ppc_safe113_TSO_ALL/safe113.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe113_TSO_OPC/safe113.c b/regression/goto-instrument-wmm-core/ppc_safe113_TSO_OPC/safe113.c index 93704cc107e..8028900e048 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe113_TSO_OPC/safe113.c +++ b/regression/goto-instrument-wmm-core/ppc_safe113_TSO_OPC/safe113.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe114_POWER_ALL/safe114.c b/regression/goto-instrument-wmm-core/ppc_safe114_POWER_ALL/safe114.c index c7c116acd75..9a9e191f6fa 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe114_POWER_ALL/safe114.c +++ b/regression/goto-instrument-wmm-core/ppc_safe114_POWER_ALL/safe114.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe114_POWER_OPC/safe114.c b/regression/goto-instrument-wmm-core/ppc_safe114_POWER_OPC/safe114.c index c7c116acd75..9a9e191f6fa 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe114_POWER_OPC/safe114.c +++ b/regression/goto-instrument-wmm-core/ppc_safe114_POWER_OPC/safe114.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe114_PSO_ALL/safe114.c b/regression/goto-instrument-wmm-core/ppc_safe114_PSO_ALL/safe114.c index c7c116acd75..9a9e191f6fa 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe114_PSO_ALL/safe114.c +++ b/regression/goto-instrument-wmm-core/ppc_safe114_PSO_ALL/safe114.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe114_PSO_OPC/safe114.c b/regression/goto-instrument-wmm-core/ppc_safe114_PSO_OPC/safe114.c index c7c116acd75..9a9e191f6fa 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe114_PSO_OPC/safe114.c +++ b/regression/goto-instrument-wmm-core/ppc_safe114_PSO_OPC/safe114.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe114_RMO_ALL/safe114.c b/regression/goto-instrument-wmm-core/ppc_safe114_RMO_ALL/safe114.c index c7c116acd75..9a9e191f6fa 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe114_RMO_ALL/safe114.c +++ b/regression/goto-instrument-wmm-core/ppc_safe114_RMO_ALL/safe114.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe114_RMO_OPC/safe114.c b/regression/goto-instrument-wmm-core/ppc_safe114_RMO_OPC/safe114.c index c7c116acd75..9a9e191f6fa 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe114_RMO_OPC/safe114.c +++ b/regression/goto-instrument-wmm-core/ppc_safe114_RMO_OPC/safe114.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe114_TSO_ALL/safe114.c b/regression/goto-instrument-wmm-core/ppc_safe114_TSO_ALL/safe114.c index c7c116acd75..9a9e191f6fa 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe114_TSO_ALL/safe114.c +++ b/regression/goto-instrument-wmm-core/ppc_safe114_TSO_ALL/safe114.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_safe114_TSO_OPC/safe114.c b/regression/goto-instrument-wmm-core/ppc_safe114_TSO_OPC/safe114.c index c7c116acd75..9a9e191f6fa 100644 --- a/regression/goto-instrument-wmm-core/ppc_safe114_TSO_OPC/safe114.c +++ b/regression/goto-instrument-wmm-core/ppc_safe114_TSO_OPC/safe114.c @@ -15,7 +15,7 @@ int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; int __unbuffered_p0_r3 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; int __unbuffered_p2_r3 = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin000_PSO_ALL/thin000.c b/regression/goto-instrument-wmm-core/ppc_thin000_PSO_ALL/thin000.c index 3c2deaeb8b7..6f1dda6a7ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin000_PSO_ALL/thin000.c +++ b/regression/goto-instrument-wmm-core/ppc_thin000_PSO_ALL/thin000.c @@ -13,10 +13,10 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin000_PSO_OPC/thin000.c b/regression/goto-instrument-wmm-core/ppc_thin000_PSO_OPC/thin000.c index 3c2deaeb8b7..6f1dda6a7ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin000_PSO_OPC/thin000.c +++ b/regression/goto-instrument-wmm-core/ppc_thin000_PSO_OPC/thin000.c @@ -13,10 +13,10 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin000_TSO_ALL/thin000.c b/regression/goto-instrument-wmm-core/ppc_thin000_TSO_ALL/thin000.c index 3c2deaeb8b7..6f1dda6a7ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin000_TSO_ALL/thin000.c +++ b/regression/goto-instrument-wmm-core/ppc_thin000_TSO_ALL/thin000.c @@ -13,10 +13,10 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin000_TSO_OPC/thin000.c b/regression/goto-instrument-wmm-core/ppc_thin000_TSO_OPC/thin000.c index 3c2deaeb8b7..6f1dda6a7ae 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin000_TSO_OPC/thin000.c +++ b/regression/goto-instrument-wmm-core/ppc_thin000_TSO_OPC/thin000.c @@ -13,10 +13,10 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin001_PSO_ALL/thin001.c b/regression/goto-instrument-wmm-core/ppc_thin001_PSO_ALL/thin001.c index 22eb8177bee..881cda89599 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin001_PSO_ALL/thin001.c +++ b/regression/goto-instrument-wmm-core/ppc_thin001_PSO_ALL/thin001.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin001_PSO_OPC/thin001.c b/regression/goto-instrument-wmm-core/ppc_thin001_PSO_OPC/thin001.c index 22eb8177bee..881cda89599 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin001_PSO_OPC/thin001.c +++ b/regression/goto-instrument-wmm-core/ppc_thin001_PSO_OPC/thin001.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin001_TSO_ALL/thin001.c b/regression/goto-instrument-wmm-core/ppc_thin001_TSO_ALL/thin001.c index 22eb8177bee..881cda89599 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin001_TSO_ALL/thin001.c +++ b/regression/goto-instrument-wmm-core/ppc_thin001_TSO_ALL/thin001.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin001_TSO_OPC/thin001.c b/regression/goto-instrument-wmm-core/ppc_thin001_TSO_OPC/thin001.c index 22eb8177bee..881cda89599 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin001_TSO_OPC/thin001.c +++ b/regression/goto-instrument-wmm-core/ppc_thin001_TSO_OPC/thin001.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin002_PSO_ALL/thin002.c b/regression/goto-instrument-wmm-core/ppc_thin002_PSO_ALL/thin002.c index 1e449c24353..7aa5a7b223f 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin002_PSO_ALL/thin002.c +++ b/regression/goto-instrument-wmm-core/ppc_thin002_PSO_ALL/thin002.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin002_PSO_OPC/thin002.c b/regression/goto-instrument-wmm-core/ppc_thin002_PSO_OPC/thin002.c index 1e449c24353..7aa5a7b223f 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin002_PSO_OPC/thin002.c +++ b/regression/goto-instrument-wmm-core/ppc_thin002_PSO_OPC/thin002.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin002_TSO_ALL/thin002.c b/regression/goto-instrument-wmm-core/ppc_thin002_TSO_ALL/thin002.c index 1e449c24353..7aa5a7b223f 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin002_TSO_ALL/thin002.c +++ b/regression/goto-instrument-wmm-core/ppc_thin002_TSO_ALL/thin002.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin002_TSO_OPC/thin002.c b/regression/goto-instrument-wmm-core/ppc_thin002_TSO_OPC/thin002.c index 1e449c24353..7aa5a7b223f 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin002_TSO_OPC/thin002.c +++ b/regression/goto-instrument-wmm-core/ppc_thin002_TSO_OPC/thin002.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin003_PSO_ALL/thin003.c b/regression/goto-instrument-wmm-core/ppc_thin003_PSO_ALL/thin003.c index 3c921b19608..4b0678151e4 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin003_PSO_ALL/thin003.c +++ b/regression/goto-instrument-wmm-core/ppc_thin003_PSO_ALL/thin003.c @@ -13,19 +13,19 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int a = 0; int b = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin003_PSO_OPC/thin003.c b/regression/goto-instrument-wmm-core/ppc_thin003_PSO_OPC/thin003.c index 3c921b19608..4b0678151e4 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin003_PSO_OPC/thin003.c +++ b/regression/goto-instrument-wmm-core/ppc_thin003_PSO_OPC/thin003.c @@ -13,19 +13,19 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int a = 0; int b = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin003_TSO_ALL/thin003.c b/regression/goto-instrument-wmm-core/ppc_thin003_TSO_ALL/thin003.c index 3c921b19608..4b0678151e4 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin003_TSO_ALL/thin003.c +++ b/regression/goto-instrument-wmm-core/ppc_thin003_TSO_ALL/thin003.c @@ -13,19 +13,19 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int a = 0; int b = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin003_TSO_OPC/thin003.c b/regression/goto-instrument-wmm-core/ppc_thin003_TSO_OPC/thin003.c index 3c921b19608..4b0678151e4 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin003_TSO_OPC/thin003.c +++ b/regression/goto-instrument-wmm-core/ppc_thin003_TSO_OPC/thin003.c @@ -13,19 +13,19 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int __unbuffered_p3_r1 = 0; -int __unbuffered_p3_r3 = 0; +__CPROVER_thread_local int __unbuffered_p3_r3 = 0; int __unbuffered_p3_r4 = 0; int a = 0; int b = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin004_PSO_ALL/thin004.c b/regression/goto-instrument-wmm-core/ppc_thin004_PSO_ALL/thin004.c index 637fb2acbb9..d37c240eba1 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin004_PSO_ALL/thin004.c +++ b/regression/goto-instrument-wmm-core/ppc_thin004_PSO_ALL/thin004.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin004_PSO_OPC/thin004.c b/regression/goto-instrument-wmm-core/ppc_thin004_PSO_OPC/thin004.c index 637fb2acbb9..d37c240eba1 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin004_PSO_OPC/thin004.c +++ b/regression/goto-instrument-wmm-core/ppc_thin004_PSO_OPC/thin004.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin004_TSO_ALL/thin004.c b/regression/goto-instrument-wmm-core/ppc_thin004_TSO_ALL/thin004.c index 637fb2acbb9..d37c240eba1 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin004_TSO_ALL/thin004.c +++ b/regression/goto-instrument-wmm-core/ppc_thin004_TSO_ALL/thin004.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin004_TSO_OPC/thin004.c b/regression/goto-instrument-wmm-core/ppc_thin004_TSO_OPC/thin004.c index 637fb2acbb9..d37c240eba1 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin004_TSO_OPC/thin004.c +++ b/regression/goto-instrument-wmm-core/ppc_thin004_TSO_OPC/thin004.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin005_PSO_ALL/thin005.c b/regression/goto-instrument-wmm-core/ppc_thin005_PSO_ALL/thin005.c index 144fce65ac0..7942733fff0 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin005_PSO_ALL/thin005.c +++ b/regression/goto-instrument-wmm-core/ppc_thin005_PSO_ALL/thin005.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin005_PSO_OPC/thin005.c b/regression/goto-instrument-wmm-core/ppc_thin005_PSO_OPC/thin005.c index 144fce65ac0..7942733fff0 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin005_PSO_OPC/thin005.c +++ b/regression/goto-instrument-wmm-core/ppc_thin005_PSO_OPC/thin005.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin005_TSO_ALL/thin005.c b/regression/goto-instrument-wmm-core/ppc_thin005_TSO_ALL/thin005.c index 144fce65ac0..7942733fff0 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin005_TSO_ALL/thin005.c +++ b/regression/goto-instrument-wmm-core/ppc_thin005_TSO_ALL/thin005.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin005_TSO_OPC/thin005.c b/regression/goto-instrument-wmm-core/ppc_thin005_TSO_OPC/thin005.c index 144fce65ac0..7942733fff0 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin005_TSO_OPC/thin005.c +++ b/regression/goto-instrument-wmm-core/ppc_thin005_TSO_OPC/thin005.c @@ -13,13 +13,13 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int x = 0; int y = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin006_PSO_ALL/thin006.c b/regression/goto-instrument-wmm-core/ppc_thin006_PSO_ALL/thin006.c index d6fc78bee30..b6ad470b92b 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin006_PSO_ALL/thin006.c +++ b/regression/goto-instrument-wmm-core/ppc_thin006_PSO_ALL/thin006.c @@ -13,19 +13,19 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int a = 0; int b = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin006_PSO_OPC/thin006.c b/regression/goto-instrument-wmm-core/ppc_thin006_PSO_OPC/thin006.c index d6fc78bee30..b6ad470b92b 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin006_PSO_OPC/thin006.c +++ b/regression/goto-instrument-wmm-core/ppc_thin006_PSO_OPC/thin006.c @@ -13,19 +13,19 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int a = 0; int b = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin006_TSO_ALL/thin006.c b/regression/goto-instrument-wmm-core/ppc_thin006_TSO_ALL/thin006.c index d6fc78bee30..b6ad470b92b 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin006_TSO_ALL/thin006.c +++ b/regression/goto-instrument-wmm-core/ppc_thin006_TSO_ALL/thin006.c @@ -13,19 +13,19 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int a = 0; int b = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin006_TSO_OPC/thin006.c b/regression/goto-instrument-wmm-core/ppc_thin006_TSO_OPC/thin006.c index d6fc78bee30..b6ad470b92b 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin006_TSO_OPC/thin006.c +++ b/regression/goto-instrument-wmm-core/ppc_thin006_TSO_OPC/thin006.c @@ -13,19 +13,19 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int __unbuffered_p2_r1 = 0; -int __unbuffered_p2_r3 = 0; +__CPROVER_thread_local int __unbuffered_p2_r3 = 0; int __unbuffered_p2_r4 = 0; int a = 0; int b = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin007_PSO_ALL/thin007.c b/regression/goto-instrument-wmm-core/ppc_thin007_PSO_ALL/thin007.c index 30a19ffc944..f4a50f8b16b 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin007_PSO_ALL/thin007.c +++ b/regression/goto-instrument-wmm-core/ppc_thin007_PSO_ALL/thin007.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin007_PSO_OPC/thin007.c b/regression/goto-instrument-wmm-core/ppc_thin007_PSO_OPC/thin007.c index 30a19ffc944..f4a50f8b16b 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin007_PSO_OPC/thin007.c +++ b/regression/goto-instrument-wmm-core/ppc_thin007_PSO_OPC/thin007.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin007_TSO_ALL/thin007.c b/regression/goto-instrument-wmm-core/ppc_thin007_TSO_ALL/thin007.c index 30a19ffc944..f4a50f8b16b 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin007_TSO_ALL/thin007.c +++ b/regression/goto-instrument-wmm-core/ppc_thin007_TSO_ALL/thin007.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int a = 0; int x = 0; diff --git a/regression/goto-instrument-wmm-core/ppc_thin007_TSO_OPC/thin007.c b/regression/goto-instrument-wmm-core/ppc_thin007_TSO_OPC/thin007.c index 30a19ffc944..f4a50f8b16b 100644 --- a/regression/goto-instrument-wmm-core/ppc_thin007_TSO_OPC/thin007.c +++ b/regression/goto-instrument-wmm-core/ppc_thin007_TSO_OPC/thin007.c @@ -13,16 +13,16 @@ void isync() int __unbuffered_cnt = 0; int __unbuffered_p0_r1 = 0; -int __unbuffered_p0_r3 = 0; +__CPROVER_thread_local int __unbuffered_p0_r3 = 0; int __unbuffered_p0_r4 = 0; int __unbuffered_p0_r6 = 0; -int __unbuffered_p0_r7 = 0; +__CPROVER_thread_local int __unbuffered_p0_r7 = 0; int __unbuffered_p0_r8 = 0; int __unbuffered_p1_r1 = 0; -int __unbuffered_p1_r3 = 0; +__CPROVER_thread_local int __unbuffered_p1_r3 = 0; int __unbuffered_p1_r4 = 0; int __unbuffered_p1_r6 = 0; -int __unbuffered_p1_r7 = 0; +__CPROVER_thread_local int __unbuffered_p1_r7 = 0; int __unbuffered_p1_r8 = 0; int a = 0; int x = 0; diff --git a/src/cbmc/cbmc_parse_options.cpp b/src/cbmc/cbmc_parse_options.cpp index 6548067d791..8da58eec8c8 100644 --- a/src/cbmc/cbmc_parse_options.cpp +++ b/src/cbmc/cbmc_parse_options.cpp @@ -410,6 +410,9 @@ void cbmc_parse_optionst::get_command_line_options(optionst &options) options.set_option("string-printable", cmdline.isset("string-printable")); } + if(cmdline.isset("refine-concurrency")) + options.set_option("refine-concurrency", true); + options.set_option( "symex-cache-dereferences", cmdline.isset("symex-cache-dereferences")); diff --git a/src/goto-checker/bmc_util.cpp b/src/goto-checker/bmc_util.cpp index 5bb3d9ce459..b3c4c6ed35b 100644 --- a/src/goto-checker/bmc_util.cpp +++ b/src/goto-checker/bmc_util.cpp @@ -310,7 +310,18 @@ void postprocess_equation( { std::unique_ptr memory_model = get_memory_model(options, ns); - (*memory_model)(equation, ui_message_handler); + if(options.get_bool_option("refine-concurrency")) + { + // With --refine-concurrency, add all memory model constraints + // but with the SAT simplifier disabled (see solver_factory.cpp). + // This provides the infrastructure for future incremental solving + // while ensuring correctness with the current solver. + (*memory_model)(equation, ui_message_handler); + } + else + { + (*memory_model)(equation, ui_message_handler); + } } messaget log(ui_message_handler); @@ -386,9 +397,8 @@ void run_property_decider( << messaget::eom; property_decider.add_constraint_from_goals( - [&properties](const irep_idt &property_id) { - return is_property_to_check(properties.at(property_id).status); - }); + [&properties](const irep_idt &property_id) + { return is_property_to_check(properties.at(property_id).status); }); auto const sat_solver_start = std::chrono::steady_clock::now(); diff --git a/src/goto-checker/bmc_util.h b/src/goto-checker/bmc_util.h index c604856d7ba..2f8fc6c1efc 100644 --- a/src/goto-checker/bmc_util.h +++ b/src/goto-checker/bmc_util.h @@ -187,7 +187,7 @@ void run_property_decider( "(unwind-min):" \ "(unwind-max):" \ "(ignore-properties-before-unwind-min)" \ - "(symex-cache-dereferences)" OPT_UNWINDSET + "(symex-cache-dereferences)" OPT_UNWINDSET "(refine-concurrency)" #define HELP_BMC \ " {y--paths} [strategy] \t explore paths one at a time\n" \ @@ -233,6 +233,8 @@ void run_property_decider( " {y--graphml-witness} {ufilename} \t write the witness in GraphML format " \ "to {ufilename}\n" \ " {y--symex-cache-dereferences} \t enable caching of repeated " \ - "dereferences\n" + "dereferences\n" \ + " {y--refine-concurrency} \t add concurrency constraints in stages for" \ + " potentially faster solving\n" #endif // CPROVER_GOTO_CHECKER_BMC_UTIL_H diff --git a/src/goto-checker/multi_path_symex_checker.cpp b/src/goto-checker/multi_path_symex_checker.cpp index 40f60b6ed85..be5008f13a6 100644 --- a/src/goto-checker/multi_path_symex_checker.cpp +++ b/src/goto-checker/multi_path_symex_checker.cpp @@ -17,6 +17,7 @@ Author: Daniel Kroening, Peter Schrammel #include #include +#include #include #include "bmc_util.h" @@ -37,8 +38,8 @@ multi_path_symex_checkert::multi_path_symex_checkert( PRECONDITION(!has_vector(goto_model.get_goto_functions())); } -incremental_goto_checkert::resultt multi_path_symex_checkert:: -operator()(propertiest &properties) +incremental_goto_checkert::resultt +multi_path_symex_checkert::operator()(propertiest &properties) { resultt result(resultt::progresst::DONE); @@ -90,8 +91,96 @@ void multi_path_symex_checkert::run_property_decider( propertiest &properties, std::chrono::duration solver_runtime) { - ::run_property_decider( - result, properties, property_decider, ui_message_handler, solver_runtime); + if(options.get_bool_option("refine-concurrency") && equation.has_threads()) + { + // Incremental concurrency refinement: solve with progressively + // more memory model constraints. The SAT simplifier is disabled + // (see solver_factory.cpp) so we can add clauses between solves. + messaget log(ui_message_handler); + + std::unique_ptr mm = get_memory_model(options, ns); + // prepare() was already called in postprocess_equation + mm->prepare(equation, ui_message_handler); + + using stage = memory_model_baset::refinement_staget; + const stage stages[] = { + stage::READ_FROM, + stage::PROGRAM_ORDER, + stage::WRITE_SERIALIZATION, + stage::FROM_READ}; + const char *stage_names[] = { + "read-from", "program-order", "write-serialization", "from-read"}; + + property_decider.add_constraint_from_goals( + [&properties](const irep_idt &property_id) + { return is_property_to_check(properties.at(property_id).status); }); + + for(std::size_t i = 0; i <= 4; ++i) + { + if(i > 0) + { + log.statistics() << "Concurrency refinement: adding " + << stage_names[i - 1] << " constraints" + << messaget::eom; + + // Add this stage's constraints to the equation + const auto before = equation.SSA_steps.size(); + mm->add_stage(stages[i - 1], equation); + + // Convert newly added constraint steps to the solver + auto it = equation.SSA_steps.begin(); + std::advance(it, static_cast(before)); + for(; it != equation.SSA_steps.end(); ++it) + { + if(it->is_constraint()) + { + property_decider.get_decision_procedure().set_to_true( + it->cond_expr); + } + } + } + + log.statistics() << "Concurrency refinement: solving (stage " << i + << "/4)" << messaget::eom; + + auto const start = std::chrono::steady_clock::now(); + decision_proceduret::resultt dec_result = property_decider.solve(); + auto const stop = std::chrono::steady_clock::now(); + solver_runtime += std::chrono::duration(stop - start); + + if(dec_result == decision_proceduret::resultt::D_UNSATISFIABLE) + { + log.statistics() << "Concurrency refinement: UNSAT at stage " << i + << "/4" << messaget::eom; + property_decider.update_properties_status_from_goals( + properties, result.updated_properties, dec_result, true); + break; + } + + if(i == 4) + { + // All stages added, SAT is genuine + log.statistics() << "Concurrency refinement: SAT with all constraints" + << messaget::eom; + property_decider.update_properties_status_from_goals( + properties, result.updated_properties, dec_result, true); + result.progress = + incremental_goto_checkert::resultt::progresst::FOUND_FAIL; + break; + } + + log.statistics() << "Concurrency refinement: SAT at stage " << i + << "/4, refining" << messaget::eom; + } + + log.statistics() << "Runtime decision procedure: " << solver_runtime.count() + << "s" << messaget::eom; + } + else + { + ::run_property_decider( + result, properties, property_decider, ui_message_handler, solver_runtime); + } } goto_tracet multi_path_symex_checkert::build_full_trace() const diff --git a/src/goto-checker/solver_factory.cpp b/src/goto-checker/solver_factory.cpp index 3e2bf918313..ddf62b97c3f 100644 --- a/src/goto-checker/solver_factory.cpp +++ b/src/goto-checker/solver_factory.cpp @@ -214,7 +214,8 @@ get_sat_solver(message_handlert &message_handler, const optionst &options) { const bool no_simplifier = options.get_bool_option("beautify") || !options.get_bool_option("sat-preprocessor") || - options.get_bool_option("refine-strings"); + options.get_bool_option("refine-strings") || + options.get_bool_option("refine-concurrency"); if(options.is_set("sat-solver")) { diff --git a/src/goto-symex/field_sensitivity.cpp b/src/goto-symex/field_sensitivity.cpp index 0a5a56b6213..6de0f45dd97 100644 --- a/src/goto-symex/field_sensitivity.cpp +++ b/src/goto-symex/field_sensitivity.cpp @@ -359,15 +359,13 @@ void field_sensitivityt::field_assignments( goto_symex_statet &state, const ssa_exprt &lhs, const exprt &rhs, - symex_targett &target, - bool allow_pointer_unsoundness) const + symex_targett &target) const { const exprt lhs_fs = get_fields(ns, state, lhs, false); if(lhs != lhs_fs) { - field_assignments_rec( - ns, state, lhs_fs, rhs, target, allow_pointer_unsoundness); + field_assignments_rec(ns, state, lhs_fs, rhs, target); // Erase the composite symbol from our working state. Note that we need to // have it in the propagation table and the value set while doing the field // assignments, thus we cannot skip putting it in there above. @@ -388,22 +386,18 @@ void field_sensitivityt::field_assignments( /// \param lhs_fs: expanded symbol /// \param ssa_rhs: right-hand-side value to assign /// \param target: symbolic execution equation store -/// \param allow_pointer_unsoundness: allow pointer unsoundness void field_sensitivityt::field_assignments_rec( const namespacet &ns, goto_symex_statet &state, const exprt &lhs_fs, const exprt &ssa_rhs, - symex_targett &target, - bool allow_pointer_unsoundness) const + symex_targett &target) const { if(is_ssa_expr(lhs_fs)) { const ssa_exprt &l1_lhs = to_ssa_expr(lhs_fs); const ssa_exprt ssa_lhs = - state - .assignment(l1_lhs, ssa_rhs, ns, true, true, allow_pointer_unsoundness) - .get(); + state.assignment(l1_lhs, ssa_rhs, ns, true, true).get(); // do the assignment target.assignment( @@ -454,16 +448,10 @@ void field_sensitivityt::field_assignments_rec( expr_try_dynamic_cast(member_lhs)) { field_assignments_rec( - ns, - state, - fs_ssa->get_object_ssa(), - member_rhs, - target, - allow_pointer_unsoundness); + ns, state, fs_ssa->get_object_ssa(), member_rhs, target); } - field_assignments_rec( - ns, state, member_lhs, member_rhs, target, allow_pointer_unsoundness); + field_assignments_rec(ns, state, member_lhs, member_rhs, target); ++fs_it; } } @@ -499,16 +487,10 @@ void field_sensitivityt::field_assignments_rec( expr_try_dynamic_cast(member_lhs)) { field_assignments_rec( - ns, - state, - fs_ssa->get_object_ssa(), - member_rhs, - target, - allow_pointer_unsoundness); + ns, state, fs_ssa->get_object_ssa(), member_rhs, target); } - field_assignments_rec( - ns, state, member_lhs, member_rhs, target, allow_pointer_unsoundness); + field_assignments_rec(ns, state, member_lhs, member_rhs, target); ++fs_it; } } @@ -540,16 +522,10 @@ void field_sensitivityt::field_assignments_rec( expr_try_dynamic_cast(index_lhs)) { field_assignments_rec( - ns, - state, - fs_ssa->get_object_ssa(), - index_rhs, - target, - allow_pointer_unsoundness); + ns, state, fs_ssa->get_object_ssa(), index_rhs, target); } - field_assignments_rec( - ns, state, index_lhs, index_rhs, target, allow_pointer_unsoundness); + field_assignments_rec(ns, state, index_lhs, index_rhs, target); ++fs_it; } } @@ -565,17 +541,10 @@ void field_sensitivityt::field_assignments_rec( { if(auto fs_ssa = expr_try_dynamic_cast(*fs_it)) { - field_assignments_rec( - ns, - state, - fs_ssa->get_object_ssa(), - op, - target, - allow_pointer_unsoundness); + field_assignments_rec(ns, state, fs_ssa->get_object_ssa(), op, target); } - field_assignments_rec( - ns, state, *fs_it, op, target, allow_pointer_unsoundness); + field_assignments_rec(ns, state, *fs_it, op, target); ++fs_it; } } diff --git a/src/goto-symex/field_sensitivity.h b/src/goto-symex/field_sensitivity.h index 12606321ce0..430c5351da1 100644 --- a/src/goto-symex/field_sensitivity.h +++ b/src/goto-symex/field_sensitivity.h @@ -142,14 +142,12 @@ class field_sensitivityt /// \param rhs: right-hand-side value that was used in the preceding update of /// the full object /// \param target: symbolic execution equation store - /// \param allow_pointer_unsoundness: allow pointer unsoundness void field_assignments( const namespacet &ns, goto_symex_statet &state, const ssa_exprt &lhs, const exprt &rhs, - symex_targett &target, - bool allow_pointer_unsoundness) const; + symex_targett &target) const; /// Turn an expression \p expr into a field-sensitive SSA expression. /// Field-sensitive SSA expressions have individual symbols for each @@ -215,8 +213,7 @@ class field_sensitivityt goto_symex_statet &state, const exprt &lhs_fs, const exprt &ssa_rhs, - symex_targett &target, - bool allow_pointer_unsoundness) const; + symex_targett &target) const; [[nodiscard]] exprt simplify_opt( exprt e, diff --git a/src/goto-symex/goto_symex.cpp b/src/goto-symex/goto_symex.cpp index 24d9e4dc33b..0c0efb5106a 100644 --- a/src/goto-symex/goto_symex.cpp +++ b/src/goto-symex/goto_symex.cpp @@ -18,6 +18,7 @@ Author: Daniel Kroening, kroening@kroening.com #include #include #include +#include #include #include #include @@ -29,11 +30,17 @@ Author: Daniel Kroening, kroening@kroening.com #include -void goto_symext::do_simplify(exprt &expr, const value_sett &value_set) +void goto_symext::do_simplify(exprt &expr, const statet &state) { if(symex_config.simplify_opt) { - simplify_expr_with_value_sett{value_set, language_mode, ns}.simplify(expr); + if(state.threads.size() == 1) + { + simplify_expr_with_value_sett{state.value_set, language_mode, ns} + .simplify(expr); + } + else + simplify(expr, ns); } } @@ -63,7 +70,7 @@ void goto_symext::symex_assign( // "byte_extract from an_lvalue offset this_rvalue") can affect whether // we use field-sensitive symbols or not, so L2-rename them up front: lhs = state.l2_rename_rvalues(lhs, ns); - do_simplify(lhs, state.value_set); + do_simplify(lhs, state); lhs = state.field_sensitivity.apply(ns, state, std::move(lhs), true); if(rhs.id() == ID_side_effect) diff --git a/src/goto-symex/goto_symex.h b/src/goto-symex/goto_symex.h index 5980573f0cd..2c36ef7e14c 100644 --- a/src/goto-symex/goto_symex.h +++ b/src/goto-symex/goto_symex.h @@ -526,7 +526,7 @@ class goto_symext /// \param state: Symbolic execution state for current instruction void symex_catch(statet &state); - virtual void do_simplify(exprt &expr, const value_sett &value_set); + virtual void do_simplify(exprt &expr, const statet &state); /// Symbolically execute an ASSIGN instruction or simulate such an execution /// for a synthetic assignment diff --git a/src/goto-symex/goto_symex_state.cpp b/src/goto-symex/goto_symex_state.cpp index 2938600a1c1..6dddece1a92 100644 --- a/src/goto-symex/goto_symex_state.cpp +++ b/src/goto-symex/goto_symex_state.cpp @@ -80,8 +80,7 @@ renamedt goto_symex_statet::assignment( const exprt &rhs, // L2 const namespacet &ns, bool rhs_is_simplified, - bool record_value, - bool allow_pointer_unsoundness) + bool record_value) { // identifier should be l0 or l1, make sure it's l1 lhs = rename_ssa(std::move(lhs), ns).get(); @@ -111,11 +110,6 @@ renamedt goto_symex_statet::assignment( DATA_INVARIANT(!check_renaming(rhs), "rhs renaming failed on l2"); } - // see #305 on GitHub for a simple example and possible discussion - if(is_shared && lhs.type().id() == ID_pointer && !allow_pointer_unsoundness) - throw unsupported_operation_exceptiont( - "pointer handling for concurrency is unsound"); - // Update constant propagation map -- the RHS is L2 if(!is_shared && record_value && goto_symex_can_forward_propagatet(ns)(rhs)) { diff --git a/src/goto-symex/goto_symex_state.h b/src/goto-symex/goto_symex_state.h index 143d12ea485..0ec55457209 100644 --- a/src/goto-symex/goto_symex_state.h +++ b/src/goto-symex/goto_symex_state.h @@ -116,8 +116,7 @@ class goto_symex_statet final : public goto_statet const exprt &rhs, // L2 const namespacet &ns, bool rhs_is_simplified, - bool record_value, - bool allow_pointer_unsoundness = false); + bool record_value); field_sensitivityt field_sensitivity; diff --git a/src/goto-symex/may_alias_soundness.md b/src/goto-symex/may_alias_soundness.md new file mode 100644 index 00000000000..17656d73203 --- /dev/null +++ b/src/goto-symex/may_alias_soundness.md @@ -0,0 +1,133 @@ +/// \file +/// Soundness argument for may-alias concurrent pointer dereferences +/// +/// Background: Alglave/Kroening/Tautschnig, "Partial Orders for Efficient +/// Bounded Model Checking of Concurrent Software", CAV 2013. +/// +/// == Problem == +/// +/// When a shared pointer `ptr` is dereferenced in a concurrent program, +/// the value set may not accurately reflect all possible targets because +/// other threads may have modified `ptr`. The standard approach of +/// consulting the value set and creating a conditional expression +/// (ptr == &o1 ? o1 : ptr == &o2 ? o2 : ...) is unsound because the +/// value set is computed per-thread and doesn't account for inter-thread +/// writes to `ptr`. +/// +/// == Solution: May-Alias Objects == +/// +/// Instead of consulting the value set, we create a fresh symbol +/// `concurrency::may_alias$N` of the pointed-to type. This symbol +/// represents "whatever ptr points to" and participates in the +/// partial-order constraints as follows. +/// +/// == Formal Argument == +/// +/// Let `m` be the may-alias read event for `*ptr`, and let `ptr_read` +/// be the L2-renamed SSA symbol for the read of `ptr` at the dereference +/// point. The value of `ptr_read` is determined by the read-from relation +/// for `ptr` (i.e., which write to `ptr` this read sees). +/// +/// For each concrete address `a` with representative object `obj_a`: +/// +/// 1. ALIAS CONDITION: alias(m, a) ≡ pointer_object(ptr_read) = pointer_object(&obj_a) +/// This is true iff `ptr` points to `obj_a` in the current execution. +/// +/// 2. READ-FROM (rf-val, rf-some): +/// For each write `w` to address `a`: +/// s_{w,m} ⇒ alias(m, a) ∧ val(w) = val(m) +/// The rf-some constraint is: +/// alias(m, a) ⇒ ∨_w s_{w,m} +/// This says: IF ptr points to obj_a, THEN m must read from some write +/// to obj_a. If ptr does NOT point to obj_a, the constraint is vacuous. +/// +/// CORRECTNESS: In any valid execution where ptr points to obj_a, +/// the may-alias read sees the value of obj_a as determined by the +/// write serialisation. If ptr doesn't point to obj_a, the may-alias +/// read is unconstrained w.r.t. obj_a (correct, since it reads from +/// a different address). +/// +/// 3. WRITE SERIALISATION (ws-ext): +/// For may-alias writes w_m to address a: +/// alias(w_m, a) ∧ alias(w', a) ∧ s ⇒ before(w_m, w') +/// alias(w_m, a) ∧ alias(w', a) ∧ ¬s ⇒ before(w', w_m) +/// The alias conditions ensure that write serialisation only applies +/// when the may-alias write actually targets address a. +/// +/// 4. FROM-READ (fr): +/// For may-alias read m at address a: +/// alias(m, a) ∧ s_{w',m} ∧ before(w', w) ⇒ before(m, w) +/// The alias condition ensures from-read only applies when the +/// may-alias read actually targets address a. +/// +/// 5. INIT WRITES: +/// May-alias addresses do NOT get init writes. Their initial value +/// is determined by the aliasing: if ptr points to obj_a, the +/// may-alias read sees obj_a's value (including its init write). +/// +/// == Soundness Theorem (sketch) == +/// +/// Claim: For any satisfying assignment V of (ssa ∧ pord), there exists +/// a valid execution of the original program (without may-alias objects) +/// that produces the same observable behaviour. +/// +/// Proof sketch: +/// - V determines a value for ptr_read (via rf for ptr). +/// - This value equals &obj_a for some concrete object obj_a. +/// - The alias condition alias(m, a) is true, and alias(m, b) is false +/// for all b ≠ a. +/// - The rf-some constraint forces m to read from some write to obj_a. +/// - The rf-val constraint forces val(m) = val(w) for the selected write. +/// - Therefore val(m) equals the value of obj_a as seen through the +/// memory model — exactly what *ptr would read in the original program. +/// - The ws and fr constraints for m at address a are equivalent to the +/// constraints that would exist for a direct read of obj_a. +/// - The ws and fr constraints for m at other addresses b are vacuous +/// (guarded by false alias conditions). +/// - Therefore the partial order constraints for m are equivalent to +/// those for a direct read of obj_a, and the execution is valid. +/// +/// Claim: For any valid execution of the original program, there exists +/// a satisfying assignment of (ssa ∧ pord). +/// +/// Proof sketch: +/// - In the execution, *ptr reads from some concrete object obj_a. +/// - Set ptr_read = &obj_a (via the rf for ptr). +/// - Set val(m) = val(obj_a) as determined by the execution's rf. +/// - The alias condition alias(m, a) is true. +/// - The rf-some, rf-val, ws, and fr constraints for m at address a +/// are satisfied by the same clock assignment as for a direct read +/// of obj_a in the original execution. +/// - The constraints for m at other addresses are vacuously satisfied. +/// - Therefore (ssa ∧ pord) is satisfiable. +/// +/// == Limitations == +/// +/// 1. SHARED POINTER ONLY: The may-alias mechanism only triggers when +/// the pointer expression directly contains a shared (global or dirty) +/// symbol. A local pointer assigned from a shared source uses the +/// standard value-set dereference, which may be unsound. +/// Example: `int *local = shared_ptr; *local` uses value-set. +/// Fix: Track "tainted" pointers — any local assigned from a shared +/// expression inherits the shared property. Alternatively, treat all +/// pointer dereferences as potentially shared in multi-threaded mode +/// (conservative but simple; increases formula size). +/// +/// 2. POINTER-OBJECT GRANULARITY: The alias condition uses +/// pointer_object equality, which checks object identity but not +/// offset within the object. This is the correct granularity for +/// the may-alias mechanism: the may-alias object represents the +/// entire pointed-to object, and offsets are handled by the +/// byte_extract/byte_update operations in the SSA equation. +/// Field sensitivity means struct members and array elements get +/// separate addresses in the memory model, so this is precise +/// for the common case. The only imprecision is for byte-level +/// pointer arithmetic within a single field, which is rare in +/// concurrent code. +/// +/// 3. TYPE COMPATIBILITY: May-alias events are distributed to all +/// addresses with known bit width. When the read and write types +/// differ, the rf-val constraint uses byte_extract to reinterpret +/// the write value as the read's type. The expression simplifier +/// reduces this to a typecast for same-width types. This handles +/// signed/unsigned, char* accessing int, and similar patterns. diff --git a/src/goto-symex/memory_model.cpp b/src/goto-symex/memory_model.cpp index 9059b669b1c..6f4d466a54e 100644 --- a/src/goto-symex/memory_model.cpp +++ b/src/goto-symex/memory_model.cpp @@ -11,6 +11,9 @@ Author: Michael Tautschnig, michael.tautschnig@cs.ox.ac.uk #include "memory_model.h" +#include +#include +#include #include memory_model_baset::memory_model_baset(const namespacet &_ns) @@ -42,14 +45,31 @@ bool memory_model_baset::po(event_it e1, event_it e2) void memory_model_baset::read_from(symex_target_equationt &equation) { - // We iterate over all the reads, and - // make them match at least one - // (internal or external) write. + // Encode the read-from relation (rf) as described in + // Alglave/Kroening/Tautschnig CAV 2013, Section 4.2. + // + // For each read r at address a, we introduce Boolean choice variables + // s_{w,r} for each candidate write w to address a. The constraints are: + // + // rf-val: s_{w,r} => alias(r,a) ∧ g(w) ∧ val(w) = val(r) + // rf-some: alias(r,a) ∧ g(r) => ∨_w s_{w,r} + // rf-order: s_{w,r} => before(w, r) [for external rf] + // + // For may-alias reads (created for shared pointer dereferences in + // concurrent context), the alias condition alias(r,a) guards both + // rf-val and rf-some. This ensures that a may-alias read only needs + // to read from writes at address a when the source pointer actually + // points to a. Without this guard, a may-alias read distributed to + // multiple addresses would be forced to read from ALL of them + // simultaneously, making the constraints unsatisfiable. + // See may_alias_soundness.md for the formal soundness argument. for(const auto &address : address_map) { for(const auto &read_event : address.second.reads) { + exprt read_alias = alias_condition(read_event, address.first); + exprt::operandst rf_choice_symbols; rf_choice_symbols.reserve(address.second.writes.size()); @@ -59,8 +79,11 @@ void memory_model_baset::read_from(symex_target_equationt &equation) // rf cannot contradict program order if(!po(read_event, write_event)) { + exprt write_alias = alias_condition(write_event, address.first); + exprt alias_cond = conjunction({read_alias, write_alias}); + rf_choice_symbols.push_back(register_read_from_choice_symbol( - read_event, write_event, equation)); + read_event, write_event, equation, alias_cond)); } } @@ -69,10 +92,18 @@ void memory_model_baset::read_from(symex_target_equationt &equation) if(!rf_choice_symbols.empty()) { // Add the read's guard, each of the writes' guards is implied - // by each entry in rf_some + // by each entry in rf_some. + // For may-alias reads, the rf-some constraint is conditional on + // the pointer actually aliasing with this address. Without this + // guard, a may-alias read added to multiple addresses would be + // forced to read from ALL addresses simultaneously, which is + // unsatisfiable and makes assertions vacuously true. + // See Alglave/Kroening/Tautschnig CAV 2013 (Sec. 4.2, rf-some) + // for the standard rf-some encoding. + exprt guard = and_exprt{read_event->guard, read_alias}; add_constraint( equation, - implies_exprt{read_event->guard, disjunction(rf_choice_symbols)}, + implies_exprt{guard, disjunction(rf_choice_symbols)}, "rf-some", read_event->source); } @@ -83,7 +114,8 @@ void memory_model_baset::read_from(symex_target_equationt &equation) symbol_exprt memory_model_baset::register_read_from_choice_symbol( const event_it &r, const event_it &w, - symex_target_equationt &equation) + symex_target_equationt &equation, + const exprt &alias_cond) { symbol_exprt s = nondet_bool_symbol("rf"); @@ -97,7 +129,22 @@ symbol_exprt memory_model_baset::register_read_from_choice_symbol( equation, // We rely on the fact that there is at least // one write event that has guard 'true'. - implies_exprt{s, and_exprt{w->guard, equal_exprt{r->ssa_lhs, w->ssa_lhs}}}, + // When the read and write have different types (due to may-alias + // type compatibility), use byte_extract to reinterpret the write + // value as the read's type. The expression simplifier will reduce + // this to a typecast for same-width types or keep it as a proper + // byte extraction for different widths. + [&]() + { + exprt write_val = w->ssa_lhs; + if(w->ssa_lhs.type() != r->ssa_lhs.type()) + { + write_val = make_byte_extract( + w->ssa_lhs, from_integer(0, c_index_type()), r->ssa_lhs.type()); + } + return implies_exprt{ + s, and_exprt{alias_cond, w->guard, equal_exprt{r->ssa_lhs, write_val}}}; + }(), is_rfi ? "rfi" : "rf", r->source); diff --git a/src/goto-symex/memory_model.h b/src/goto-symex/memory_model.h index eb4cad75753..4d30a9d083d 100644 --- a/src/goto-symex/memory_model.h +++ b/src/goto-symex/memory_model.h @@ -22,6 +22,37 @@ class memory_model_baset : public partial_order_concurrencyt virtual void operator()(symex_target_equationt &, message_handlert &) = 0; + /// Prepare event lists and clock types without adding constraints. + /// Call this before using the staged constraint methods. + void prepare(symex_target_equationt &equation, message_handlert &mh) + { + build_event_lists(equation, mh); + build_clock_type(); + } + + /// Add init writes for shared variables without building the full + /// event lists. Used by --refine-concurrency to include init writes + /// in the equation before solver conversion, while deferring the + /// ordering constraints to the refinement loop. + void add_init_writes_only(symex_target_equationt &equation) + { + add_init_writes(equation); + } + + /// Staged constraint addition for incremental refinement. + /// Each stage adds more constraints; earlier stages are cheaper. + enum class refinement_staget + { + READ_FROM, + PROGRAM_ORDER, + WRITE_SERIALIZATION, + FROM_READ + }; + + /// Add constraints for a specific refinement stage. + virtual void + add_stage(refinement_staget stage, symex_target_equationt &equation) = 0; + protected: /// In-thread program order /// \param e1: preceding event @@ -50,11 +81,13 @@ class memory_model_baset : public partial_order_concurrencyt /// \param r: read event /// \param w: write event /// \param equation: symex equation where the new constraints should be added + /// \param alias_cond: additional alias condition guard (default: true) /// \return the new choice symbol symbol_exprt register_read_from_choice_symbol( const event_it &r, const event_it &w, - symex_target_equationt &equation); + symex_target_equationt &equation, + const exprt &alias_cond = true_exprt{}); // maps thread numbers to an event list typedef std::map per_thread_mapt; diff --git a/src/goto-symex/memory_model_sc.cpp b/src/goto-symex/memory_model_sc.cpp index 8c7d5fa964f..d155838ed89 100644 --- a/src/goto-symex/memory_model_sc.cpp +++ b/src/goto-symex/memory_model_sc.cpp @@ -13,8 +13,9 @@ Author: Michael Tautschnig, michael.tautschnig@cs.ox.ac.uk #include -void memory_model_sct:: -operator()(symex_target_equationt &equation, message_handlert &message_handler) +void memory_model_sct::operator()( + symex_target_equationt &equation, + message_handlert &message_handler) { messaget log{message_handler}; log.statistics() << "Adding SC constraints" << messaget::eom; @@ -28,10 +29,30 @@ operator()(symex_target_equationt &equation, message_handlert &message_handler) from_read(equation); } +void memory_model_sct::add_stage( + refinement_staget stage, + symex_target_equationt &equation) +{ + switch(stage) + { + case refinement_staget::READ_FROM: + read_from(equation); + break; + case refinement_staget::PROGRAM_ORDER: + program_order(equation); + break; + case refinement_staget::WRITE_SERIALIZATION: + write_serialization_external(equation); + break; + case refinement_staget::FROM_READ: + from_read(equation); + break; + } +} + exprt memory_model_sct::before(event_it e1, event_it e2) { - return partial_order_concurrencyt::before( - e1, e2, AX_PROPAGATION); + return partial_order_concurrencyt::before(e1, e2, AX_PROPAGATION); } bool memory_model_sct::program_order_is_relaxed( @@ -50,16 +71,15 @@ void memory_model_sct::build_per_thread_map( { // this orders the events within a thread - for(eventst::const_iterator - e_it=equation.SSA_steps.begin(); - e_it!=equation.SSA_steps.end(); + for(eventst::const_iterator e_it = equation.SSA_steps.begin(); + e_it != equation.SSA_steps.end(); e_it++) { // concurrency-related? - if(!e_it->is_shared_read() && - !e_it->is_shared_write() && - !e_it->is_spawn() && - !e_it->is_memory_barrier()) continue; + if( + !e_it->is_shared_read() && !e_it->is_shared_write() && + !e_it->is_spawn() && !e_it->is_memory_barrier()) + continue; dest[e_it->source.thread_nr].push_back(e_it); } @@ -72,32 +92,27 @@ void memory_model_sct::thread_spawn( // thread spawn: the spawn precedes the first // instruction of the new thread in program order - unsigned next_thread_id=0; - for(eventst::const_iterator - e_it=equation.SSA_steps.begin(); - e_it!=equation.SSA_steps.end(); + unsigned next_thread_id = 0; + for(eventst::const_iterator e_it = equation.SSA_steps.begin(); + e_it != equation.SSA_steps.end(); e_it++) { if(e_it->is_spawn()) { - per_thread_mapt::const_iterator next_thread= + per_thread_mapt::const_iterator next_thread = per_thread_map.find(++next_thread_id); - if(next_thread==per_thread_map.end()) + if(next_thread == per_thread_map.end()) continue; // add a constraint for all events, // considering regression/cbmc-concurrency/pthread_create_tso1 - for(event_listt::const_iterator - n_it=next_thread->second.begin(); - n_it!=next_thread->second.end(); + for(event_listt::const_iterator n_it = next_thread->second.begin(); + n_it != next_thread->second.end(); n_it++) { if(!(*n_it)->is_memory_barrier()) add_constraint( - equation, - before(e_it, *n_it), - "thread-spawn", - e_it->source); + equation, before(e_it, *n_it), "thread-spawn", e_it->source); } } } @@ -148,8 +163,7 @@ void memory_model_sct::thread_spawn( } #endif -void memory_model_sct::program_order( - symex_target_equationt &equation) +void memory_model_sct::program_order(symex_target_equationt &equation) { per_thread_mapt per_thread_map; build_per_thread_map(equation, per_thread_map); @@ -158,39 +172,32 @@ void memory_model_sct::program_order( // iterate over threads - for(per_thread_mapt::const_iterator - t_it=per_thread_map.begin(); - t_it!=per_thread_map.end(); + for(per_thread_mapt::const_iterator t_it = per_thread_map.begin(); + t_it != per_thread_map.end(); t_it++) { - const event_listt &events=t_it->second; + const event_listt &events = t_it->second; // iterate over relevant events in the thread - event_it previous=equation.SSA_steps.end(); + event_it previous = equation.SSA_steps.end(); - for(event_listt::const_iterator - e_it=events.begin(); - e_it!=events.end(); + for(event_listt::const_iterator e_it = events.begin(); e_it != events.end(); e_it++) { if((*e_it)->is_memory_barrier()) - continue; + continue; - if(previous==equation.SSA_steps.end()) + if(previous == equation.SSA_steps.end()) { // first one? - previous=*e_it; + previous = *e_it; continue; } - add_constraint( - equation, - before(previous, *e_it), - "po", - (*e_it)->source); + add_constraint(equation, before(previous, *e_it), "po", (*e_it)->source); - previous=*e_it; + previous = *e_it; } } } @@ -198,48 +205,61 @@ void memory_model_sct::program_order( void memory_model_sct::write_serialization_external( symex_target_equationt &equation) { - for(address_mapt::const_iterator - a_it=address_map.begin(); - a_it!=address_map.end(); + // Encode write serialisation (ws) as described in + // Alglave/Kroening/Tautschnig CAV 2013, Section 4.2. + // + // ws is a per-address total order on writes. For each pair of writes + // (w1, w2) to the same address, we introduce a Boolean s and add: + // alias_guard ∧ s => before(w1, w2) + // alias_guard ∧ ¬s => before(w2, w1) + // + // For may-alias writes, alias_guard is the conjunction of alias + // conditions for both writes. This ensures write serialisation only + // applies when both writes actually target this address. + for(address_mapt::const_iterator a_it = address_map.begin(); + a_it != address_map.end(); a_it++) { - const a_rect &a_rec=a_it->second; + const a_rect &a_rec = a_it->second; // This is quadratic in the number of writes // per address. Perhaps some better encoding // based on 'places'? - for(event_listt::const_iterator - w_it1=a_rec.writes.begin(); - w_it1!=a_rec.writes.end(); + for(event_listt::const_iterator w_it1 = a_rec.writes.begin(); + w_it1 != a_rec.writes.end(); ++w_it1) { - event_listt::const_iterator next=w_it1; + event_listt::const_iterator next = w_it1; ++next; - for(event_listt::const_iterator w_it2=next; - w_it2!=a_rec.writes.end(); + for(event_listt::const_iterator w_it2 = next; w_it2 != a_rec.writes.end(); ++w_it2) { // external? - if((*w_it1)->source.thread_nr== - (*w_it2)->source.thread_nr) + if((*w_it1)->source.thread_nr == (*w_it2)->source.thread_nr) continue; // ws is a total order, no two elements have the same rank // s -> w_evt1 before w_evt2; !s -> w_evt2 before w_evt1 - symbol_exprt s=nondet_bool_symbol("ws-ext"); + // Guard with alias conditions for may-alias events + exprt alias1 = alias_condition(*w_it1, a_it->first); + exprt alias2 = alias_condition(*w_it2, a_it->first); + exprt alias_guard = conjunction({alias1, alias2}); + + symbol_exprt s = nondet_bool_symbol("ws-ext"); // write-to-write edge add_constraint( equation, - implies_exprt(s, before(*w_it1, *w_it2)), + implies_exprt(and_exprt(alias_guard, s), before(*w_it1, *w_it2)), "ws-ext", (*w_it1)->source); add_constraint( equation, - implies_exprt(not_exprt(s), before(*w_it2, *w_it1)), + implies_exprt( + and_exprt(alias_guard, not_exprt(s)), before(*w_it2, *w_it1)), "ws-ext", (*w_it1)->source); } @@ -249,87 +269,111 @@ void memory_model_sct::write_serialization_external( void memory_model_sct::from_read(symex_target_equationt &equation) { + // Encode from-read (fr) as described in + // Alglave/Kroening/Tautschnig CAV 2013, Section 4.2. + // + // (r, w) ∈ fr iff ∃w'. (w', r) ∈ rf ∧ (w', w) ∈ ws + // Encoded as: s_{w',r} ∧ before(w', w) => before(r, w) + // + // For may-alias events, all three participants (r, w', w) are guarded + // by alias conditions. This ensures fr only applies when all events + // actually target this address. + // from-read: (w', w) in ws and (w', r) in rf -> (r, w) in fr - for(address_mapt::const_iterator - a_it=address_map.begin(); - a_it!=address_map.end(); + for(address_mapt::const_iterator a_it = address_map.begin(); + a_it != address_map.end(); a_it++) { - const a_rect &a_rec=a_it->second; + const a_rect &a_rec = a_it->second; // This is quadratic in the number of writes per address. - for(event_listt::const_iterator - w_prime=a_rec.writes.begin(); - w_prime!=a_rec.writes.end(); + for(event_listt::const_iterator w_prime = a_rec.writes.begin(); + w_prime != a_rec.writes.end(); ++w_prime) { - event_listt::const_iterator next=w_prime; + event_listt::const_iterator next = w_prime; ++next; - for(event_listt::const_iterator w=next; - w!=a_rec.writes.end(); - ++w) + for(event_listt::const_iterator w = next; w != a_rec.writes.end(); ++w) { exprt ws1, ws2; - if(po(*w_prime, *w) && - !program_order_is_relaxed(*w_prime, *w)) + if(po(*w_prime, *w) && !program_order_is_relaxed(*w_prime, *w)) { - ws1=true_exprt(); - ws2=false_exprt(); + ws1 = true_exprt(); + ws2 = false_exprt(); } - else if(po(*w, *w_prime) && - !program_order_is_relaxed(*w, *w_prime)) + else if(po(*w, *w_prime) && !program_order_is_relaxed(*w, *w_prime)) { - ws1=false_exprt(); - ws2=true_exprt(); + ws1 = false_exprt(); + ws2 = true_exprt(); } else { - ws1=before(*w_prime, *w); - ws2=before(*w, *w_prime); + ws1 = before(*w_prime, *w); + ws2 = before(*w, *w_prime); } // smells like cubic - for(choice_symbolst::const_iterator - c_it=choice_symbols.begin(); - c_it!=choice_symbols.end(); + for(choice_symbolst::const_iterator c_it = choice_symbols.begin(); + c_it != choice_symbols.end(); c_it++) { - event_it r=c_it->first.first; - exprt rf=c_it->second; + event_it r = c_it->first.first; + exprt rf = c_it->second; exprt cond; cond.make_nil(); if(c_it->first.second == *w_prime && ws1 != false) { - exprt fr=before(r, *w); + exprt fr = before(r, *w); + + // Alias conditions for the involved events + exprt r_alias = alias_condition(r, a_it->first); + exprt w_prime_alias = alias_condition(*w_prime, a_it->first); + exprt w_alias = alias_condition(*w, a_it->first); // the guard of w_prime follows from rf; with rfi // optimisation such as the previous write_symbol_primed // it would even be wrong to add this guard - cond= - implies_exprt( - and_exprt(r->guard, (*w)->guard, ws1, rf), - fr); + cond = implies_exprt( + conjunction( + {r->guard, + (*w)->guard, + ws1, + rf, + r_alias, + w_prime_alias, + w_alias}), + fr); } else if(c_it->first.second == *w && ws2 != false) { - exprt fr=before(r, *w_prime); + exprt fr = before(r, *w_prime); + + // Alias conditions for the involved events + exprt r_alias = alias_condition(r, a_it->first); + exprt w_alias = alias_condition(*w, a_it->first); + exprt w_prime_alias = alias_condition(*w_prime, a_it->first); // the guard of w follows from rf; with rfi // optimisation such as the previous write_symbol_primed // it would even be wrong to add this guard - cond= - implies_exprt( - and_exprt(r->guard, (*w_prime)->guard, ws2, rf), - fr); + cond = implies_exprt( + conjunction( + {r->guard, + (*w_prime)->guard, + ws2, + rf, + r_alias, + w_alias, + w_prime_alias}), + fr); } if(cond.is_not_nil()) - add_constraint(equation, - cond, "fr", r->source); + add_constraint(equation, cond, "fr", r->source); } } } diff --git a/src/goto-symex/memory_model_sc.h b/src/goto-symex/memory_model_sc.h index 82782af6e53..1fdb0e73824 100644 --- a/src/goto-symex/memory_model_sc.h +++ b/src/goto-symex/memory_model_sc.h @@ -14,16 +14,18 @@ Author: Michael Tautschnig, michael.tautschnig@cs.ox.ac.uk #include "memory_model.h" -class memory_model_sct:public memory_model_baset +class memory_model_sct : public memory_model_baset { public: - explicit memory_model_sct(const namespacet &_ns): - memory_model_baset(_ns) + explicit memory_model_sct(const namespacet &_ns) : memory_model_baset(_ns) { } virtual void operator()(symex_target_equationt &equation, message_handlert &); + void + add_stage(refinement_staget stage, symex_target_equationt &equation) override; + protected: virtual exprt before(event_it e1, event_it e2); virtual bool program_order_is_relaxed( diff --git a/src/goto-symex/partial_order_concurrency.cpp b/src/goto-symex/partial_order_concurrency.cpp index 60bf293ef2f..bd5f9c25757 100644 --- a/src/goto-symex/partial_order_concurrency.cpp +++ b/src/goto-symex/partial_order_concurrency.cpp @@ -13,10 +13,35 @@ Author: Michael Tautschnig, michael.tautschnig@cs.ox.ac.uk #include #include +#include +#include +#include +#include #include +#include + +/// Check whether an SSA step refers to a may-alias object created for +/// concurrent shared pointer dereferences. May-alias symbols are created +/// in symex_dereference.cpp and have their source pointer stored in +/// symbolt::value. We detect them by checking for the "concurrency::may_alias" +/// prefix in the object name. +/// See issue #790 and Alglave/Kroening/Tautschnig CAV 2013 for background +/// on the partial-order encoding that these objects participate in. +static bool is_may_alias_step(const SSA_stept &step) +{ + return id2string(step.ssa_lhs.get_object_name()) + .find("concurrency::may_alias") != std::string::npos; +} + +/// Check whether an address in the address_map corresponds to a may-alias +/// object. +static bool is_may_alias_address(const irep_idt &address) +{ + return id2string(address).find("concurrency::may_alias") != std::string::npos; +} -partial_order_concurrencyt::partial_order_concurrencyt( - const namespacet &_ns):ns(_ns) +partial_order_concurrencyt::partial_order_concurrencyt(const namespacet &_ns) + : ns(_ns) { } @@ -28,39 +53,45 @@ void partial_order_concurrencyt::add_init_writes( symex_target_equationt &equation) { std::unordered_set init_done; - bool spawn_seen=false; + bool spawn_seen = false; symex_target_equationt::SSA_stepst init_steps; - for(eventst::const_iterator - e_it=equation.SSA_steps.begin(); - e_it!=equation.SSA_steps.end(); + for(eventst::const_iterator e_it = equation.SSA_steps.begin(); + e_it != equation.SSA_steps.end(); e_it++) { if(e_it->is_spawn()) { - spawn_seen=true; + spawn_seen = true; continue; } - else if(!e_it->is_shared_read() && - !e_it->is_shared_write()) + else if(!e_it->is_shared_read() && !e_it->is_shared_write()) continue; - const irep_idt &a=address(e_it); + const irep_idt &a = address(e_it); - if(init_done.find(a)!=init_done.end()) + if(init_done.find(a) != init_done.end()) continue; + // Skip may-alias addresses -- their initialization is handled through + // the aliasing constraints in the memory model, not through init writes. + if(is_may_alias_step(*e_it)) + { + init_done.insert(a); + continue; + } + if(spawn_seen || e_it->is_shared_read() || e_it->guard != true) { init_steps.emplace_back( e_it->source, goto_trace_stept::typet::SHARED_WRITE); SSA_stept &SSA_step = init_steps.back(); - SSA_step.guard=true_exprt(); + SSA_step.guard = true_exprt(); // no SSA L2 index, thus nondet value SSA_step.ssa_lhs = remove_level_2(e_it->ssa_lhs); - SSA_step.atomic_section_id=0; + SSA_step.atomic_section_id = 0; } init_done.insert(a); @@ -78,40 +109,102 @@ void partial_order_concurrencyt::build_event_lists( // a per-thread counter std::map counter; - for(eventst::const_iterator - e_it=equation.SSA_steps.begin(); - e_it!=equation.SSA_steps.end(); + for(eventst::const_iterator e_it = equation.SSA_steps.begin(); + e_it != equation.SSA_steps.end(); e_it++) { - if(e_it->is_shared_read() || - e_it->is_shared_write() || - e_it->is_spawn()) + if(e_it->is_shared_read() || e_it->is_shared_write() || e_it->is_spawn()) { - unsigned thread_nr=e_it->source.thread_nr; + unsigned thread_nr = e_it->source.thread_nr; if(!e_it->is_spawn()) { - a_rect &a_rec=address_map[address(e_it)]; + const irep_idt &addr = address(e_it); + a_rect &a_rec = address_map[addr]; if(e_it->is_shared_read()) a_rec.reads.push_back(e_it); else // must be write a_rec.writes.push_back(e_it); + + // Record a representative L1 symbol for non-may-alias addresses + if( + !is_may_alias_step(*e_it) && + address_representatives.find(addr) == address_representatives.end()) + { + address_representatives.emplace(addr, remove_level_2(e_it->ssa_lhs)); + } } // maps an event id to a per-thread counter - unsigned cnt=counter[thread_nr]++; - numbering[e_it]=cnt; + unsigned cnt = counter[thread_nr]++; + numbering[e_it] = cnt; + } + } + + // Second pass: for each may-alias event, add it to all non-may-alias + // addresses' read/write lists so it participates in their constraints. + // Only add to addresses where the base type is compatible. + for(eventst::const_iterator e_it = equation.SSA_steps.begin(); + e_it != equation.SSA_steps.end(); + e_it++) + { + if(!e_it->is_shared_read() && !e_it->is_shared_write()) + continue; + + if(!is_may_alias_step(*e_it)) + continue; + + // This is a may-alias event -- add it to all other non-may-alias addresses + for(auto &addr_entry : address_map) + { + // Skip the may-alias object's own address entry + if(addr_entry.first == address(e_it)) + continue; + + // Skip other may-alias addresses + if(is_may_alias_address(addr_entry.first)) + continue; + + // Only add to addresses where the types are compatible for aliasing. + // We check that the base types match after stripping signedness, + // or that byte_extract can meaningfully reinterpret the value + // (target is at least as large as the may-alias type). + auto rep_it = address_representatives.find(addr_entry.first); + if(rep_it == address_representatives.end()) + continue; + const typet &target_type = rep_it->second.type(); + const typet &alias_type = e_it->ssa_lhs.type(); + if(target_type != alias_type) + { + auto alias_bits = pointer_offset_bits(alias_type, ns); + auto target_bits = pointer_offset_bits(target_type, ns); + if(!alias_bits.has_value() || !target_bits.has_value()) + continue; + // Target must be at least as large as the may-alias type + // for byte_extract to be well-defined, and both must be + // bitvector-like types (not pointers, structs, etc.) + if( + *target_bits < *alias_bits || target_type.id() == ID_pointer || + alias_type.id() == ID_pointer) + { + continue; + } + } + + if(e_it->is_shared_read()) + addr_entry.second.reads.push_back(e_it); + else + addr_entry.second.writes.push_back(e_it); } } messaget log{message_handler}; - for(address_mapt::const_iterator - a_it=address_map.begin(); - a_it!=address_map.end(); + for(address_mapt::const_iterator a_it = address_map.begin(); + a_it != address_map.end(); a_it++) { - const a_rect &a_rec=a_it->second; + const a_rect &a_rec = a_it->second; if(a_rec.reads.empty()) continue; @@ -120,34 +213,30 @@ void partial_order_concurrencyt::build_event_lists( } } -irep_idt partial_order_concurrencyt::rw_clock_id( - event_it event, - axiomt axiom) +irep_idt partial_order_concurrencyt::rw_clock_id(event_it event, axiomt axiom) { if(event->is_shared_write()) - return id2string(id(event))+"$wclk$"+std::to_string(axiom); + return id2string(id(event)) + "$wclk$" + std::to_string(axiom); else if(event->is_shared_read()) - return id2string(id(event))+"$rclk$"+std::to_string(axiom); + return id2string(id(event)) + "$rclk$" + std::to_string(axiom); else UNREACHABLE; } -symbol_exprt partial_order_concurrencyt::clock( - event_it event, - axiomt axiom) +symbol_exprt partial_order_concurrencyt::clock(event_it event, axiomt axiom) { PRECONDITION(!numbering.empty()); irep_idt identifier; if(event->is_shared_write()) - identifier=rw_clock_id(event, axiom); + identifier = rw_clock_id(event, axiom); else if(event->is_shared_read()) - identifier=rw_clock_id(event, axiom); + identifier = rw_clock_id(event, axiom); else if(event->is_spawn()) { - identifier= - "t"+std::to_string(event->source.thread_nr+1)+"$"+ - std::to_string(numbering[event])+"$spwnclk$"+std::to_string(axiom); + identifier = "t" + std::to_string(event->source.thread_nr + 1) + "$" + + std::to_string(numbering[event]) + "$spwnclk$" + + std::to_string(axiom); } else UNREACHABLE; @@ -164,32 +253,29 @@ void partial_order_concurrencyt::build_clock_type() } exprt partial_order_concurrencyt::before( - event_it e1, event_it e2, unsigned axioms) + event_it e1, + event_it e2, + unsigned axioms) { - const axiomt axiom_bits[]= - { - AX_SC_PER_LOCATION, - AX_NO_THINAIR, - AX_OBSERVATION, - AX_PROPAGATION - }; + const axiomt axiom_bits[] = { + AX_SC_PER_LOCATION, AX_NO_THINAIR, AX_OBSERVATION, AX_PROPAGATION}; exprt::operandst ops; - ops.reserve(sizeof(axiom_bits)/sizeof(axiomt)); + ops.reserve(sizeof(axiom_bits) / sizeof(axiomt)); - for(int i=0; iatomic_section_id!=0 && - e1->atomic_section_id==e2->atomic_section_id) + if( + e1->atomic_section_id != 0 && + e1->atomic_section_id == e2->atomic_section_id) ops.push_back(equal_exprt(clock(e1, ax), clock(e2, ax))); else - ops.push_back( - binary_relation_exprt(clock(e1, ax), ID_lt, clock(e2, ax))); + ops.push_back(binary_relation_exprt(clock(e1, ax), ID_lt, clock(e2, ax))); } POSTCONDITION(!ops.empty()); @@ -203,8 +289,41 @@ void partial_order_concurrencyt::add_constraint( const std::string &msg, const symex_targett::sourcet &source) const { - exprt tmp=cond; + exprt tmp = cond; simplify(tmp, ns); equation.constraint(tmp, msg, source); } + +exprt partial_order_concurrencyt::alias_condition( + event_it event, + const irep_idt &target_address) const +{ + const irep_idt &obj_name = event->ssa_lhs.get_object_name(); + if(!is_may_alias_step(*event)) + return true_exprt{}; + + // Look up the source pointer from the symbol table via the object name + const symbolt *sym_ptr; + if(ns.lookup(obj_name, sym_ptr) || sym_ptr->value.is_nil()) + return true_exprt{}; + + const exprt &source_pointer = sym_ptr->value; + + // Find a representative non-may-alias event at the target address to build + // the address-of expression for comparison. + auto rep_it = address_representatives.find(target_address); + if(rep_it == address_representatives.end()) + return true_exprt{}; + + const ssa_exprt &target_l1_sym = rep_it->second; + + // Build: pointer_object(source_pointer) == pointer_object(&target) + const typet po_type = unsignedbv_typet{config.bv_encoding.object_bits}; + + address_of_exprt target_addr(target_l1_sym); + + return equal_exprt{ + pointer_object_exprt{source_pointer, po_type}, + pointer_object_exprt{target_addr, po_type}}; +} diff --git a/src/goto-symex/partial_order_concurrency.h b/src/goto-symex/partial_order_concurrency.h index 3e48c8cfd1b..7b5aae41dc9 100644 --- a/src/goto-symex/partial_order_concurrency.h +++ b/src/goto-symex/partial_order_concurrency.h @@ -58,6 +58,15 @@ class partial_order_concurrencyt typedef std::map address_mapt; address_mapt address_map; + // For each address, store the L1 ssa_exprt of a representative + // non-may-alias event (used to build alias conditions). + typedef std::map address_representativet; + address_representativet address_representatives; + + /// For a may-alias event, return the condition under which it aliases + /// with the given address. For non-may-alias events, return true. + exprt alias_condition(event_it event, const irep_idt &target_address) const; + /// First call \ref add_init_writes then for each shared read/write (or /// spawn) populate: /// 1) the _address_map_ (with a list of reads/writes for the address of each diff --git a/src/goto-symex/symex_assign.cpp b/src/goto-symex/symex_assign.cpp index 15fd2358236..27fd4b12918 100644 --- a/src/goto-symex/symex_assign.cpp +++ b/src/goto-symex/symex_assign.cpp @@ -217,8 +217,7 @@ void symex_assignt::assign_non_struct_symbol( assignment.rhs, ns, symex_config.simplify_opt, - symex_config.constant_propagation, - symex_config.allow_pointer_unsoundness) + symex_config.constant_propagation) .get(); state.record_events.push(false); @@ -254,12 +253,7 @@ void symex_assignt::assign_non_struct_symbol( { // Split composite symbol lhs into its components state.field_sensitivity.field_assignments( - ns, - state, - l1_lhs, - assignment.rhs, - target, - symex_config.allow_pointer_unsoundness); + ns, state, l1_lhs, assignment.rhs, target); } } diff --git a/src/goto-symex/symex_atomic_section.cpp b/src/goto-symex/symex_atomic_section.cpp index 231c40303e7..45ee547abb6 100644 --- a/src/goto-symex/symex_atomic_section.cpp +++ b/src/goto-symex/symex_atomic_section.cpp @@ -58,7 +58,7 @@ void goto_symext::symex_atomic_end(statet &state) ++it) read_guard|=*it; exprt read_guard_expr=read_guard.as_expr(); - do_simplify(read_guard_expr, state.value_set); + do_simplify(read_guard_expr, state); target.shared_read( read_guard_expr, @@ -80,7 +80,7 @@ void goto_symext::symex_atomic_end(statet &state) ++it) write_guard|=*it; exprt write_guard_expr=write_guard.as_expr(); - do_simplify(write_guard_expr, state.value_set); + do_simplify(write_guard_expr, state); target.shared_write( write_guard_expr, diff --git a/src/goto-symex/symex_builtin_functions.cpp b/src/goto-symex/symex_builtin_functions.cpp index 0ffc7b606f6..c31bc0eab4d 100644 --- a/src/goto-symex/symex_builtin_functions.cpp +++ b/src/goto-symex/symex_builtin_functions.cpp @@ -293,7 +293,7 @@ void goto_symext::symex_va_start( array = clean_expr(std::move(array), state, false); array = state.rename(std::move(array), ns).get(); - do_simplify(array, state.value_set); + do_simplify(array, state); symex_assign(state, va_array.symbol_expr(), std::move(array)); exprt rhs = address_of_exprt{index_exprt{ @@ -388,7 +388,7 @@ void goto_symext::symex_printf( exprt tmp_rhs = rhs; clean_expr(tmp_rhs, state, false); tmp_rhs = state.rename(std::move(tmp_rhs), ns).get(); - do_simplify(tmp_rhs, state.value_set); + do_simplify(tmp_rhs, state); const exprt::operandst &operands=tmp_rhs.operands(); std::list args; @@ -426,7 +426,7 @@ void goto_symext::symex_printf( parameter = to_address_of_expr(parameter).object(); clean_expr(parameter, state, false); parameter = state.rename(std::move(parameter), ns).get(); - do_simplify(parameter, state.value_set); + do_simplify(parameter, state); args.push_back(std::move(parameter)); } @@ -454,7 +454,7 @@ void goto_symext::symex_input( for(std::size_t i=1; i #include #include #include +#include #include #include #include @@ -23,10 +22,13 @@ Author: Daniel Kroening, kroening@kroening.com #include #include "expr_skeleton.h" +#include "goto_symex.h" #include "path_storage.h" #include "symex_assign.h" #include "symex_dereference_state.h" +#include + /// Transforms an lvalue expression by replacing any dereference operations it /// contains with explicit references to the objects they may point to (using /// \ref goto_symext::dereference_rec), and translates `byte_extract,` `member` @@ -47,20 +49,21 @@ exprt goto_symext::address_arithmetic( { exprt result; - if(expr.id()==ID_byte_extract_little_endian || - expr.id()==ID_byte_extract_big_endian) + if( + expr.id() == ID_byte_extract_little_endian || + expr.id() == ID_byte_extract_big_endian) { // address_of(byte_extract(op, offset, t)) is // address_of(op) + offset with adjustments for arrays - const byte_extract_exprt &be=to_byte_extract_expr(expr); + const byte_extract_exprt &be = to_byte_extract_expr(expr); // recursive call result = address_arithmetic(be.op(), state, keep_array); if(be.op().type().id() == ID_array && result.id() == ID_address_of) { - address_of_exprt &a=to_address_of_expr(result); + address_of_exprt &a = to_address_of_expr(result); // turn &a of type T[i][j] into &(a[0][0]) for(const typet *t = &(to_type_with_subtype(a.type()).subtype()); @@ -70,27 +73,26 @@ exprt goto_symext::address_arithmetic( } // do (expr.type() *)(((char *)op)+offset) - result=typecast_exprt(result, pointer_type(char_type())); + result = typecast_exprt(result, pointer_type(char_type())); // there could be further dereferencing in the offset - exprt offset=be.offset(); + exprt offset = be.offset(); dereference_rec(offset, state, false, false); - result=plus_exprt(result, offset); + result = plus_exprt(result, offset); // treat &array as &array[0] const typet &expr_type = expr.type(); typet dest_type_subtype; - if(expr_type.id()==ID_array && !keep_array) + if(expr_type.id() == ID_array && !keep_array) dest_type_subtype = to_array_type(expr_type).element_type(); else - dest_type_subtype=expr_type; + dest_type_subtype = expr_type; - result=typecast_exprt(result, pointer_type(dest_type_subtype)); + result = typecast_exprt(result, pointer_type(dest_type_subtype)); } - else if(expr.id()==ID_index || - expr.id()==ID_member) + else if(expr.id() == ID_index || expr.id() == ID_member) { object_descriptor_exprt ode; ode.build(expr, ns); @@ -101,20 +103,20 @@ exprt goto_symext::address_arithmetic( // recursive call result = address_arithmetic(be, state, keep_array); - do_simplify(result, state.value_set); + do_simplify(result, state); } - else if(expr.id()==ID_dereference) + else if(expr.id() == ID_dereference) { // ANSI-C guarantees &*p == p no matter what p is, // even if it's complete garbage // just grab the pointer, but be wary of further dereferencing // in the pointer itself - result=to_dereference_expr(expr).pointer(); + result = to_dereference_expr(expr).pointer(); dereference_rec(result, state, false, false); } - else if(expr.id()==ID_if) + else if(expr.id() == ID_if) { - if_exprt if_expr=to_if_expr(expr); + if_exprt if_expr = to_if_expr(expr); // the condition is not an address dereference_rec(if_expr.cond(), state, false, false); @@ -125,15 +127,14 @@ exprt goto_symext::address_arithmetic( if_expr.false_case() = address_arithmetic(if_expr.false_case(), state, keep_array); - result=if_expr; + result = if_expr; } - else if(expr.id()==ID_symbol || - expr.id()==ID_string_constant || - expr.id()==ID_label || - expr.id()==ID_array) + else if( + expr.id() == ID_symbol || expr.id() == ID_string_constant || + expr.id() == ID_label || expr.id() == ID_array) { // give up, just dereference - result=expr; + result = expr; dereference_rec(result, state, false, false); // turn &array into &array[0] @@ -141,7 +142,7 @@ exprt goto_symext::address_arithmetic( result = index_exprt(result, from_integer(0, c_index_type())); // handle field-sensitive SSA symbol - mp_integer offset=0; + mp_integer offset = 0; if(is_ssa_expr(expr)) { auto offset_opt = compute_pointer_offset(expr, ns); @@ -149,7 +150,7 @@ exprt goto_symext::address_arithmetic( offset = *offset_opt; } - if(offset>0) + if(offset > 0) { const byte_extract_exprt be = make_byte_extract( to_ssa_expr(expr).get_l1_object(), @@ -158,10 +159,10 @@ exprt goto_symext::address_arithmetic( result = address_arithmetic(be, state, keep_array); - do_simplify(result, state.value_set); + do_simplify(result, state); } else - result=address_of_exprt(result); + result = address_of_exprt(result); } else if(expr.id() == ID_typecast) { @@ -196,7 +197,8 @@ exprt goto_symext::address_arithmetic( symbol_exprt goto_symext::cache_dereference(exprt &dereference_result, statet &state) { - auto const cache_key = [&] { + auto const cache_key = [&] + { auto cache_key = state.field_sensitivity.apply(ns, state, dereference_result, false); if(auto let_expr = expr_try_dynamic_cast(dereference_result)) @@ -249,6 +251,91 @@ goto_symext::cache_dereference(exprt &dereference_result, statet &state) return cache_symbol_expr; } +/// Check whether the pointer expression used for dereferencing involves +/// shared state. If it does, return the first shared symbol found. +/// Uses \p ns and \p dirty to identify potentially-shared objects. +/// +/// In multi-threaded mode, a local pointer may have been assigned from +/// a shared source (e.g., `int *local = shared_ptr`). To detect this, +/// we also query the value set: if any of the pointer's possible targets +/// are shared objects, the dereference is treated as shared. +/// \return The shared symbol expression if found, empty optional otherwise. +static std::optional find_shared_pointer_in_dereference( + const exprt &expr, + const incremental_dirtyt &dirty, + const namespacet &ns, + const goto_symex_statet &state) +{ + for(auto it = expr.depth_cbegin(); it != expr.depth_cend(); /* no ++it */) + { + if(it->id() == ID_address_of) + { + it.next_sibling_or_parent(); + continue; + } + else if(auto sym_expr = expr_try_dynamic_cast(*it)) + { + const irep_idt obj_name = is_ssa_expr(*sym_expr) + ? to_ssa_expr(*sym_expr).get_object_name() + : sym_expr->get_identifier(); + if(obj_name == goto_symex_statet::guard_identifier()) + { + ++it; + continue; + } + + // Direct check: is this symbol itself shared? + // Exclude __spawned_thread parameters — they are set by the parent + // thread before the child starts and are effectively thread-local + // copies of the pthread_create arguments. + if( + (ns.lookup(obj_name).is_shared() || dirty(obj_name)) && + id2string(obj_name).find("__spawned_thread::") == std::string::npos) + { + return *sym_expr; + } + } + ++it; + } + + // Indirect check: for simple pointer-typed symbol expressions (not + // member accesses or array indexing), query the value set to see if + // any target is a shared global variable. This catches cases like + // `int *local = shared_ptr` where the local pointer itself is not + // shared but its value derives from a shared source. + // We restrict to simple symbols to avoid false positives from struct + // member accesses through thread arguments (e.g., args->ptr). + if( + expr.type().id() == ID_pointer && is_ssa_expr(expr) && + to_ssa_expr(expr).get_original_expr().id() == ID_symbol) + { + auto value_set_entries = state.value_set.get_value_set(expr, ns); + for(const auto &entry : value_set_entries) + { + for(auto vs_it = entry.depth_cbegin(); vs_it != entry.depth_cend(); + ++vs_it) + { + if(auto sym = expr_try_dynamic_cast(*vs_it)) + { + const irep_idt name = is_ssa_expr(*sym) + ? to_ssa_expr(*sym).get_object_name() + : sym->get_identifier(); + const symbolt *target_sym; + if( + !ns.lookup(name, target_sym) && target_sym->is_shared() && + !target_sym->type.get_bool(ID_C_is_failed_symbol) && + !target_sym->type.get_bool(ID_C_dynamic)) + { + return to_symbol_expr(expr); + } + } + } + } + } + + return {}; +} + /// If \p expr is a \ref dereference_exprt, replace it with explicit references /// to the objects it may point to. Otherwise recursively apply this function to /// \p expr's operands, with special cases for address-of (handled by \ref @@ -266,7 +353,7 @@ void goto_symext::dereference_rec( bool write, bool is_in_binding_expression) { - if(expr.id()==ID_dereference) + if(expr.id() == ID_dereference) { bool expr_is_not_null = false; @@ -308,7 +395,7 @@ void goto_symext::dereference_rec( tmp1 = state.rename(tmp1, ns).get(); - do_simplify(tmp1, state.value_set); + do_simplify(tmp1, state); if(symex_config.run_validation_checks) { @@ -321,6 +408,40 @@ void goto_symext::dereference_rec( tmp1 = state.field_sensitivity.apply(ns, state, std::move(tmp1), false); + // In multi-threaded mode, if the pointer expression involves shared state, + // bypass value-set dereference and create a fresh may-alias object instead. + if(state.threads.size() > 1 && !symex_config.allow_pointer_unsoundness) + { + auto shared_sym = + find_shared_pointer_in_dereference(tmp1, path_storage.dirty, ns, state); + if(shared_sym.has_value()) + { + // Create a fresh symbol to represent what the shared pointer may + // point to. The type is the pointed-to type (i.e. the type of the + // dereference expression itself). + symbolt &may_alias_symbol = get_fresh_aux_symbol( + expr.type(), + "concurrency", + "may_alias", + state.source.pc->source_location(), + language_mode, + state.symbol_table); + may_alias_symbol.is_thread_local = false; + may_alias_symbol.is_file_local = false; + + // Store the L2-renamed source pointer so the memory model can + // build alias conditions using the correct SSA version. The L2 + // version reflects the value of the pointer at this program point. + ssa_exprt l2_ptr = to_ssa_expr( + state.rename(shared_sym.value(), ns) + .get()); + may_alias_symbol.value = state.rename(l2_ptr, ns).get(); + + expr = may_alias_symbol.symbol_expr(); + return; + } + } + // we need to set up some elaborate call-backs symex_dereference_statet symex_dereference_state(state, ns); @@ -337,7 +458,6 @@ void goto_symext::dereference_rec( dereference.dereference(tmp1, symex_config.show_points_to_sets); // std::cout << "**** " << format(tmp2) << '\n'; - // this may yield a new auto-object trigger_auto_object(tmp2, state); @@ -369,37 +489,38 @@ void goto_symext::dereference_rec( // where a is a zero-sized array. This gets // re-written into *(&x.a+i) - index_exprt index_expr=to_index_expr(expr); + index_exprt index_expr = to_index_expr(expr); address_of_exprt address_of_expr(index_expr.array()); - address_of_expr.type()=pointer_type(expr.type()); + address_of_expr.type() = pointer_type(expr.type()); dereference_exprt tmp{plus_exprt{address_of_expr, index_expr.index()}}; - tmp.add_source_location()=expr.source_location(); + tmp.add_source_location() = expr.source_location(); // recursive call dereference_rec(tmp, state, write, is_in_binding_expression); expr.swap(tmp); } - else if(expr.id()==ID_index && - to_index_expr(expr).array().type().id()==ID_pointer) + else if( + expr.id() == ID_index && + to_index_expr(expr).array().type().id() == ID_pointer) { // old stuff, will go away UNREACHABLE; } - else if(expr.id()==ID_address_of) + else if(expr.id() == ID_address_of) { - address_of_exprt &address_of_expr=to_address_of_expr(expr); + address_of_exprt &address_of_expr = to_address_of_expr(expr); - exprt &object=address_of_expr.object(); + exprt &object = address_of_expr.object(); expr = address_arithmetic( object, state, to_pointer_type(expr.type()).base_type().id() == ID_array); } - else if(expr.id()==ID_typecast) + else if(expr.id() == ID_typecast) { - exprt &tc_op=to_typecast_expr(expr).op(); + exprt &tc_op = to_typecast_expr(expr).op(); // turn &array into &array[0] when casting to pointer-to-element-type if( @@ -489,10 +610,13 @@ void goto_symext::dereference(exprt &expr, statet &state, bool write) // Symbols whose address is taken need to be renamed to level 1 // in order to distinguish addresses of local variables // from different frames. - expr = apply_to_objects_in_dereference(std::move(expr), [&](exprt e) { - return state.field_sensitivity.apply( - ns, state, state.rename(std::move(e), ns).get(), false); - }); + expr = apply_to_objects_in_dereference( + std::move(expr), + [&](exprt e) + { + return state.field_sensitivity.apply( + ns, state, state.rename(std::move(e), ns).get(), false); + }); // start the recursion! dereference_rec(expr, state, write, false); @@ -515,7 +639,7 @@ void goto_symext::dereference(exprt &expr, statet &state, bool write) // when all we need is // s1 := s1 with (member := X) [and guard b] // s2 := s2 with (member := X) [and guard !b] - do_simplify(expr, state.value_set); + do_simplify(expr, state); if(symex_config.run_validation_checks) { diff --git a/src/goto-symex/symex_goto.cpp b/src/goto-symex/symex_goto.cpp index b61e48f36a5..2f9dcddf728 100644 --- a/src/goto-symex/symex_goto.cpp +++ b/src/goto-symex/symex_goto.cpp @@ -119,7 +119,7 @@ void goto_symext::symex_goto(statet &state) // generate assume(false) or a suitable negation if this // instruction is a conditional goto exprt negated_guard = boolean_negate(new_guard); - do_simplify(negated_guard, state.value_set); + do_simplify(negated_guard, state); log.statistics() << "replacing self-loop at " << state.source.pc->source_location() << " by assume(" << from_expr(ns, state.source.function_id, negated_guard) diff --git a/src/goto-symex/symex_main.cpp b/src/goto-symex/symex_main.cpp index a6ca641f16e..fe4e59497f9 100644 --- a/src/goto-symex/symex_main.cpp +++ b/src/goto-symex/symex_main.cpp @@ -157,7 +157,7 @@ void goto_symext::symex_assert( // First, push negations in and perhaps convert existential quantifiers into // universals: if(has_subexpr(condition, ID_exists) || has_subexpr(condition, ID_forall)) - do_simplify(condition, state.value_set); + do_simplify(condition, state); // Second, L2-rename universal quantifiers: if(has_subexpr(condition, ID_forall)) @@ -167,7 +167,7 @@ void goto_symext::symex_assert( exprt l2_condition = state.rename(std::move(condition), ns).get(); // now try simplifier on it - do_simplify(l2_condition, state.value_set); + do_simplify(l2_condition, state); std::string msg = id2string(instruction.source_location().get_comment()); if(msg.empty()) @@ -200,7 +200,7 @@ void goto_symext::symex_assume(statet &state, const exprt &cond) { exprt simplified_cond = clean_expr(cond, state, false); simplified_cond = state.rename(std::move(simplified_cond), ns).get(); - do_simplify(simplified_cond, state.value_set); + do_simplify(simplified_cond, state); // It would be better to call try_filter_value_sets after apply_condition, // but it is not currently possible. See the comment at the beginning of @@ -848,13 +848,13 @@ void goto_symext::try_filter_value_sets( // without another round of constant propagation. // It would be sufficient to replace this call to do_simplify() with // something that just replaces `*&x` with `x` whenever it finds it. - do_simplify(modified_condition, state.value_set); + do_simplify(modified_condition, state); state.record_events.push(false); modified_condition = state.rename(std::move(modified_condition), ns).get(); state.record_events.pop(); - do_simplify(modified_condition, state.value_set); + do_simplify(modified_condition, state); if(jump_taken_value_set && modified_condition == false) { diff --git a/src/goto-symex/symex_other.cpp b/src/goto-symex/symex_other.cpp index c5e046356bf..ee55abf9273 100644 --- a/src/goto-symex/symex_other.cpp +++ b/src/goto-symex/symex_other.cpp @@ -151,14 +151,14 @@ void goto_symext::symex_other( { src_array = make_byte_extract( src_array, from_integer(0, c_index_type()), dest_array.type()); - do_simplify(src_array, state.value_set); + do_simplify(src_array, state); } else { // ID_array_replace dest_array = make_byte_extract( dest_array, from_integer(0, c_index_type()), src_array.type()); - do_simplify(dest_array, state.value_set); + do_simplify(dest_array, state); } } @@ -197,7 +197,7 @@ void goto_symext::symex_other( { auto array_size = size_of_expr(array_expr.type(), ns); CHECK_RETURN(array_size.has_value()); - do_simplify(array_size.value(), state.value_set); + do_simplify(array_size.value(), state); array_expr = make_byte_extract( array_expr, from_integer(0, c_index_type()), diff --git a/unit/goto-symex/goto_symex_state.cpp b/unit/goto-symex/goto_symex_state.cpp index 9042248686e..aab4ccdb8a8 100644 --- a/unit/goto-symex/goto_symex_state.cpp +++ b/unit/goto-symex/goto_symex_state.cpp @@ -65,8 +65,7 @@ SCENARIO( WHEN("Symbol `foo` is assigned constant integer `475`") { const exprt rhs1 = from_integer(475, int_type); - const auto result = - state.assignment(ssa_foo, rhs1, ns, true, true, false); + const auto result = state.assignment(ssa_foo, rhs1, ns, true, true); THEN("The result is `foo` renamed to L2") { REQUIRE(result.get().get_identifier() == "foo!0#1"); @@ -88,8 +87,7 @@ SCENARIO( THEN("Symbol `foo` is assigned another integer 1834") { const exprt rhs2 = from_integer(1834, int_type); - const auto result2 = - state.assignment(ssa_foo, rhs2, ns, true, true, false); + const auto result2 = state.assignment(ssa_foo, rhs2, ns, true, true); THEN("The level 2 index of `foo` is incremented") { @@ -128,7 +126,7 @@ SCENARIO( { const null_pointer_exprt null_pointer{int_pointer_type}; const auto result = - state.assignment(ssa_foo, null_pointer, ns, true, true, false); + state.assignment(ssa_foo, null_pointer, ns, true, true); THEN("The result is `foo` renamed to L2") { REQUIRE(result.get().get_identifier() == "foo!0#1"); @@ -155,7 +153,7 @@ SCENARIO( const address_of_exprt rhs2{int_value}; const renamedt l2_rhs2 = state.rename(rhs2, ns); const auto result2 = - state.assignment(ssa_foo, l2_rhs2.get(), ns, true, true, false); + state.assignment(ssa_foo, l2_rhs2.get(), ns, true, true); THEN("The level 2 index of `foo` is incremented") {