diff options
author | John McCall <rjmccall@apple.com> | 2013-01-25 22:30:49 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2013-01-25 22:30:49 +0000 |
commit | b8b2c9da87e7d70a1679db026f40548b3192b705 (patch) | |
tree | faa4fbe6a64798098a71a21c89b2efc392f393e5 /lib/Basic/TargetInfo.cpp | |
parent | d07865b42dcb32154c75134fded51b38cc55a0c4 (diff) |
First pass at abstracting out a class for the target C++ ABI.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173514 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/TargetInfo.cpp')
-rw-r--r-- | lib/Basic/TargetInfo.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/Basic/TargetInfo.cpp b/lib/Basic/TargetInfo.cpp index 9cf04afc5f..fe68a9df6a 100644 --- a/lib/Basic/TargetInfo.cpp +++ b/lib/Basic/TargetInfo.cpp @@ -84,7 +84,7 @@ TargetInfo::TargetInfo(const std::string &T) : TargetOpts(), Triple(T) ComplexLongDoubleUsesFP2Ret = false; // Default to using the Itanium ABI. - CXXABI = CXXABI_Itanium; + TheCXXABI.set(TargetCXXABI::GenericItanium); // Default to an empty address space map. AddrSpaceMap = &DefaultAddrSpaceMap; @@ -496,3 +496,17 @@ bool TargetInfo::validateInputConstraint(ConstraintInfo *OutputConstraints, return true; } + +bool TargetCXXABI::tryParse(llvm::StringRef name) { + const Kind unknown = static_cast<Kind>(-1); + Kind kind = llvm::StringSwitch<Kind>(name) + .Case("arm", GenericARM) + .Case("ios", iOS) + .Case("itanium", GenericItanium) + .Case("microsoft", Microsoft) + .Default(unknown); + if (kind == unknown) return false; + + set(kind); + return true; +} |