mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Add better support for environment portion of triple. Original patch by
Cameron Esfahani, tweaked to use array_lengthof. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114073 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -95,6 +95,9 @@ public:
|
||||
Haiku,
|
||||
Minix
|
||||
};
|
||||
enum EnvironmentType {
|
||||
UnknownEnvironment
|
||||
};
|
||||
|
||||
private:
|
||||
std::string Data;
|
||||
@@ -108,10 +111,14 @@ private:
|
||||
/// The parsed OS type.
|
||||
mutable OSType OS;
|
||||
|
||||
/// The parsed Environment type.
|
||||
mutable EnvironmentType Environment;
|
||||
|
||||
bool isInitialized() const { return Arch != InvalidArch; }
|
||||
static ArchType ParseArch(StringRef ArchName);
|
||||
static VendorType ParseVendor(StringRef VendorName);
|
||||
static OSType ParseOS(StringRef OSName);
|
||||
static EnvironmentType ParseEnvironment(StringRef EnvironmentName);
|
||||
void Parse() const;
|
||||
|
||||
public:
|
||||
@@ -128,6 +135,17 @@ public:
|
||||
Data += OSStr;
|
||||
}
|
||||
|
||||
explicit Triple(StringRef ArchStr, StringRef VendorStr, StringRef OSStr,
|
||||
StringRef EnvironmentStr)
|
||||
: Data(ArchStr), Arch(InvalidArch) {
|
||||
Data += '-';
|
||||
Data += VendorStr;
|
||||
Data += '-';
|
||||
Data += OSStr;
|
||||
Data += '-';
|
||||
Data += EnvironmentStr;
|
||||
}
|
||||
|
||||
/// @}
|
||||
/// @name Normalization
|
||||
/// @{
|
||||
@@ -166,6 +184,12 @@ public:
|
||||
return getEnvironmentName() != "";
|
||||
}
|
||||
|
||||
/// getEnvironment - Get the parsed environment type of this triple.
|
||||
EnvironmentType getEnvironment() const {
|
||||
if (!isInitialized()) Parse();
|
||||
return Environment;
|
||||
}
|
||||
|
||||
/// @}
|
||||
/// @name Direct Component Access
|
||||
/// @{
|
||||
@@ -225,6 +249,10 @@ public:
|
||||
/// to a known type.
|
||||
void setOS(OSType Kind);
|
||||
|
||||
/// setEnvironment - Set the environment (fourth) component of the triple
|
||||
/// to a known type.
|
||||
void setEnvironment(EnvironmentType Kind);
|
||||
|
||||
/// setTriple - Set all components to the new triple \arg Str.
|
||||
void setTriple(const Twine &Str);
|
||||
|
||||
@@ -272,9 +300,14 @@ public:
|
||||
/// vendor.
|
||||
static const char *getVendorTypeName(VendorType Kind);
|
||||
|
||||
/// getOSTypeName - Get the canonical name for the \arg Kind vendor.
|
||||
/// getOSTypeName - Get the canonical name for the \arg Kind operating
|
||||
/// system.
|
||||
static const char *getOSTypeName(OSType Kind);
|
||||
|
||||
/// getEnvironmentTypeName - Get the canonical name for the \arg Kind
|
||||
/// environment.
|
||||
static const char *getEnvironmentTypeName(EnvironmentType Kind);
|
||||
|
||||
/// @}
|
||||
/// @name Static helpers for converting alternate architecture names.
|
||||
/// @{
|
||||
|
Reference in New Issue
Block a user