Index: tools/driver/driver.cpp =================================================================== --- tools/driver/driver.cpp +++ tools/driver/driver.cpp @@ -37,6 +37,7 @@ #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" #include "llvm/Support/PrettyStackTrace.h" +#include "llvm/Support/Process.h" #include "llvm/Support/Program.h" #include "llvm/Support/Regex.h" #include "llvm/Support/Signals.h" @@ -292,8 +293,19 @@ llvm::sys::PrintStackTraceOnErrorSignal(); llvm::PrettyStackTraceProgram X(argc_, argv_); + llvm::OwningArrayPtr NewArgVectorPointers; + std::vector NewArgVectorStrings; + Optional > NewArgs = + llvm::sys::Process::GetArgumentVector( + llvm::ArrayRef(argv_, argv_ + argc_), + NewArgVectorPointers, NewArgVectorStrings); + if (!NewArgs) { + llvm::errs() << "error: arguments are malformed'\n"; + return 1; + } + + SmallVector argv(NewArgs->begin(), NewArgs->end()); std::set SavedStrings; - SmallVector argv(argv_, argv_ + argc_); StringSetSaver Saver(SavedStrings); llvm::cl::ExpandResponseFiles(Saver, llvm::cl::TokenizeGNUCommandLine, argv);