diff options
Diffstat (limited to 'lib/tsan/lit_tests/longjmp4.cc')
-rw-r--r-- | lib/tsan/lit_tests/longjmp4.cc | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/lib/tsan/lit_tests/longjmp4.cc b/lib/tsan/lit_tests/longjmp4.cc deleted file mode 100644 index 6b0526ef3a66..000000000000 --- a/lib/tsan/lit_tests/longjmp4.cc +++ /dev/null @@ -1,51 +0,0 @@ -// RUN: %clang_tsan -O1 %s -o %t && not %t 2>&1 | FileCheck %s -#include <pthread.h> -#include <stdio.h> -#include <stdlib.h> -#include <setjmp.h> -#include <string.h> - -void bar(jmp_buf env) { - volatile int x = 42; - jmp_buf env2; - memcpy(env2, env, sizeof(jmp_buf)); - longjmp(env2, 42); - x++; -} - -void foo(jmp_buf env) { - volatile int x = 42; - bar(env); - x++; -} - -void badguy() { - pthread_mutex_t mtx; - pthread_mutex_init(&mtx, 0); - pthread_mutex_lock(&mtx); - pthread_mutex_destroy(&mtx); -} - -void mymain() { - jmp_buf env; - if (setjmp(env) == 42) { - badguy(); - return; - } - foo(env); - printf("FAILED\n"); -} - -int main() { - volatile int x = 42; - mymain(); - return x; -} - -// CHECK-NOT: FAILED -// CHECK: WARNING: ThreadSanitizer: destroy of a locked mutex -// CHECK: #0 pthread_mutex_destroy -// CHECK: #1 badguy -// CHECK: #2 mymain -// CHECK: #3 main - |