Index: ELF/Driver.h =================================================================== --- ELF/Driver.h +++ ELF/Driver.h @@ -39,8 +39,14 @@ }; // Parses command line options. -llvm::opt::InputArgList parseArgs(llvm::BumpPtrAllocator *A, - ArrayRef Args); +class ELFOptTable : public llvm::opt::OptTable { +public: + ELFOptTable(); + llvm::opt::InputArgList parse(ArrayRef Argv); + +private: + llvm::BumpPtrAllocator Alloc; +}; // Create enum with OPT_xxx values for each option in Options.td enum { Index: ELF/Driver.cpp =================================================================== --- ELF/Driver.cpp +++ ELF/Driver.cpp @@ -170,7 +170,8 @@ } void LinkerDriver::main(ArrayRef ArgsArr) { - opt::InputArgList Args = parseArgs(&Alloc, ArgsArr.slice(1)); + ELFOptTable Parser; + opt::InputArgList Args = Parser.parse(ArgsArr.slice(1)); if (Args.hasArg(OPT_help)) { printHelp(ArgsArr[0]); return; Index: ELF/DriverUtils.cpp =================================================================== --- ELF/DriverUtils.cpp +++ ELF/DriverUtils.cpp @@ -46,26 +46,21 @@ #undef OPTION }; -class ELFOptTable : public opt::OptTable { -public: - ELFOptTable() : OptTable(infoTable) {} -}; +ELFOptTable::ELFOptTable() : OptTable(infoTable) {} // Parses a given list of options. -opt::InputArgList elf::parseArgs(llvm::BumpPtrAllocator *A, - ArrayRef Argv) { +opt::InputArgList ELFOptTable::parse(ArrayRef Argv) { // Make InputArgList from string vectors. - ELFOptTable Table; unsigned MissingIndex; unsigned MissingCount; // Expand response files. '@' is replaced by the file's contents. SmallVector Vec(Argv.data(), Argv.data() + Argv.size()); - StringSaver Saver(*A); + StringSaver Saver(Alloc); llvm::cl::ExpandResponseFiles(Saver, llvm::cl::TokenizeGNUCommandLine, Vec); // Parse options and then do error checking. - opt::InputArgList Args = Table.ParseArgs(Vec, MissingIndex, MissingCount); + opt::InputArgList Args = this->ParseArgs(Vec, MissingIndex, MissingCount); if (MissingCount) error(Twine("missing arg value for \"") + Args.getArgString(MissingIndex) + "\", expected " + Twine(MissingCount) +