diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2013-06-17 20:00:15 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2013-06-17 20:00:15 +0000 |
commit | e1e03424469ac00811f70ff17b4441ad5c75dff6 (patch) | |
tree | 569de412fac5b6a47dcd65ca5ff086ed17f23528 | |
parent | 492d84c0f737840d6ff8f894879405dacb3dd88b (diff) | |
download | clang-e1e03424469ac00811f70ff17b4441ad5c75dff6.tar.gz |
Use atomic instructions on Bitrig armv6. Patch by Patrick Wildt.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184113 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Basic/Targets.cpp | 4 | ||||
-rw-r--r-- | test/CodeGen/linux-arm-atomic.c | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index f3d7e0ce67..4e2d223c6b 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -3534,7 +3534,9 @@ 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 && T.getOS() != llvm::Triple::FreeBSD) + if (T.getOS() != llvm::Triple::Linux && + T.getOS() != llvm::Triple::FreeBSD && + T.getOS() != llvm::Triple::Bitrig) return false; StringRef ArchName = T.getArchName(); if (T.getArch() == llvm::Triple::arm) { diff --git a/test/CodeGen/linux-arm-atomic.c b/test/CodeGen/linux-arm-atomic.c index b8535f8248..116925a585 100644 --- a/test/CodeGen/linux-arm-atomic.c +++ b/test/CodeGen/linux-arm-atomic.c @@ -2,6 +2,7 @@ // 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 +// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-bitrig | FileCheck %s typedef int _Atomic_word; _Atomic_word exchange_and_add(volatile _Atomic_word *__mem, int __val) { |