diff options
-rw-r--r-- | include/clang/Driver/Driver.h | 7 | ||||
-rw-r--r-- | lib/Driver/Driver.cpp | 10 |
2 files changed, 13 insertions, 4 deletions
diff --git a/include/clang/Driver/Driver.h b/include/clang/Driver/Driver.h index 845e527067..b9cbeaac7b 100644 --- a/include/clang/Driver/Driver.h +++ b/include/clang/Driver/Driver.h @@ -102,6 +102,11 @@ 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; @@ -381,7 +386,7 @@ public: /// GetHostInfo - Construct a new host info object for the given /// host triple. - const HostInfo *GetHostInfo(const char *HostTriple) const; + const HostInfo *GetHostInfo(const llvm::Triple &Triple) const; /// ShouldUseClangCompilar - Should the clang compiler be used to /// handle this action. diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 8699a92228..1edea61360 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -57,6 +57,7 @@ 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), @@ -321,7 +322,11 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) { if (Args->hasArg(options::OPT_nostdlib)) UseStdLib = false; - Host = GetHostInfo(DefaultTargetTriple.c_str()); + // Reset the target triple here as we may have adjusted the + // DefaultTargetTriple string for flags above. + // FIXME: Same fix is needed here when the above flag management is fixed. + TargetTriple = llvm::Triple(llvm::Triple::normalize(DefaultTargetTriple)); + Host = GetHostInfo(TargetTriple); // Perform the default argument translations. DerivedArgList *TranslatedArgs = TranslateInputArgs(*Args); @@ -1571,9 +1576,8 @@ std::string Driver::GetTemporaryPath(StringRef Prefix, const char *Suffix) return P.str(); } -const HostInfo *Driver::GetHostInfo(const char *TripleStr) const { +const HostInfo *Driver::GetHostInfo(const llvm::Triple &Triple) const { llvm::PrettyStackTraceString CrashInfo("Constructing host"); - llvm::Triple Triple(llvm::Triple::normalize(TripleStr).c_str()); // TCE is an osless target if (Triple.getArchName() == "tce") |