From 5e6fce64920be28eac9853bbe2e173fc055fbc73 Mon Sep 17 00:00:00 2001 From: Tim Northover Date: Wed, 28 Oct 2015 22:57:14 +0000 Subject: [PATCH] ARM: add watchOS default version support function. It's useful for Clang's Driver faff. llvm-svn: 251574 --- llvm/include/llvm/ADT/Triple.h | 7 ++++++- llvm/lib/Support/Triple.cpp | 27 ++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/llvm/include/llvm/ADT/Triple.h b/llvm/include/llvm/ADT/Triple.h index 4ed694cfa99c..ad9fe0603647 100644 --- a/llvm/include/llvm/ADT/Triple.h +++ b/llvm/include/llvm/ADT/Triple.h @@ -303,10 +303,15 @@ public: unsigned &Micro) const; /// getiOSVersion - Parse the version number as with getOSVersion. This should - /// only be called with IOS triples. + /// only be called with IOS or generic triples. void getiOSVersion(unsigned &Major, unsigned &Minor, unsigned &Micro) const; + /// getWatchOSVersion - Parse the version number as with getOSVersion. This + /// should only be called with WatchOS or generic triples. + void getWatchOSVersion(unsigned &Major, unsigned &Minor, + unsigned &Micro) const; + /// @} /// @name Direct Component Access /// @{ diff --git a/llvm/lib/Support/Triple.cpp b/llvm/lib/Support/Triple.cpp index 8964fc09985d..9d5f14553305 100644 --- a/llvm/lib/Support/Triple.cpp +++ b/llvm/lib/Support/Triple.cpp @@ -958,7 +958,6 @@ void Triple::getiOSVersion(unsigned &Major, unsigned &Minor, default: llvm_unreachable("unexpected OS for Darwin triple"); case Darwin: case MacOSX: - case WatchOS: // Ignore the version from the triple. This is only handled because the // the clang driver combines OS X and IOS support into a common Darwin // toolchain that wants to know the iOS version number even when targeting @@ -974,6 +973,32 @@ void Triple::getiOSVersion(unsigned &Major, unsigned &Minor, if (Major == 0) Major = (getArch() == aarch64) ? 7 : 5; break; + case WatchOS: + llvm_unreachable("conflicting triple info"); + } +} + +void Triple::getWatchOSVersion(unsigned &Major, unsigned &Minor, + unsigned &Micro) const { + switch (getOS()) { + default: llvm_unreachable("unexpected OS for Darwin triple"); + case Darwin: + case MacOSX: + // Ignore the version from the triple. This is only handled because the + // the clang driver combines OS X and IOS support into a common Darwin + // toolchain that wants to know the iOS version number even when targeting + // OS X. + Major = 2; + Minor = 0; + Micro = 0; + break; + case WatchOS: + getOSVersion(Major, Minor, Micro); + if (Major == 0) + Major = 2; + break; + case IOS: + llvm_unreachable("conflicting triple info"); } }