aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/Driver/Driver.h5
-rw-r--r--lib/Driver/Driver.cpp24
2 files changed, 12 insertions, 17 deletions
diff --git a/include/clang/Driver/Driver.h b/include/clang/Driver/Driver.h
index b9cbeaac7b..067f080f74 100644
--- a/include/clang/Driver/Driver.h
+++ b/include/clang/Driver/Driver.h
@@ -102,11 +102,6 @@ public:
/// Information about the host which can be overridden by the user.
std::string HostBits, HostMachine, HostSystem, HostRelease;
- /// \brief Target triple.
- /// Represents which platforms this driver will target at each stage of the
- /// compilation.
- llvm::Triple TargetTriple;
-
/// The file to log CC_PRINT_OPTIONS output to, if enabled.
const char *CCPrintOptionsFilename;
diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index 217df02b7f..f44fe279b0 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -57,7 +57,6 @@ Driver::Driver(StringRef ClangExecutable,
DefaultImageName(DefaultImageName),
DriverTitle("clang \"gcc-compatible\" driver"),
Host(0),
- TargetTriple(llvm::Triple::normalize(DefaultTargetTriple)),
CCPrintOptionsFilename(0), CCPrintHeadersFilename(0),
CCLogDiagnosticsFilename(0), CCCIsCXX(false),
CCCIsCPP(false),CCCEcho(false), CCCPrintBindings(false),
@@ -330,16 +329,18 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
if (Args->hasArg(options::OPT_nostdlib))
UseStdLib = false;
- // Recompute the target triple based on the args.
- TargetTriple = computeTargetTriple(DefaultTargetTriple, *Args);
- Host = GetHostInfo(TargetTriple);
+ // Compute the target triple based on the args, and build a Host out of it.
+ // FIXME: Yes, this makes no sense. HostInfo has little to do with the host.
+ Host = GetHostInfo(computeTargetTriple(DefaultTargetTriple, *Args));
// Perform the default argument translations.
DerivedArgList *TranslatedArgs = TranslateInputArgs(*Args);
+ // Owned by the host.
+ const ToolChain &TC = *Host->CreateToolChain(*Args);
+
// The compilation takes ownership of Args.
- Compilation *C = new Compilation(*this, *Host->CreateToolChain(*Args), Args,
- TranslatedArgs);
+ Compilation *C = new Compilation(*this, TC, Args, TranslatedArgs);
// FIXME: This behavior shouldn't be here.
if (CCCPrintOptions) {
@@ -356,7 +357,7 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
// Construct the list of abstract actions to perform for this compilation. On
// Darwin target OSes this uses the driver-driver and universal actions.
- if (TargetTriple.isOSDarwin())
+ if (TC.getTriple().isOSDarwin())
BuildUniversalActions(C->getDefaultToolChain(), C->getArgs(),
Inputs, C->getActions());
else
@@ -446,12 +447,11 @@ void Driver::generateCompilationDiagnostics(Compilation &C,
// Construct the list of abstract actions to perform for this compilation. On
// Darwin OSes this uses the driver-driver and builds universal actions.
- if (TargetTriple.isOSDarwin())
- BuildUniversalActions(C.getDefaultToolChain(), C.getArgs(),
- Inputs, C.getActions());
+ const ToolChain &TC = C.getDefaultToolChain();
+ if (TC.getTriple().isOSDarwin())
+ BuildUniversalActions(TC, C.getArgs(), Inputs, C.getActions());
else
- BuildActions(C.getDefaultToolChain(), C.getArgs(), Inputs,
- C.getActions());
+ BuildActions(TC, C.getArgs(), Inputs, C.getActions());
BuildJobs(C);