From e5d69670b6e49d11287bc8f031e0e2081755cfac Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Tue, 20 Jul 2010 02:47:40 +0000 Subject: [PATCH] Driver: Switch to using a SmallVector instead of std::vector, and stop accessing outside the range of the vector (which always asserts on Win32). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108802 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/driver/driver.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp index 6dc8d6fceb..5776c4f592 100644 --- a/tools/driver/driver.cpp +++ b/tools/driver/driver.cpp @@ -78,7 +78,7 @@ static const char *SaveStringInSet(std::set &SavedStrings, /// \param Edit - The override command to perform. /// \param SavedStrings - Set to use for storing string representations. static void ApplyOneQAOverride(llvm::raw_ostream &OS, - std::vector &Args, + llvm::SmallVectorImpl &Args, llvm::StringRef Edit, std::set &SavedStrings) { // This does not need to be efficient. @@ -144,7 +144,7 @@ static void ApplyOneQAOverride(llvm::raw_ostream &OS, /// ApplyQAOverride - Apply a comma separate list of edits to the /// input argument lists. See ApplyOneQAOverride. -static void ApplyQAOverride(std::vector &Args, +static void ApplyQAOverride(llvm::SmallVectorImpl &Args, const char *OverrideStr, std::set &SavedStrings) { llvm::raw_ostream *OS = &llvm::errs(); @@ -177,7 +177,7 @@ extern int cc1as_main(const char **ArgBegin, const char **ArgEnd, const char *Argv0, void *MainAddr); static void ExpandArgsFromBuf(const char *Arg, - std::vector &ArgVector, + llvm::SmallVectorImpl &ArgVector, std::set &SavedStrings) { const char *FName = Arg + 1; llvm::MemoryBuffer *MemBuf = llvm::MemoryBuffer::getFile(FName); @@ -236,7 +236,7 @@ static void ExpandArgsFromBuf(const char *Arg, } static void ExpandArgv(int argc, const char **argv, - std::vector &ArgVector, + llvm::SmallVectorImpl &ArgVector, std::set &SavedStrings) { for (int i = 0; i < argc; ++i) { const char *Arg = argv[i]; @@ -254,7 +254,7 @@ int main(int argc_, const char **argv_) { llvm::PrettyStackTraceProgram X(argc_, argv_); std::set SavedStrings; - std::vector argv; + llvm::SmallVector argv; ExpandArgv(argc_, argv_, argv, SavedStrings); @@ -263,10 +263,10 @@ int main(int argc_, const char **argv_) { llvm::StringRef Tool = argv[1] + 4; if (Tool == "") - return cc1_main(&argv[2], &argv[argv.size()], argv[0], + return cc1_main(argv.data()+2, argv.data()+argv.size(), argv[0], (void*) (intptr_t) GetExecutablePath); if (Tool == "as") - return cc1as_main(&argv[2], &argv[argv.size()], argv[0], + return cc1as_main(argv.data()+2, argv.data()+argv.size(), argv[0], (void*) (intptr_t) GetExecutablePath); // Reject unknown tools. @@ -349,7 +349,7 @@ int main(int argc_, const char **argv_) { } } - argv.insert(++argv.begin(), ExtraArgs.begin(), ExtraArgs.end()); + argv.insert(&argv[1], ExtraArgs.begin(), ExtraArgs.end()); } C.reset(TheDriver.BuildCompilation(argv.size(), &argv[0])); -- 2.40.0