diff options
| author | Hans Wennborg <hans@hanshq.net> | 2014-01-14 19:35:09 +0000 |
|---|---|---|
| committer | Hans Wennborg <hans@hanshq.net> | 2014-01-14 19:35:09 +0000 |
| commit | c9bd88e6811fb622cde644a82eac41c0b02c00ee (patch) | |
| tree | 7c0c927099d178393a45099bde9b8520e5c81b20 /clang/lib/Basic | |
| parent | 87994450657e8b6294393db707945adbe9cb200e (diff) | |
| download | bcm5719-llvm-c9bd88e6811fb622cde644a82eac41c0b02c00ee.tar.gz bcm5719-llvm-c9bd88e6811fb622cde644a82eac41c0b02c00ee.zip | |
Remove the -cxx-abi command-line flag.
This makes the C++ ABI depend entirely on the target: MS ABI for -win32 triples,
Itanium otherwise. It's no longer possible to do weird combinations.
To be able to run a test with a specific ABI without constraining it to a
specific triple, new substitutions are added to lit: %itanium_abi_triple and
%ms_abi_triple can be used to get the current target triple adjusted to the
desired ABI. For example, if the test suite is running with the i686-pc-win32
target, %itanium_abi_triple will expand to i686-pc-mingw32.
Differential Revision: http://llvm-reviews.chandlerc.com/D2545
llvm-svn: 199250
Diffstat (limited to 'clang/lib/Basic')
| -rw-r--r-- | clang/lib/Basic/TargetInfo.cpp | 6 | ||||
| -rw-r--r-- | clang/lib/Basic/Targets.cpp | 6 |
2 files changed, 4 insertions, 8 deletions
diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp index 7ee2706d3e1..e661c66ca03 100644 --- a/clang/lib/Basic/TargetInfo.cpp +++ b/clang/lib/Basic/TargetInfo.cpp @@ -82,8 +82,10 @@ TargetInfo::TargetInfo(const llvm::Triple &T) : TargetOpts(), Triple(T) { // Default to not using fp2ret for __Complex long double ComplexLongDoubleUsesFP2Ret = false; - // Default to using the Itanium ABI. - TheCXXABI.set(TargetCXXABI::GenericItanium); + // Set the C++ ABI based on the triple. + TheCXXABI.set(Triple.getOS() == llvm::Triple::Win32 + ? TargetCXXABI::Microsoft + : TargetCXXABI::GenericItanium); // Default to an empty address space map. AddrSpaceMap = &DefaultAddrSpaceMap; diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 591243e41b2..9ce333d4af1 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -5841,12 +5841,6 @@ TargetInfo *TargetInfo::CreateTargetInfo(DiagnosticsEngine &Diags, return 0; } - // Set the target C++ ABI. - if (!Opts->CXXABI.empty() && !Target->setCXXABI(Opts->CXXABI)) { - Diags.Report(diag::err_target_unknown_cxxabi) << Opts->CXXABI; - return 0; - } - // Set the fp math unit. if (!Opts->FPMath.empty() && !Target->setFPMath(Opts->FPMath)) { Diags.Report(diag::err_target_unknown_fpmath) << Opts->FPMath; |

