glider created this revision. glider added a reviewer: melver. Herald added subscribers: pengfei, jfb, kristof.beyls. glider requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Looks like non-x86 bots are unhappy with inclusion of <stdatomic.h> e.g.: clang-armv7-vfpv3-2stage - https://lab.llvm.org/buildbot/#/builders/182/builds/626 clang-ppc64le-linux - https://lab.llvm.org/buildbot/#/builders/76/builds/3619 llvm-clang-win-x-armv7l - https://lab.llvm.org/buildbot/#/builders/60/builds/4514 Move the test to CodeGen/X86 to fix the builds. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D108555 Files: clang/test/CodeGen/X86/sanitize-thread-disable.c clang/test/CodeGen/sanitize-thread-disable.c Index: clang/test/CodeGen/sanitize-thread-disable.c =================================================================== --- /dev/null +++ clang/test/CodeGen/sanitize-thread-disable.c @@ -1,57 +0,0 @@ -// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefixes CHECK,WITHOUT %s -// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - %s -fsanitize=thread | FileCheck -check-prefixes CHECK,TSAN %s - -#include <stdatomic.h> - -// Instrumented function. -// TSan inserts calls to __tsan_func_entry() and __tsan_func_exit() to prologue/epilogue. -// Non-atomic loads are instrumented with __tsan_readXXX(), atomic loads - with -// __tsan_atomicXXX_load(). -// -// CHECK-LABEL: @instrumented1 -// TSAN: call void @__tsan_func_entry -// WITHOUT-NOT: call void @__tsan_func_entry -// TSAN: call void @__tsan_read4 -// WITHOUT-NOT: call void @__tsan_read4 -// TSAN: call i32 @__tsan_atomic32_load -// WITHOUT-NOT: call i32 @__tsan_atomic32_load -// TSAN: call void @__tsan_func_exit -// WITHOUT-NOT: call void @__tsan_func_exit -// CHECK: ret i32 -int instrumented1(int *a, _Atomic int *b) { - return *a + atomic_load(b); -} - -// Function with no_sanitize("thread"). -// TSan only inserts instrumentation necessary to prevent false positives: calls are inserted for -// function entry/exit and atomics, but not plain memory accesses. -// -// CHECK-LABEL: @no_false_positives1 -// TSAN: call void @__tsan_func_entry -// WITHOUT-NOT: call void @__tsan_func_entry -// TSAN-NOT: call void @__tsan_read4 -// WITHOUT-NOT: call void @__tsan_read4 -// TSAN: call i32 @__tsan_atomic32_load -// WITHOUT-NOT: call i32 @__tsan_atomic32_load -// TSAN: call void @__tsan_func_exit -// WITHOUT-NOT: call void @__tsan_func_exit -// CHECK: ret i32 -__attribute__((no_sanitize("thread"))) int no_false_positives1(int *a, _Atomic int *b) { - return *a + atomic_load(b); -} - -// Function with disable_sanitizer_instrumentation: no instrumentation at all. -// -// CHECK-LABEL: @no_instrumentation1 -// TSAN-NOT: call void @__tsan_func_entry -// WITHOUT-NOT: call void @__tsan_func_entry -// TSAN-NOT: call void @__tsan_read4 -// WITHOUT-NOT: call void @__tsan_read4 -// TSAN-NOT: call i32 @__tsan_atomic32_load -// WITHOUT-NOT: call i32 @__tsan_atomic32_load -// TSAN-NOT: call void @__tsan_func_exit -// WITHOUT-NOT: call void @__tsan_func_exit -// CHECK: ret i32 -__attribute__((disable_sanitizer_instrumentation)) int no_instrumentation1(int *a, _Atomic int *b) { - return *a + atomic_load(b); -}
Index: clang/test/CodeGen/sanitize-thread-disable.c =================================================================== --- /dev/null +++ clang/test/CodeGen/sanitize-thread-disable.c @@ -1,57 +0,0 @@ -// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - %s | FileCheck -check-prefixes CHECK,WITHOUT %s -// RUN: %clang -target x86_64-linux-gnu -S -emit-llvm -o - %s -fsanitize=thread | FileCheck -check-prefixes CHECK,TSAN %s - -#include <stdatomic.h> - -// Instrumented function. -// TSan inserts calls to __tsan_func_entry() and __tsan_func_exit() to prologue/epilogue. -// Non-atomic loads are instrumented with __tsan_readXXX(), atomic loads - with -// __tsan_atomicXXX_load(). -// -// CHECK-LABEL: @instrumented1 -// TSAN: call void @__tsan_func_entry -// WITHOUT-NOT: call void @__tsan_func_entry -// TSAN: call void @__tsan_read4 -// WITHOUT-NOT: call void @__tsan_read4 -// TSAN: call i32 @__tsan_atomic32_load -// WITHOUT-NOT: call i32 @__tsan_atomic32_load -// TSAN: call void @__tsan_func_exit -// WITHOUT-NOT: call void @__tsan_func_exit -// CHECK: ret i32 -int instrumented1(int *a, _Atomic int *b) { - return *a + atomic_load(b); -} - -// Function with no_sanitize("thread"). -// TSan only inserts instrumentation necessary to prevent false positives: calls are inserted for -// function entry/exit and atomics, but not plain memory accesses. -// -// CHECK-LABEL: @no_false_positives1 -// TSAN: call void @__tsan_func_entry -// WITHOUT-NOT: call void @__tsan_func_entry -// TSAN-NOT: call void @__tsan_read4 -// WITHOUT-NOT: call void @__tsan_read4 -// TSAN: call i32 @__tsan_atomic32_load -// WITHOUT-NOT: call i32 @__tsan_atomic32_load -// TSAN: call void @__tsan_func_exit -// WITHOUT-NOT: call void @__tsan_func_exit -// CHECK: ret i32 -__attribute__((no_sanitize("thread"))) int no_false_positives1(int *a, _Atomic int *b) { - return *a + atomic_load(b); -} - -// Function with disable_sanitizer_instrumentation: no instrumentation at all. -// -// CHECK-LABEL: @no_instrumentation1 -// TSAN-NOT: call void @__tsan_func_entry -// WITHOUT-NOT: call void @__tsan_func_entry -// TSAN-NOT: call void @__tsan_read4 -// WITHOUT-NOT: call void @__tsan_read4 -// TSAN-NOT: call i32 @__tsan_atomic32_load -// WITHOUT-NOT: call i32 @__tsan_atomic32_load -// TSAN-NOT: call void @__tsan_func_exit -// WITHOUT-NOT: call void @__tsan_func_exit -// CHECK: ret i32 -__attribute__((disable_sanitizer_instrumentation)) int no_instrumentation1(int *a, _Atomic int *b) { - return *a + atomic_load(b); -}
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits