static bool isTargetTooNew(const llvm::Triple &moduleTarget, const llvm::Triple &ctxTarget) { unsigned major, minor, micro; if (moduleTarget.isMacOSX()) { moduleTarget.getMacOSXVersion(major, minor, micro); return ctxTarget.isMacOSXVersionLT(major, minor, micro); } moduleTarget.getOSVersion(major, minor, micro); return ctxTarget.isOSVersionLT(major, minor, micro); }
/// Returns true if the compiler depends on features provided by the ObjC /// runtime that are not present on the deployment target indicated by /// \p triple. static bool wantsObjCRuntime(const llvm::Triple &triple) { assert((!triple.isTvOS() || triple.isiOS()) && "tvOS is considered a kind of iOS"); // When updating the versions listed here, please record the most recent // feature being depended on and when it was introduced: // // - The hook to override class_getImageName (macOS 10.14 and equivalent) if (triple.isiOS()) return triple.isOSVersionLT(12); if (triple.isMacOSX()) return triple.isMacOSXVersionLT(10, 14); if (triple.isWatchOS()) return triple.isOSVersionLT(5); llvm_unreachable("unknown Darwin OS"); }
/// Returns true if the compiler depends on features provided by the ObjC /// runtime that are not present on the deployment target indicated by /// \p triple. static bool wantsObjCRuntime(const llvm::Triple &triple) { assert((!triple.isTvOS() || triple.isiOS()) && "tvOS is considered a kind of iOS"); // When updating the versions listed here, please record the most recent // feature being depended on and when it was introduced: // // - Make assigning 'nil' to an NSMutableDictionary subscript delete the // entry, like it does for Swift.Dictionary, rather than trap. if (triple.isiOS()) return triple.isOSVersionLT(9); if (triple.isMacOSX()) return triple.isMacOSXVersionLT(10, 11); if (triple.isWatchOS()) return false; llvm_unreachable("unknown Darwin OS"); }
static bool supportsNilWithFloatRet(const llvm::Triple &triple) { return triple.getVendor() == llvm::Triple::Apple && (!triple.isMacOSXVersionLT(10,5) || triple.getArch() == llvm::Triple::arm || triple.getArch() == llvm::Triple::thumb); }
static bool supportsNilWithFloatRet(const llvm::Triple &triple) { return (triple.getVendor() == llvm::Triple::Apple && (triple.isiOS() || !triple.isMacOSXVersionLT(10,5))); }