From 33d9c4109ac234bcf17501ba16880ce80622cc9c Mon Sep 17 00:00:00 2001 From: Kuba Mracek Date: Fri, 24 Jul 2020 20:14:00 -0700 Subject: [PATCH] [tsan] Allow TSan in the Clang driver for Apple Silicon Macs Differential Revision: https://reviews.llvm.org/D84082 --- clang/lib/Driver/ToolChains/Darwin.cpp | 6 +++--- clang/test/Driver/fsanitize.c | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index f910c88fa967..325dcb7df545 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -2714,6 +2714,7 @@ void Darwin::CheckObjCARC() const { SanitizerMask Darwin::getSupportedSanitizers() const { const bool IsX86_64 = getTriple().getArch() == llvm::Triple::x86_64; + const bool IsAArch64 = getTriple().getArch() == llvm::Triple::aarch64; SanitizerMask Res = ToolChain::getSupportedSanitizers(); Res |= SanitizerKind::Address; Res |= SanitizerKind::PointerCompare; @@ -2731,9 +2732,8 @@ SanitizerMask Darwin::getSupportedSanitizers() const { && !(isTargetIPhoneOS() && isIPhoneOSVersionLT(5, 0))) Res |= SanitizerKind::Vptr; - if (isTargetMacOS()) { - if (IsX86_64) - Res |= SanitizerKind::Thread; + if ((IsX86_64 || IsAArch64) && isTargetMacOS()) { + Res |= SanitizerKind::Thread; } else if (isTargetIOSSimulator() || isTargetTvOSSimulator()) { if (IsX86_64) Res |= SanitizerKind::Thread; diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c index 7340bfb35e40..cfefd3fb632c 100644 --- a/clang/test/Driver/fsanitize.c +++ b/clang/test/Driver/fsanitize.c @@ -458,6 +458,10 @@ // RUN: %clang -target x86_64-apple-darwin -fsanitize=thread %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-X86-64-DARWIN // CHECK-TSAN-X86-64-DARWIN-NOT: unsupported option +// RUN: %clang -target x86_64-apple-macos -fsanitize=thread %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-X86-64-MACOS +// CHECK-TSAN-X86-64-MACOS-NOT: unsupported option +// RUN: %clang -target arm64-apple-macos -fsanitize=thread %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-ARM64-MACOS +// CHECK-TSAN-ARM64-MACOS-NOT: unsupported option // RUN: %clang -target x86_64-apple-iossimulator -fsanitize=thread %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-X86-64-IOSSIMULATOR // CHECK-TSAN-X86-64-IOSSIMULATOR-NOT: unsupported option