From: Sean Silva Date: Fri, 15 Aug 2014 21:38:36 +0000 (+0000) Subject: ArrayRef'ize X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e0b8ba1d7b868d2f6763d2b1a277b7ff1028bc66;p=clang ArrayRef'ize I've shied away from ArrayRef'izing CompilerInvocation::CreateFromArgs in this commit because that is a less localized change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215773 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/driver/cc1_main.cpp b/tools/driver/cc1_main.cpp index 990c4fc3c8..bea02d9d6d 100644 --- a/tools/driver/cc1_main.cpp +++ b/tools/driver/cc1_main.cpp @@ -63,8 +63,7 @@ void initializePollyPasses(llvm::PassRegistry &Registry); } #endif -int cc1_main(const char **ArgBegin, const char **ArgEnd, - const char *Argv0, void *MainAddr) { +int cc1_main(ArrayRef Argv, const char *Argv0, void *MainAddr) { std::unique_ptr Clang(new CompilerInstance()); IntrusiveRefCntPtr DiagID(new DiagnosticIDs()); @@ -84,9 +83,8 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd, IntrusiveRefCntPtr DiagOpts = new DiagnosticOptions(); TextDiagnosticBuffer *DiagsBuffer = new TextDiagnosticBuffer; DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagsBuffer); - bool Success; - Success = CompilerInvocation::CreateFromArgs(Clang->getInvocation(), - ArgBegin, ArgEnd, Diags); + bool Success = CompilerInvocation::CreateFromArgs( + Clang->getInvocation(), Argv.begin(), Argv.end(), Diags); // Infer the builtin include path if unspecified. if (Clang->getHeaderSearchOpts().UseBuiltinIncludes && diff --git a/tools/driver/cc1as_main.cpp b/tools/driver/cc1as_main.cpp index e41bc9f824..847eb890d4 100644 --- a/tools/driver/cc1as_main.cpp +++ b/tools/driver/cc1as_main.cpp @@ -141,15 +141,15 @@ public: DwarfVersion = 3; } - static bool CreateFromArgs(AssemblerInvocation &Res, const char **ArgBegin, - const char **ArgEnd, DiagnosticsEngine &Diags); + static bool CreateFromArgs(AssemblerInvocation &Res, + ArrayRef Argv, + DiagnosticsEngine &Diags); }; } bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, - const char **ArgBegin, - const char **ArgEnd, + ArrayRef Argv, DiagnosticsEngine &Diags) { bool Success = true; @@ -159,7 +159,7 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts, const unsigned IncludedFlagsBitmask = options::CC1AsOption; unsigned MissingArgIndex, MissingArgCount; std::unique_ptr Args( - OptTbl->ParseArgs(ArgBegin, ArgEnd, MissingArgIndex, MissingArgCount, + OptTbl->ParseArgs(Argv.begin(), Argv.end(), MissingArgIndex, MissingArgCount, IncludedFlagsBitmask)); // Check for missing argument error. @@ -420,11 +420,10 @@ static void LLVMErrorHandler(void *UserData, const std::string &Message, exit(1); } -int cc1as_main(const char **ArgBegin, const char **ArgEnd, - const char *Argv0, void *MainAddr) { +int cc1as_main(ArrayRef Argv, const char *Argv0, void *MainAddr) { // Print a stack trace if we signal out. sys::PrintStackTraceOnErrorSignal(); - PrettyStackTraceProgram X(ArgEnd - ArgBegin, ArgBegin); + PrettyStackTraceProgram X(Argv.size(), Argv.data()); llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. // Initialize targets and assembly printers/parsers. @@ -447,7 +446,7 @@ int cc1as_main(const char **ArgBegin, const char **ArgEnd, // Parse the arguments. AssemblerInvocation Asm; - if (!AssemblerInvocation::CreateFromArgs(Asm, ArgBegin, ArgEnd, Diags)) + if (!AssemblerInvocation::CreateFromArgs(Asm, Argv, Diags)) return 1; if (Asm.ShowHelp) { diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp index 9f00bbbfe6..2f78999a30 100644 --- a/tools/driver/driver.cpp +++ b/tools/driver/driver.cpp @@ -187,10 +187,10 @@ static void ApplyQAOverride(SmallVectorImpl &Args, } } -extern int cc1_main(const char **ArgBegin, const char **ArgEnd, - const char *Argv0, void *MainAddr); -extern int cc1as_main(const char **ArgBegin, const char **ArgEnd, - const char *Argv0, void *MainAddr); +extern int cc1_main(ArrayRef Argv, const char *Argv0, + void *MainAddr); +extern int cc1as_main(ArrayRef Argv, const char *Argv0, + void *MainAddr); static void ParseProgName(SmallVectorImpl &ArgVector, std::set &SavedStrings, @@ -357,13 +357,12 @@ static void SetInstallDir(SmallVectorImpl &argv, TheDriver.setInstalledDir(InstalledPath); } -static int HandleCC1Tool(SmallVectorImpl &argv, StringRef Tool) { +static int HandleCC1Tool(ArrayRef argv, StringRef Tool) { + void *GetExecutablePathVP = (void *)(intptr_t) GetExecutablePath; if (Tool == "") - return cc1_main(argv.data()+2, argv.data()+argv.size(), argv[0], - (void*) (intptr_t) GetExecutablePath); + return cc1_main(argv.slice(2), argv[0], GetExecutablePathVP); if (Tool == "as") - return cc1as_main(argv.data()+2, argv.data()+argv.size(), argv[0], - (void*) (intptr_t) GetExecutablePath); + return cc1as_main(argv.slice(2), argv[0], GetExecutablePathVP); // Reject unknown tools. llvm::errs() << "error: unknown integrated tool '" << Tool << "'\n";