Utility: ignore OS version on non-Darwin targets in `ArchSpec`

The OS version field is generally not very helpful for non-Darwin
targets.  On Linux, it identifies the kernel version which moves
out-of-sync with the userspace.  On Windows, this field actually ends up
corresponding to the Visual Studio toolset version instead of the OS
version.  Consider non-Darwin targets without an OS version to be fully
specified.

Differential Revision: https://reviews.llvm.org/D88181
Reviewed By: Jonas Devlieghere, Dave Lee
This commit is contained in:
Saleem Abdulrasool 2020-09-23 20:57:55 +00:00
parent ee7ee71f40
commit 92d42b32a9
1 changed files with 2 additions and 1 deletions

View File

@ -1426,7 +1426,8 @@ bool ArchSpec::IsFullySpecifiedTriple() const {
if ((user_specified_triple.getVendor() != llvm::Triple::UnknownVendor) ||
TripleVendorWasSpecified()) {
const unsigned unspecified = 0;
if (user_specified_triple.getOSMajorVersion() != unspecified) {
if (!user_specified_triple.isOSDarwin() ||
user_specified_triple.getOSMajorVersion() != unspecified) {
user_triple_fully_specified = true;
}
}