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
This commit is contained in:
@@ -1617,7 +1617,6 @@ static void ParsePreprocessorOutputArgs(PreprocessorOutputOptions &Opts,
|
||||
static void ParseTargetArgs(TargetOptions &Opts, ArgList &Args) {
|
||||
using namespace options;
|
||||
Opts.ABI = Args.getLastArgValue(OPT_target_abi);
|
||||
Opts.CXXABI = Args.getLastArgValue(OPT_cxx_abi);
|
||||
Opts.CPU = Args.getLastArgValue(OPT_target_cpu);
|
||||
Opts.FPMath = Args.getLastArgValue(OPT_mfpmath);
|
||||
Opts.FeaturesAsWritten = Args.getAllArgValues(OPT_target_feature);
|
||||
@@ -1627,11 +1626,6 @@ static void ParseTargetArgs(TargetOptions &Opts, ArgList &Args) {
|
||||
// Use the default target triple if unspecified.
|
||||
if (Opts.Triple.empty())
|
||||
Opts.Triple = llvm::sys::getDefaultTargetTriple();
|
||||
|
||||
// Use the MS ABI for Win32 targets unless otherwise specified.
|
||||
if (Opts.CXXABI.empty() &&
|
||||
llvm::Triple(Opts.Triple).getOS() == llvm::Triple::Win32)
|
||||
Opts.CXXABI = "microsoft";
|
||||
}
|
||||
|
||||
bool CompilerInvocation::CreateFromArgs(CompilerInvocation &Res,
|
||||
@@ -1767,8 +1761,7 @@ std::string CompilerInvocation::getModuleHash() const {
|
||||
|
||||
// Extend the signature with the target options.
|
||||
code = hash_combine(code, TargetOpts->Triple, TargetOpts->CPU,
|
||||
TargetOpts->ABI, TargetOpts->CXXABI,
|
||||
TargetOpts->LinkerVersion);
|
||||
TargetOpts->ABI, TargetOpts->LinkerVersion);
|
||||
for (unsigned i = 0, n = TargetOpts->FeaturesAsWritten.size(); i != n; ++i)
|
||||
code = hash_combine(code, TargetOpts->FeaturesAsWritten[i]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user