diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h index c9d0ef197dae..ab919656eeee 100644 --- a/clang/include/clang/Driver/ToolChain.h +++ b/clang/include/clang/Driver/ToolChain.h @@ -68,9 +68,12 @@ public: // Tool access. - /// TranslateArgs - Create a new derived argument list for any - /// argument translations this ToolChain may wish to perform. - virtual DerivedArgList *TranslateArgs(InputArgList &Args) const = 0; + /// TranslateArgs - Create a new derived argument list for any argument + /// translations this ToolChain may wish to perform. + /// + /// \param BoundArch - The bound architecture name, or 0. + virtual DerivedArgList *TranslateArgs(InputArgList &Args, + const char *BoundArch) const = 0; /// SelectTool - Choose a tool to use to handle the action \arg JA. virtual Tool &SelectTool(const Compilation &C, const JobAction &JA) const = 0; diff --git a/clang/lib/Driver/Compilation.cpp b/clang/lib/Driver/Compilation.cpp index f6e1885643ab..c12f5aa88195 100644 --- a/clang/lib/Driver/Compilation.cpp +++ b/clang/lib/Driver/Compilation.cpp @@ -49,7 +49,7 @@ const DerivedArgList &Compilation::getArgsForToolChain(const ToolChain *TC, DerivedArgList *&Entry = TCArgs[std::make_pair(TC, BoundArch)]; if (!Entry) - Entry = TC->TranslateArgs(*Args); + Entry = TC->TranslateArgs(*Args, BoundArch); return *Entry; } diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index fb6217d3ed00..7b14a20f187e 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -133,7 +133,8 @@ Tool &Darwin::SelectTool(const Compilation &C, const JobAction &JA) const { return *T; } -DerivedArgList *Darwin::TranslateArgs(InputArgList &Args) const { +DerivedArgList *Darwin::TranslateArgs(InputArgList &Args, + const char *BoundArch) const { DerivedArgList *DAL = new DerivedArgList(Args, false); const OptTable &Opts = getHost().getDriver().getOpts(); @@ -389,7 +390,8 @@ const char *Generic_GCC::GetForcedPicModel() const { return 0; } -DerivedArgList *Generic_GCC::TranslateArgs(InputArgList &Args) const { +DerivedArgList *Generic_GCC::TranslateArgs(InputArgList &Args, + const char *BoundArch) const { return new DerivedArgList(Args, true); } diff --git a/clang/lib/Driver/ToolChains.h b/clang/lib/Driver/ToolChains.h index 6a3ce37975b6..0e5ce3488417 100644 --- a/clang/lib/Driver/ToolChains.h +++ b/clang/lib/Driver/ToolChains.h @@ -33,7 +33,8 @@ public: Generic_GCC(const HostInfo &Host, const llvm::Triple& Triple); ~Generic_GCC(); - virtual DerivedArgList *TranslateArgs(InputArgList &Args) const; + virtual DerivedArgList *TranslateArgs(InputArgList &Args, + const char *BoundArch) const; virtual Tool &SelectTool(const Compilation &C, const JobAction &JA) const; @@ -101,7 +102,8 @@ public: bool isIPhone() const { return IsIPhone; } - virtual DerivedArgList *TranslateArgs(InputArgList &Args) const; + virtual DerivedArgList *TranslateArgs(InputArgList &Args, + const char *BoundArch) const; virtual Tool &SelectTool(const Compilation &C, const JobAction &JA) const;