summaryrefslogtreecommitdiffstats
path: root/include/clang/Basic/ObjCRuntime.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Basic/ObjCRuntime.h')
-rw-r--r--include/clang/Basic/ObjCRuntime.h22
1 files changed, 20 insertions, 2 deletions
diff --git a/include/clang/Basic/ObjCRuntime.h b/include/clang/Basic/ObjCRuntime.h
index e33587d..cf51b14 100644
--- a/include/clang/Basic/ObjCRuntime.h
+++ b/include/clang/Basic/ObjCRuntime.h
@@ -41,6 +41,10 @@ public:
/// version of iOS.
iOS,
+ /// 'watchos' is a variant of iOS for Apple's watchOS. The version
+ /// is a release version of watchOS.
+ WatchOS,
+
/// 'gcc' is the Objective-C runtime shipped with GCC, implementing a
/// fragile Objective-C ABI
GCC,
@@ -81,6 +85,7 @@ public:
case GNUstep: return true;
case ObjFW: return true;
case iOS: return true;
+ case WatchOS: return true;
}
llvm_unreachable("bad kind");
}
@@ -114,6 +119,7 @@ public:
case FragileMacOSX:
case MacOSX:
case iOS:
+ case WatchOS:
return false;
case GCC:
case GNUstep:
@@ -133,9 +139,12 @@ public:
/// \brief Does this runtime allow ARC at all?
bool allowsARC() const {
switch (getKind()) {
- case FragileMacOSX: return false;
+ case FragileMacOSX:
+ // No stub library for the fragile runtime.
+ return getVersion() >= VersionTuple(10, 7);
case MacOSX: return true;
case iOS: return true;
+ case WatchOS: return true;
case GCC: return false;
case GNUstep: return true;
case ObjFW: return true;
@@ -150,9 +159,10 @@ public:
/// library.
bool hasNativeARC() const {
switch (getKind()) {
- case FragileMacOSX: return false;
+ case FragileMacOSX: return getVersion() >= VersionTuple(10, 7);
case MacOSX: return getVersion() >= VersionTuple(10, 7);
case iOS: return getVersion() >= VersionTuple(5);
+ case WatchOS: return true;
case GCC: return false;
case GNUstep: return getVersion() >= VersionTuple(1, 6);
@@ -168,6 +178,8 @@ public:
return getVersion() >= VersionTuple(10, 8);
case iOS:
return (getVersion() >= VersionTuple(6));
+ case WatchOS:
+ return true;
case GNUstep:
return getVersion() >= VersionTuple(1, 7);
@@ -197,6 +209,7 @@ public:
case FragileMacOSX: return false;
case MacOSX: return getVersion() >= VersionTuple(10, 8);
case iOS: return getVersion() >= VersionTuple(6);
+ case WatchOS: return true;
// This is really a lie, because some implementations and versions
// of the runtime do not support ARC. Probably -fgnu-runtime
@@ -224,6 +237,7 @@ public:
return true;
case MacOSX:
case iOS:
+ case WatchOS:
case GNUstep:
case ObjFW:
return false;
@@ -245,6 +259,7 @@ public:
case FragileMacOSX: return getVersion() >= VersionTuple(10, 8);
case MacOSX: return getVersion() >= VersionTuple(10, 8);
case iOS: return getVersion() >= VersionTuple(5);
+ case WatchOS: return true;
case GCC: return false;
case GNUstep: return false;
case ObjFW: return false;
@@ -257,6 +272,7 @@ public:
switch (getKind()) {
case MacOSX: return true;
case iOS: return true;
+ case WatchOS: return true;
case FragileMacOSX: return false;
case GCC: return true;
case GNUstep: return true;
@@ -270,6 +286,7 @@ public:
switch (getKind()) {
case MacOSX: return true;
case iOS: return true;
+ case WatchOS: return true;
case FragileMacOSX: return false;
case GCC: return true;
case GNUstep: return true;
@@ -283,6 +300,7 @@ public:
case FragileMacOSX:
case MacOSX:
case iOS:
+ case WatchOS:
return true;
case GNUstep:
return getVersion() >= VersionTuple(1, 7);
OpenPOWER on IntegriCloud