diff options
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 4 | ||||
-rw-r--r-- | clang/test/CodeGen/c11atomics.c | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/linux-arm-atomic.c | 1 |
3 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index baf83c1a14c..f3d7e0ce671 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -3534,8 +3534,8 @@ class ARMTargetInfo : public TargetInfo { // the kernel which on armv6 and newer uses ldrex and strex. The net result // is that if we assume the kernel is at least as recent as the hardware, // it is safe to use atomic instructions on armv6 and newer. - if (T.getOS() != llvm::Triple::Linux) - return false; + if (T.getOS() != llvm::Triple::Linux && T.getOS() != llvm::Triple::FreeBSD) + return false; StringRef ArchName = T.getArchName(); if (T.getArch() == llvm::Triple::arm) { if (!ArchName.startswith("armv")) diff --git a/clang/test/CodeGen/c11atomics.c b/clang/test/CodeGen/c11atomics.c index 8d298af0191..6c845e9e01d 100644 --- a/clang/test/CodeGen/c11atomics.c +++ b/clang/test/CodeGen/c11atomics.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-freebsd -std=c11 | FileCheck %s +// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv5-unknown-freebsd -std=c11 | FileCheck %s // Test that we are generating atomicrmw instructions, rather than // compare-exchange loops for common atomic ops. This makes a big difference diff --git a/clang/test/CodeGen/linux-arm-atomic.c b/clang/test/CodeGen/linux-arm-atomic.c index c7ce1d228bb..b8535f82482 100644 --- a/clang/test/CodeGen/linux-arm-atomic.c +++ b/clang/test/CodeGen/linux-arm-atomic.c @@ -1,6 +1,7 @@ // RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-linux | FileCheck %s // RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-linux | FileCheck %s // RUN: %clang_cc1 %s -emit-llvm -o - -triple=thumbv7-unknown-linux | FileCheck %s +// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-freebsd | FileCheck %s typedef int _Atomic_word; _Atomic_word exchange_and_add(volatile _Atomic_word *__mem, int __val) { |