summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2016-01-07 09:04:46 +0000
committerTim Northover <tnorthover@apple.com>2016-01-07 09:04:46 +0000
commita12d0a99b1211eedebb365d2c4ea6ba0ccd2c212 (patch)
tree7c861219d2002c4de9419b517134b5d8433ded98 /clang/lib/Basic/Targets.cpp
parent3f07d858261c9864ce57e7c413796bed940d4d77 (diff)
downloadbcm5719-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.cpp19
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";
}
OpenPOWER on IntegriCloud