aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Support
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2012-02-21 08:53:32 +0000
committerChandler Carruth <chandlerc@gmail.com>2012-02-21 08:53:32 +0000
commit4fbf6581514a494c15b82ce2f9b6f79b24216c6f (patch)
treead14d5c251438257a1468f8fef3b65b77b188099 /lib/Support
parent0523f41841d0860b2e175a4b20d1ecefd7295c4a (diff)
downloadexternal_llvm-4fbf6581514a494c15b82ce2f9b6f79b24216c6f.zip
external_llvm-4fbf6581514a494c15b82ce2f9b6f79b24216c6f.tar.gz
external_llvm-4fbf6581514a494c15b82ce2f9b6f79b24216c6f.tar.bz2
Pull the parsing helper functions out of the Triple interface entirely.
They're private static methods but we can just make them static functions in the implementation. It makes the implementations a touch more wordy, but takes another chunk out of the header file. Also, take the opportunity to switch the names to the new coding conventions. No functionality changed here. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151047 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support')
-rw-r--r--lib/Support/Triple.cpp179
1 files changed, 90 insertions, 89 deletions
diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp
index b5aa519..11cbb5f 100644
--- a/lib/Support/Triple.cpp
+++ b/lib/Support/Triple.cpp
@@ -214,80 +214,81 @@ const char *Triple::getArchNameForAssembler() {
.Default(NULL);
}
-Triple::ArchType Triple::ParseArch(StringRef ArchName) {
- return StringSwitch<ArchType>(ArchName)
- .Cases("i386", "i486", "i586", "i686", x86)
- .Cases("i786", "i886", "i986", x86) // FIXME: Do we need to support these?
- .Cases("amd64", "x86_64", x86_64)
- .Case("powerpc", ppc)
- .Cases("powerpc64", "ppu", ppc64)
- .Case("mblaze", mblaze)
- .Cases("arm", "xscale", arm)
+static Triple::ArchType parseArch(StringRef ArchName) {
+ return StringSwitch<Triple::ArchType>(ArchName)
+ .Cases("i386", "i486", "i586", "i686", Triple::x86)
+ // FIXME: Do we need to support these?
+ .Cases("i786", "i886", "i986", Triple::x86)
+ .Cases("amd64", "x86_64", Triple::x86_64)
+ .Case("powerpc", Triple::ppc)
+ .Cases("powerpc64", "ppu", Triple::ppc64)
+ .Case("mblaze", Triple::mblaze)
+ .Cases("arm", "xscale", Triple::arm)
// FIXME: It would be good to replace these with explicit names for all the
// various suffixes supported.
- .StartsWith("armv", arm)
- .Case("thumb", thumb)
- .StartsWith("thumbv", thumb)
- .Cases("spu", "cellspu", cellspu)
- .Case("msp430", msp430)
- .Cases("mips", "mipseb", "mipsallegrex", mips)
- .Cases("mipsel", "mipsallegrexel", "psp", mipsel)
- .Cases("mips64", "mips64eb", mips64)
- .Case("mips64el", mips64el)
- .Case("hexagon", hexagon)
- .Case("sparc", sparc)
- .Case("sparcv9", sparcv9)
- .Case("tce", tce)
- .Case("xcore", xcore)
- .Case("ptx32", ptx32)
- .Case("ptx64", ptx64)
- .Case("le32", le32)
- .Case("amdil", amdil)
- .Default(UnknownArch);
+ .StartsWith("armv", Triple::arm)
+ .Case("thumb", Triple::thumb)
+ .StartsWith("thumbv", Triple::thumb)
+ .Cases("spu", "cellspu", Triple::cellspu)
+ .Case("msp430", Triple::msp430)
+ .Cases("mips", "mipseb", "mipsallegrex", Triple::mips)
+ .Cases("mipsel", "mipsallegrexel", "psp", Triple::mipsel)
+ .Cases("mips64", "mips64eb", Triple::mips64)
+ .Case("mips64el", Triple::mips64el)
+ .Case("hexagon", Triple::hexagon)
+ .Case("sparc", Triple::sparc)
+ .Case("sparcv9", Triple::sparcv9)
+ .Case("tce", Triple::tce)
+ .Case("xcore", Triple::xcore)
+ .Case("ptx32", Triple::ptx32)
+ .Case("ptx64", Triple::ptx64)
+ .Case("le32", Triple::le32)
+ .Case("amdil", Triple::amdil)
+ .Default(Triple::UnknownArch);
}
-Triple::VendorType Triple::ParseVendor(StringRef VendorName) {
- return StringSwitch<VendorType>(VendorName)
- .Case("apple", Apple)
- .Case("pc", PC)
- .Case("scei", SCEI)
- .Default(UnknownVendor);
-}
-
-Triple::OSType Triple::ParseOS(StringRef OSName) {
- return StringSwitch<OSType>(OSName)
- .StartsWith("auroraux", AuroraUX)
- .StartsWith("cygwin", Cygwin)
- .StartsWith("darwin", Darwin)
- .StartsWith("dragonfly", DragonFly)
- .StartsWith("freebsd", FreeBSD)
- .StartsWith("ios", IOS)
- .StartsWith("kfreebsd", KFreeBSD)
- .StartsWith("linux", Linux)
- .StartsWith("lv2", Lv2)
- .StartsWith("macosx", MacOSX)
- .StartsWith("mingw32", MinGW32)
- .StartsWith("netbsd", NetBSD)
- .StartsWith("openbsd", OpenBSD)
- .StartsWith("psp", Psp)
- .StartsWith("solaris", Solaris)
- .StartsWith("win32", Win32)
- .StartsWith("haiku", Haiku)
- .StartsWith("minix", Minix)
- .StartsWith("rtems", RTEMS)
- .StartsWith("nacl", NativeClient)
- .Default(UnknownOS);
-}
-
-Triple::EnvironmentType Triple::ParseEnvironment(StringRef EnvironmentName) {
- return StringSwitch<EnvironmentType>(EnvironmentName)
- .StartsWith("eabi", EABI)
- .StartsWith("gnueabihf", GNUEABIHF)
- .StartsWith("gnueabi", GNUEABI)
- .StartsWith("gnu", GNU)
- .StartsWith("macho", MachO)
- .StartsWith("androideabi", ANDROIDEABI)
- .Default(UnknownEnvironment);
+static Triple::VendorType parseVendor(StringRef VendorName) {
+ return StringSwitch<Triple::VendorType>(VendorName)
+ .Case("apple", Triple::Apple)
+ .Case("pc", Triple::PC)
+ .Case("scei", Triple::SCEI)
+ .Default(Triple::UnknownVendor);
+}
+
+static Triple::OSType parseOS(StringRef OSName) {
+ return StringSwitch<Triple::OSType>(OSName)
+ .StartsWith("auroraux", Triple::AuroraUX)
+ .StartsWith("cygwin", Triple::Cygwin)
+ .StartsWith("darwin", Triple::Darwin)
+ .StartsWith("dragonfly", Triple::DragonFly)
+ .StartsWith("freebsd", Triple::FreeBSD)
+ .StartsWith("ios", Triple::IOS)
+ .StartsWith("kfreebsd", Triple::KFreeBSD)
+ .StartsWith("linux", Triple::Linux)
+ .StartsWith("lv2", Triple::Lv2)
+ .StartsWith("macosx", Triple::MacOSX)
+ .StartsWith("mingw32", Triple::MinGW32)
+ .StartsWith("netbsd", Triple::NetBSD)
+ .StartsWith("openbsd", Triple::OpenBSD)
+ .StartsWith("psp", Triple::Psp)
+ .StartsWith("solaris", Triple::Solaris)
+ .StartsWith("win32", Triple::Win32)
+ .StartsWith("haiku", Triple::Haiku)
+ .StartsWith("minix", Triple::Minix)
+ .StartsWith("rtems", Triple::RTEMS)
+ .StartsWith("nacl", Triple::NativeClient)
+ .Default(Triple::UnknownOS);
+}
+
+static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) {
+ return StringSwitch<Triple::EnvironmentType>(EnvironmentName)
+ .StartsWith("eabi", Triple::EABI)
+ .StartsWith("gnueabihf", Triple::GNUEABIHF)
+ .StartsWith("gnueabi", Triple::GNUEABI)
+ .StartsWith("gnu", Triple::GNU)
+ .StartsWith("macho", Triple::MachO)
+ .StartsWith("androideabi", Triple::ANDROIDEABI)
+ .Default(Triple::UnknownEnvironment);
}
/// \brief Construct a triple from the string representation provided.
@@ -296,10 +297,10 @@ Triple::EnvironmentType Triple::ParseEnvironment(StringRef EnvironmentName) {
/// enum members.
Triple::Triple(const Twine &Str)
: Data(Str.str()),
- Arch(ParseArch(getArchName())),
- Vendor(ParseVendor(getVendorName())),
- OS(ParseOS(getOSName())),
- Environment(ParseEnvironment(getEnvironmentName())) {
+ Arch(parseArch(getArchName())),
+ Vendor(parseVendor(getVendorName())),
+ OS(parseOS(getOSName())),
+ Environment(parseEnvironment(getEnvironmentName())) {
}
/// \brief Construct a triple from string representations of the architecture,
@@ -310,9 +311,9 @@ Triple::Triple(const Twine &Str)
/// the string representation.
Triple::Triple(const Twine &ArchStr, const Twine &VendorStr, const Twine &OSStr)
: Data((ArchStr + Twine('-') + VendorStr + Twine('-') + OSStr).str()),
- Arch(ParseArch(ArchStr.str())),
- Vendor(ParseVendor(VendorStr.str())),
- OS(ParseOS(OSStr.str())),
+ Arch(parseArch(ArchStr.str())),
+ Vendor(parseVendor(VendorStr.str())),
+ OS(parseOS(OSStr.str())),
Environment() {
}
@@ -325,10 +326,10 @@ Triple::Triple(const Twine &ArchStr, const Twine &VendorStr, const Twine &OSStr,
const Twine &EnvironmentStr)
: Data((ArchStr + Twine('-') + VendorStr + Twine('-') + OSStr + Twine('-') +
EnvironmentStr).str()),
- Arch(ParseArch(ArchStr.str())),
- Vendor(ParseVendor(VendorStr.str())),
- OS(ParseOS(OSStr.str())),
- Environment(ParseEnvironment(EnvironmentStr.str())) {
+ Arch(parseArch(ArchStr.str())),
+ Vendor(parseVendor(VendorStr.str())),
+ OS(parseOS(OSStr.str())),
+ Environment(parseEnvironment(EnvironmentStr.str())) {
}
std::string Triple::normalize(StringRef Str) {
@@ -346,16 +347,16 @@ std::string Triple::normalize(StringRef Str) {
// valid os.
ArchType Arch = UnknownArch;
if (Components.size() > 0)
- Arch = ParseArch(Components[0]);
+ Arch = parseArch(Components[0]);
VendorType Vendor = UnknownVendor;
if (Components.size() > 1)
- Vendor = ParseVendor(Components[1]);
+ Vendor = parseVendor(Components[1]);
OSType OS = UnknownOS;
if (Components.size() > 2)
- OS = ParseOS(Components[2]);
+ OS = parseOS(Components[2]);
EnvironmentType Environment = UnknownEnvironment;
if (Components.size() > 3)
- Environment = ParseEnvironment(Components[3]);
+ Environment = parseEnvironment(Components[3]);
// Note which components are already in their final position. These will not
// be moved.
@@ -383,19 +384,19 @@ std::string Triple::normalize(StringRef Str) {
switch (Pos) {
default: llvm_unreachable("unexpected component type!");
case 0:
- Arch = ParseArch(Comp);
+ Arch = parseArch(Comp);
Valid = Arch != UnknownArch;
break;
case 1:
- Vendor = ParseVendor(Comp);
+ Vendor = parseVendor(Comp);
Valid = Vendor != UnknownVendor;
break;
case 2:
- OS = ParseOS(Comp);
+ OS = parseOS(Comp);
Valid = OS != UnknownOS;
break;
case 3:
- Environment = ParseEnvironment(Comp);
+ Environment = parseEnvironment(Comp);
Valid = Environment != UnknownEnvironment;
break;
}