ARM: add watchOS default version support function.

It's useful for Clang's Driver faff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251574 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Tim Northover 2015-10-28 22:57:14 +00:00
parent ed754ee4a7
commit 332db19551
2 changed files with 32 additions and 2 deletions

View File

@ -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
/// @{

View File

@ -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");
}
}