diff options
author | Rui Ueyama <ruiu@google.com> | 2018-04-13 18:26:06 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2018-04-13 18:26:06 +0000 |
commit | 197194b6c9829b9cdc5222939dd8cb25af05b3ca (patch) | |
tree | 385d75220b3266383a2a7f3c3d1467dbca4ca04b /llvm/tools/llvm-mt/llvm-mt.cpp | |
parent | a4e874c516517a5e479599755734a734faefe128 (diff) | |
download | bcm5719-llvm-197194b6c9829b9cdc5222939dd8cb25af05b3ca.tar.gz bcm5719-llvm-197194b6c9829b9cdc5222939dd8cb25af05b3ca.zip |
Define InitLLVM to do common initialization all at once.
We have a few functions that virtually all command wants to run on
process startup/shutdown. This patch adds InitLLVM class to do that
all at once, so that we don't need to copy-n-paste boilerplate code
to each llvm command's main() function.
Differential Revision: https://reviews.llvm.org/D45602
llvm-svn: 330046
Diffstat (limited to 'llvm/tools/llvm-mt/llvm-mt.cpp')
-rw-r--r-- | llvm/tools/llvm-mt/llvm-mt.cpp | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/llvm/tools/llvm-mt/llvm-mt.cpp b/llvm/tools/llvm-mt/llvm-mt.cpp index f95745e14f1..41f7327e9c2 100644 --- a/llvm/tools/llvm-mt/llvm-mt.cpp +++ b/llvm/tools/llvm-mt/llvm-mt.cpp @@ -17,6 +17,7 @@ #include "llvm/Option/Option.h" #include "llvm/Support/Error.h" #include "llvm/Support/FileOutputBuffer.h" +#include "llvm/Support/InitLLVM.h" #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" @@ -61,8 +62,6 @@ class CvtResOptTable : public opt::OptTable { public: CvtResOptTable() : OptTable(InfoTable, true) {} }; - -static ExitOnError ExitOnErr; } // namespace LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) { @@ -86,21 +85,12 @@ void error(Error EC) { }); } -int main(int argc, const char **argv) { - sys::PrintStackTraceOnErrorSignal(argv[0]); - PrettyStackTraceProgram X(argc, argv); - - ExitOnErr.setBanner("llvm-mt: "); - - SmallVector<const char *, 256> argv_buf; - SpecificBumpPtrAllocator<char> ArgAllocator; - ExitOnErr(errorCodeToError(sys::Process::GetArgumentVector( - argv_buf, makeArrayRef(argv, argc), ArgAllocator))); - llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. +int main(int Argc, const char **Argv) { + InitLLVM X(Argc, Argv); CvtResOptTable T; unsigned MAI, MAC; - ArrayRef<const char *> ArgsArr = makeArrayRef(argv + 1, argc); + ArrayRef<const char *> ArgsArr = makeArrayRef(Argv + 1, Argc - 1); opt::InputArgList InputArgs = T.ParseArgs(ArgsArr, MAI, MAC); for (auto *Arg : InputArgs.filtered(OPT_INPUT)) { |