diff options
-rw-r--r-- | include/clang/Driver/ArgList.h | 12 | ||||
-rw-r--r-- | lib/Driver/ArgList.cpp | 14 |
2 files changed, 19 insertions, 7 deletions
diff --git a/include/clang/Driver/ArgList.h b/include/clang/Driver/ArgList.h index 7e0427d9b5..cff82c185e 100644 --- a/include/clang/Driver/ArgList.h +++ b/include/clang/Driver/ArgList.h @@ -110,11 +110,15 @@ namespace driver { void AddAllArgValues(ArgStringList &Output, options::ID Id0, options::ID Id1) const; - // AddAllArgsTranslated - Render all the arguments matching the - // given ids, but forced to separate args and using the provided - // name instead of the first option value. + /// AddAllArgsTranslated - Render all the arguments matching the + /// given ids, but forced to separate args and using the provided + /// name instead of the first option value. + /// + /// \param Joined - If true, render the argument as joined with + /// the option specifier. void AddAllArgsTranslated(ArgStringList &Output, options::ID Id0, - const char *Translation) const; + const char *Translation, + bool Joined = false) const; /// ClaimAllArgs - Claim all arguments which match the given /// option id. diff --git a/lib/Driver/ArgList.cpp b/lib/Driver/ArgList.cpp index 7823673024..593694cfbb 100644 --- a/lib/Driver/ArgList.cpp +++ b/lib/Driver/ArgList.cpp @@ -124,14 +124,22 @@ void ArgList::AddAllArgValues(ArgStringList &Output, options::ID Id0, } void ArgList::AddAllArgsTranslated(ArgStringList &Output, options::ID Id0, - const char *Translation) const { + const char *Translation, + bool Joined) const { // FIXME: Make fast. for (const_iterator it = begin(), ie = end(); it != ie; ++it) { const Arg *A = *it; if (A->getOption().matches(Id0)) { A->claim(); - Output.push_back(Translation); - Output.push_back(A->getValue(*this, 0)); + + if (Joined) { + std::string Value = Translation; + Value += A->getValue(*this, 0); + Output.push_back(MakeArgString(Value.c_str())); + } else { + Output.push_back(Translation); + Output.push_back(A->getValue(*this, 0)); + } } } } |