Improve Triple to recognize the OS in i386-mingw32.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79359 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar
2009-08-18 19:26:55 +00:00
parent fe37ab335b
commit 651aa689cc
3 changed files with 47 additions and 4 deletions

View File

@@ -117,6 +117,9 @@ void Triple::Parse() const {
assert(!isInitialized() && "Invalid parse call.");
StringRef ArchName = getArchName();
StringRef VendorName = getVendorName();
StringRef OSName = getOSName();
if (ArchName.size() == 4 && ArchName[0] == 'i' &&
ArchName[2] == '8' && ArchName[3] == '6' &&
ArchName[1] - '3' < 6) // i[3-9]86
@@ -156,7 +159,22 @@ void Triple::Parse() const {
else
Arch = UnknownArch;
StringRef VendorName = getVendorName();
// Handle some exceptional cases where the OS / environment components are
// stuck into the vendor field.
if (StringRef(getTriple()).count('-') == 1) {
StringRef VendorName = getVendorName();
if (VendorName.startswith("mingw32")) { // 'i386-mingw32', etc.
Vendor = PC;
OS = MinGW32;
return;
}
// arm-elf is another example, but we don't currently parse anything about
// the environment.
}
if (VendorName == "apple")
Vendor = Apple;
else if (VendorName == "pc")
@@ -164,7 +182,6 @@ void Triple::Parse() const {
else
Vendor = UnknownVendor;
StringRef OSName = getOSName();
if (OSName.startswith("auroraux"))
OS = AuroraUX;
else if (OSName.startswith("cygwin"))