// This function should be called at the very beginning of the process,
// before any instrumented code is executed and before any call to malloc.
// Everytime the asan ABI changes we also change the version number in this
- // name. Objects build with incompatible asan ABI version
+ // name. Objects build with incompatible asan ABI version
// will not link with run-time.
void __asan_init_v1() SANITIZER_INTERFACE_ATTRIBUTE;
#define __asan_init __asan_init_v1
-// RUN: %clangxx_tsan -O1 %s -o %t && %t 2>&1 | FileCheck %s --check-prefix=CHECK_O1
-// ---RUN: %clangxx_tsan -O2 %s -o %t && %t 2>&1 | FileCheck %s --check-prefix=CHECK_O2
+// RUN: %clangxx_tsan -O1 %s -o %t && %t 2>&1 | FileCheck %s
+// RUN: %clangxx_tsan -O2 %s -o %t && %t 2>&1 | FileCheck %s
+// RUN: %clangxx_tsan -O3 %s -o %t && %t 2>&1 | FileCheck %s
//
// Check that load widening is not tsan-hostile.
#include <pthread.h>
printf("PASS\n");
}
-// FIXME: currently, this test fails at -O2 (reports false positive).
-// CHECK_O2: WARNING: ThreadSanitizer: data race
-
-// CHECK_O1: PASS
-// CHECK_O1-NOT: WARNING: ThreadSanitizer: data race
+// CHECK-NOT: WARNING: ThreadSanitizer: data race
+// CHECK: PASS