summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2014-01-14 19:35:09 +0000
committerHans Wennborg <hans@hanshq.net>2014-01-14 19:35:09 +0000
commitc9bd88e6811fb622cde644a82eac41c0b02c00ee (patch)
tree7c0c927099d178393a45099bde9b8520e5c81b20 /clang/lib/Basic
parent87994450657e8b6294393db707945adbe9cb200e (diff)
downloadbcm5719-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.cpp6
-rw-r--r--clang/lib/Basic/Targets.cpp6
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;
OpenPOWER on IntegriCloud