diff options
-rw-r--r-- | include/clang/Driver/Driver.h | 5 | ||||
-rw-r--r-- | lib/Driver/Driver.cpp | 24 |
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); |