diff options
author | Tim Northover <tnorthover@apple.com> | 2016-01-07 09:04:46 +0000 |
---|---|---|
committer | Tim Northover <tnorthover@apple.com> | 2016-01-07 09:04:46 +0000 |
commit | a12d0a99b1211eedebb365d2c4ea6ba0ccd2c212 (patch) | |
tree | 7c861219d2002c4de9419b517134b5d8433ded98 /clang/lib/Basic/Targets.cpp | |
parent | 3f07d858261c9864ce57e7c413796bed940d4d77 (diff) | |
download | bcm5719-llvm-a12d0a99b1211eedebb365d2c4ea6ba0ccd2c212.tar.gz bcm5719-llvm-a12d0a99b1211eedebb365d2c4ea6ba0ccd2c212.zip |
ARM: allow __thread on OS versions that have the required runtime support.
llvm-svn: 257041
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r-- | clang/lib/Basic/Targets.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 409c4ec5401..1bc6c51b9b8 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -223,7 +223,24 @@ protected: public: DarwinTargetInfo(const llvm::Triple &Triple) : OSTargetInfo<Target>(Triple) { - this->TLSSupported = Triple.isMacOSX() && !Triple.isMacOSXVersionLT(10, 7); + // By default, no TLS, and we whitelist permitted architecture/OS + // combinations. + this->TLSSupported = false; + + if (Triple.isMacOSX()) + this->TLSSupported = !Triple.isMacOSXVersionLT(10, 7); + else if (Triple.isiOS()) { + // 64-bit iOS supported it from 8 onwards, 32-bit from 9 onwards. + if (Triple.getArch() == llvm::Triple::x86_64 || + Triple.getArch() == llvm::Triple::aarch64) + this->TLSSupported = !Triple.isOSVersionLT(8); + else if (Triple.getArch() == llvm::Triple::x86 || + Triple.getArch() == llvm::Triple::arm || + Triple.getArch() == llvm::Triple::thumb) + this->TLSSupported = !Triple.isOSVersionLT(9); + } else if (Triple.isWatchOS()) + this->TLSSupported = !Triple.isOSVersionLT(2); + this->MCountName = "\01mcount"; } |