diff options
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r-- | clang/lib/Driver/Driver.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index f5ba96549ba..3707acad249 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -115,6 +115,7 @@ InputArgList *Driver::ParseArgStrings(const char **ArgBegin, DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const { DerivedArgList *DAL = new DerivedArgList(Args); + bool HasNostdlib = Args.hasArg(options::OPT_nostdlib); for (ArgList::const_iterator it = Args.begin(), ie = Args.end(); it != ie; ++it) { const Arg *A = *it; @@ -157,6 +158,17 @@ DerivedArgList *Driver::TranslateInputArgs(const InputArgList &Args) const { continue; } + // Rewrite reserved library names, unless -nostdlib is present. + if (!HasNostdlib && A->getOption().matches(options::OPT_l)) { + llvm::StringRef Value = A->getValue(Args); + + if (Value == "stdc++") { + DAL->AddFlagArg(A, Opts->getOption( + options::OPT_Z_reserved_lib_stdcxx)); + continue; + } + } + DAL->append(*it); } |