소스 검색

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330046 91177308-0d34-0410-b5e6-96231b3b80d8
Rui Ueyama 7 년 전
부모
커밋
0b9d56a30e
40개의 변경된 파일185개의 추가작업 그리고 268개의 파일을 삭제
  1. 46 0
      include/llvm/Support/InitLLVM.h
  2. 1 0
      lib/Support/CMakeLists.txt
  3. 48 0
      lib/Support/InitLLVM.cpp
  4. 2 4
      tools/bugpoint/bugpoint.cpp
  5. 3 5
      tools/dsymutil/dsymutil.cpp
  6. 2 4
      tools/llc/llc.cpp
  7. 2 6
      tools/lli/lli.cpp
  8. 4 9
      tools/llvm-ar/llvm-ar.cpp
  9. 2 6
      tools/llvm-as/llvm-as.cpp
  10. 2 7
      tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp
  11. 2 6
      tools/llvm-cov/llvm-cov.cpp
  12. 4 15
      tools/llvm-cvtres/llvm-cvtres.cpp
  13. 2 6
      tools/llvm-cxxdump/llvm-cxxdump.cpp
  14. 2 4
      tools/llvm-cxxfilt/llvm-cxxfilt.cpp
  15. 3 8
      tools/llvm-dis/llvm-dis.cpp
  16. 2 7
      tools/llvm-dwarfdump/llvm-dwarfdump.cpp
  17. 2 7
      tools/llvm-extract/llvm-extract.cpp
  18. 2 10
      tools/llvm-jitlistener/llvm-jitlistener.cpp
  19. 2 8
      tools/llvm-link/llvm-link.cpp
  20. 2 8
      tools/llvm-lto/llvm-lto.cpp
  21. 2 7
      tools/llvm-mc/llvm-mc.cpp
  22. 2 5
      tools/llvm-mca/llvm-mca.cpp
  23. 4 14
      tools/llvm-mt/llvm-mt.cpp
  24. 2 7
      tools/llvm-nm/llvm-nm.cpp
  25. 2 7
      tools/llvm-objcopy/llvm-objcopy.cpp
  26. 2 7
      tools/llvm-objdump/llvm-objdump.cpp
  27. 4 5
      tools/llvm-opt-report/OptReport.cpp
  28. 4 14
      tools/llvm-pdbutil/llvm-pdbutil.cpp
  29. 2 7
      tools/llvm-profdata/llvm-profdata.cpp
  30. 4 12
      tools/llvm-rc/llvm-rc.cpp
  31. 3 8
      tools/llvm-readobj/llvm-readobj.cpp
  32. 2 7
      tools/llvm-rtdyld/llvm-rtdyld.cpp
  33. 2 8
      tools/llvm-size/llvm-size.cpp
  34. 2 4
      tools/llvm-strings/llvm-strings.cpp
  35. 2 7
      tools/llvm-symbolizer/llvm-symbolizer.cpp
  36. 3 7
      tools/obj2yaml/obj2yaml.cpp
  37. 2 6
      tools/opt/opt.cpp
  38. 2 6
      tools/verify-uselistorder/verify-uselistorder.cpp
  39. 2 6
      tools/yaml2obj/yaml2obj.cpp
  40. 2 4
      utils/FileCheck/FileCheck.cpp

+ 46 - 0
include/llvm/Support/InitLLVM.h

@@ -0,0 +1,46 @@
+//===- InitLLVM.h -----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_SUPPORT_LLVM_H
+#define LLVM_SUPPORT_LLVM_H
+
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/Support/Allocator.h"
+#include "llvm/Support/PrettyStackTrace.h"
+
+// The main() functions in typical LLVM tools start with InitLLVM which does
+// the following one-time initializations:
+//
+//  1. Setting up a signal handler so that pretty stack trace is printed out
+//     if a process crashes.
+//
+//  2. If running on Windows, obtain command line arguments using a
+//     multibyte character-aware API and convert arguments into UTF-8
+//     encoding, so that you can assume that command line arguments are
+//     always encoded in UTF-8 on any platform.
+//
+// InitLLVM calls llvm_shutdown() on destruction, which cleans up
+// ManagedStatic objects.
+namespace llvm {
+class InitLLVM {
+public:
+  InitLLVM(int &Argc, const char **&Argv);
+  InitLLVM(int &Argc, char **&Argv)
+      : InitLLVM(Argc, const_cast<const char **&>(Argv)) {}
+
+  ~InitLLVM();
+
+private:
+  SpecificBumpPtrAllocator<char> Alloc;
+  SmallVector<const char *, 0> Args;
+  PrettyStackTraceProgram StackPrinter;
+};
+} // namespace llvm
+
+#endif

+ 1 - 0
lib/Support/CMakeLists.txt

@@ -76,6 +76,7 @@ add_llvm_library(LLVMSupport
   GlobPattern.cpp
   GlobPattern.cpp
   GraphWriter.cpp
   GraphWriter.cpp
   Hashing.cpp
   Hashing.cpp
+  InitLLVM.cpp
   IntEqClasses.cpp
   IntEqClasses.cpp
   IntervalMap.cpp
   IntervalMap.cpp
   JamCRC.cpp
   JamCRC.cpp

+ 48 - 0
lib/Support/InitLLVM.cpp

@@ -0,0 +1,48 @@
+//===-- InitLLVM.cpp -----------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Support/InitLLVM.h"
+#include "llvm/Support/Error.h"
+#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/PrettyStackTrace.h"
+#include "llvm/Support/Process.h"
+#include "llvm/Support/Signals.h"
+#include <string>
+
+using namespace llvm;
+
+InitLLVM::InitLLVM(int &Argc, const char **&Argv) : StackPrinter(Argc, Argv) {
+  sys::PrintStackTraceOnErrorSignal(Argv[0]);
+
+#ifdef _WIN32
+  // We use UTF-8 as the internal character encoding. On Windows,
+  // arguments passed to main() may not be encoded in UTF-8. In order
+  // to reliably detect encoding of command line arguments, we use an
+  // Windows API to obtain arguments, convert them to UTF-8, and then
+  // write them back to the Argv vector.
+  //
+  // There's probably other way to do the same thing (e.g. using
+  // wmain() instead of main()), but this way seems less intrusive
+  // than that.
+  std::string Banner = std::string(Argv[0]) + ": ";
+  ExitOnError ExitOnErr(Banner);
+
+  ExitOnErr(errorCodeToError(
+      sys::Process::GetArgumentVector(Args, makeArrayRef(Argv, Argc), Alloc)));
+
+  // GetArgumentVector doesn't terminate the vector with a nullptr.
+  // Do it to make it compatible with the real argv.
+  Args.push_back(nullptr);
+
+  Argc = Args.size() - 1;
+  Argv = Args.data();
+#endif
+}
+
+InitLLVM::~InitLLVM() { llvm_shutdown(); }

+ 2 - 4
tools/bugpoint/bugpoint.cpp

@@ -21,11 +21,11 @@
 #include "llvm/LinkAllIR.h"
 #include "llvm/LinkAllIR.h"
 #include "llvm/LinkAllPasses.h"
 #include "llvm/LinkAllPasses.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/PluginLoader.h"
 #include "llvm/Support/PluginLoader.h"
 #include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/Process.h"
 #include "llvm/Support/Process.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/Valgrind.h"
 #include "llvm/Support/Valgrind.h"
 #include "llvm/Transforms/IPO/AlwaysInliner.h"
 #include "llvm/Transforms/IPO/AlwaysInliner.h"
@@ -117,9 +117,7 @@ void initializePollyPasses(llvm::PassRegistry &Registry);
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
 #ifndef DEBUG_BUGPOINT
 #ifndef DEBUG_BUGPOINT
-  llvm::sys::PrintStackTraceOnErrorSignal(argv[0]);
-  llvm::PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 #endif
 #endif
 
 
   // Initialize passes
   // Initialize passes

+ 3 - 5
tools/dsymutil/dsymutil.cpp

@@ -28,10 +28,9 @@
 #include "llvm/Object/MachO.h"
 #include "llvm/Object/MachO.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/ThreadPool.h"
 #include "llvm/Support/ThreadPool.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
@@ -388,9 +387,8 @@ struct TempFileVector {
 } // namespace
 } // namespace
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  llvm::sys::PrintStackTraceOnErrorSignal(argv[0]);
-  llvm::PrettyStackTraceProgram StackPrinter(argc, argv);
-  llvm::llvm_shutdown_obj Shutdown;
+  InitLLVM X(argc, argv);
+
   void *P = (void *)(intptr_t)getOutputFileName;
   void *P = (void *)(intptr_t)getOutputFileName;
   std::string SDKPath = llvm::sys::fs::getMainExecutable(argv[0], P);
   std::string SDKPath = llvm::sys::fs::getMainExecutable(argv[0], P);
   SDKPath = llvm::sys::path::parent_path(SDKPath);
   SDKPath = llvm::sys::path::parent_path(SDKPath);

+ 2 - 4
tools/llc/llc.cpp

@@ -41,10 +41,9 @@
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Host.h"
 #include "llvm/Support/Host.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/PluginLoader.h"
 #include "llvm/Support/PluginLoader.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
@@ -269,8 +268,7 @@ static void InlineAsmDiagHandler(const SMDiagnostic &SMD, void *Context,
 // main - Entry point for the llc compiler.
 // main - Entry point for the llc compiler.
 //
 //
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
 
 
   // Enable debug stream buffering.
   // Enable debug stream buffering.
   EnableDebugBuffering = true;
   EnableDebugBuffering = true;

+ 2 - 6
tools/lli/lli.cpp

@@ -40,16 +40,15 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/DynamicLibrary.h"
 #include "llvm/Support/DynamicLibrary.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/MathExtras.h"
 #include "llvm/Support/MathExtras.h"
 #include "llvm/Support/Memory.h"
 #include "llvm/Support/Memory.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/PluginLoader.h"
 #include "llvm/Support/PluginLoader.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/Process.h"
 #include "llvm/Support/Process.h"
 #include "llvm/Support/Program.h"
 #include "llvm/Support/Program.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
@@ -316,10 +315,7 @@ static void reportError(SMDiagnostic Err, const char *ProgName) {
 // main Driver function
 // main Driver function
 //
 //
 int main(int argc, char **argv, char * const *envp) {
 int main(int argc, char **argv, char * const *envp) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-
-  atexit(llvm_shutdown); // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 
 
   if (argc > 1)
   if (argc > 1)
     ExitOnErr.setBanner(std::string(argv[0]) + ": ");
     ExitOnErr.setBanner(std::string(argv[0]) + ": ");

+ 4 - 9
tools/llvm-ar/llvm-ar.cpp

@@ -15,8 +15,6 @@
 #include "llvm/ADT/StringSwitch.h"
 #include "llvm/ADT/StringSwitch.h"
 #include "llvm/ADT/Triple.h"
 #include "llvm/ADT/Triple.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/LLVMContext.h"
-#include "llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h"
-#include "llvm/ToolDrivers/llvm-lib/LibDriver.h"
 #include "llvm/Object/Archive.h"
 #include "llvm/Object/Archive.h"
 #include "llvm/Object/ArchiveWriter.h"
 #include "llvm/Object/ArchiveWriter.h"
 #include "llvm/Object/MachO.h"
 #include "llvm/Object/MachO.h"
@@ -26,17 +24,17 @@
 #include "llvm/Support/Errc.h"
 #include "llvm/Support/Errc.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/LineIterator.h"
 #include "llvm/Support/LineIterator.h"
-#include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/Process.h"
 #include "llvm/Support/Process.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/StringSaver.h"
 #include "llvm/Support/StringSaver.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
+#include "llvm/ToolDrivers/llvm-dlltool/DlltoolDriver.h"
+#include "llvm/ToolDrivers/llvm-lib/LibDriver.h"
 
 
 #if !defined(_MSC_VER) && !defined(__MINGW32__)
 #if !defined(_MSC_VER) && !defined(__MINGW32__)
 #include <unistd.h>
 #include <unistd.h>
@@ -949,11 +947,8 @@ static int ranlib_main(int argc, char **argv) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
+  InitLLVM X(argc, argv);
   ToolName = argv[0];
   ToolName = argv[0];
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
 
 
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetMCs();
   llvm::InitializeAllTargetMCs();

+ 2 - 6
tools/llvm-as/llvm-as.cpp

@@ -22,9 +22,8 @@
 #include "llvm/IR/Verifier.h"
 #include "llvm/IR/Verifier.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/ToolOutputFile.h"
@@ -93,11 +92,8 @@ static void WriteOutputFile(const Module *M) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
   LLVMContext Context;
   LLVMContext Context;
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
   cl::ParseCommandLineOptions(argc, argv, "llvm .ll -> .bc assembler\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm .ll -> .bc assembler\n");
 
 
   // Parse the file now...
   // Parse the file now...

+ 2 - 7
tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp

@@ -33,11 +33,10 @@
 #include "llvm/Bitcode/LLVMBitCodes.h"
 #include "llvm/Bitcode/LLVMBitCodes.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/SHA1.h"
 #include "llvm/Support/SHA1.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 using namespace llvm;
 using namespace llvm;
 
 
@@ -964,11 +963,7 @@ static int AnalyzeBitcode() {
 
 
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv, "llvm-bcanalyzer file analyzer\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm-bcanalyzer file analyzer\n");
-
   return AnalyzeBitcode();
   return AnalyzeBitcode();
 }
 }

+ 2 - 6
tools/llvm-cov/llvm-cov.cpp

@@ -14,11 +14,10 @@
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/StringSwitch.h"
 #include "llvm/ADT/StringSwitch.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/Process.h"
 #include "llvm/Support/Process.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 #include <string>
 #include <string>
 
 
@@ -59,10 +58,7 @@ static int versionMain(int argc, const char *argv[]) {
 }
 }
 
 
 int main(int argc, const char **argv) {
 int main(int argc, const char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 
 
   // If argv[0] is or ends with 'gcov', always be gcov compatible
   // If argv[0] is or ends with 'gcov', always be gcov compatible
   if (sys::path::stem(argv[0]).endswith_lower("gcov"))
   if (sys::path::stem(argv[0]).endswith_lower("gcov"))

+ 4 - 15
tools/llvm-cvtres/llvm-cvtres.cpp

@@ -20,6 +20,7 @@
 #include "llvm/Option/Option.h"
 #include "llvm/Option/Option.h"
 #include "llvm/Support/BinaryStreamError.h"
 #include "llvm/Support/BinaryStreamError.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Error.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/PrettyStackTrace.h"
@@ -63,8 +64,6 @@ class CvtResOptTable : public opt::OptTable {
 public:
 public:
   CvtResOptTable() : OptTable(InfoTable, true) {}
   CvtResOptTable() : OptTable(InfoTable, true) {}
 };
 };
-
-static ExitOnError ExitOnErr;
 }
 }
 
 
 LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) {
 LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) {
@@ -95,22 +94,12 @@ template <typename T> T error(Expected<T> EC) {
   return std::move(EC.get());
   return std::move(EC.get());
 }
 }
 
 
-int main(int argc_, const char *argv_[]) {
-  sys::PrintStackTraceOnErrorSignal(argv_[0]);
-  PrettyStackTraceProgram X(argc_, argv_);
-
-  ExitOnErr.setBanner("llvm-cvtres: ");
-
-  SmallVector<const char *, 256> argv;
-  SpecificBumpPtrAllocator<char> ArgAllocator;
-  ExitOnErr(errorCodeToError(sys::Process::GetArgumentVector(
-      argv, 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;
   CvtResOptTable T;
   unsigned MAI, MAC;
   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);
   opt::InputArgList InputArgs = T.ParseArgs(ArgsArr, MAI, MAC);
 
 
   if (InputArgs.hasArg(OPT_HELP)) {
   if (InputArgs.hasArg(OPT_HELP)) {

+ 2 - 6
tools/llvm-cxxdump/llvm-cxxdump.cpp

@@ -20,9 +20,7 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Endian.h"
 #include "llvm/Support/Endian.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
@@ -533,9 +531,7 @@ static void dumpInput(StringRef File) {
 }
 }
 
 
 int main(int argc, const char *argv[]) {
 int main(int argc, const char *argv[]) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;
+  InitLLVM X(argc, argv);
 
 
   // Initialize targets.
   // Initialize targets.
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetInfos();

+ 2 - 4
tools/llvm-cxxfilt/llvm-cxxfilt.cpp

@@ -9,8 +9,7 @@
 
 
 #include "llvm/Demangle/Demangle.h"
 #include "llvm/Demangle/Demangle.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 #include <cstdlib>
 #include <cstdlib>
 #include <iostream>
 #include <iostream>
@@ -81,8 +80,7 @@ static void demangle(llvm::raw_ostream &OS, const std::string &Mangled) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
 
 
   cl::ParseCommandLineOptions(argc, argv, "llvm symbol undecoration tool\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm symbol undecoration tool\n");
 
 

+ 3 - 8
tools/llvm-dis/llvm-dis.cpp

@@ -16,23 +16,21 @@
 //
 //
 //===----------------------------------------------------------------------===//
 //===----------------------------------------------------------------------===//
 
 
-#include "llvm/IR/LLVMContext.h"
 #include "llvm/Bitcode/BitcodeReader.h"
 #include "llvm/Bitcode/BitcodeReader.h"
 #include "llvm/IR/AssemblyAnnotationWriter.h"
 #include "llvm/IR/AssemblyAnnotationWriter.h"
 #include "llvm/IR/DebugInfo.h"
 #include "llvm/IR/DebugInfo.h"
 #include "llvm/IR/DiagnosticInfo.h"
 #include "llvm/IR/DiagnosticInfo.h"
 #include "llvm/IR/DiagnosticPrinter.h"
 #include "llvm/IR/DiagnosticPrinter.h"
 #include "llvm/IR/IntrinsicInst.h"
 #include "llvm/IR/IntrinsicInst.h"
+#include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Module.h"
 #include "llvm/IR/Module.h"
 #include "llvm/IR/Type.h"
 #include "llvm/IR/Type.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/FormattedStream.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include <system_error>
 #include <system_error>
 using namespace llvm;
 using namespace llvm;
@@ -162,14 +160,11 @@ static std::unique_ptr<Module> openInputFile(LLVMContext &Context) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
 
 
   ExitOnErr.setBanner(std::string(argv[0]) + ": error: ");
   ExitOnErr.setBanner(std::string(argv[0]) + ": error: ");
 
 
   LLVMContext Context;
   LLVMContext Context;
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
   Context.setDiagnosticHandler(
   Context.setDiagnosticHandler(
       llvm::make_unique<LLVMDisDiagnosticHandler>(argv[0]));
       llvm::make_unique<LLVMDisDiagnosticHandler>(argv[0]));
   cl::ParseCommandLineOptions(argc, argv, "llvm .bc -> .ll disassembler\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm .bc -> .ll disassembler\n");

+ 2 - 7
tools/llvm-dwarfdump/llvm-dwarfdump.cpp

@@ -22,12 +22,10 @@
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/Regex.h"
 #include "llvm/Support/Regex.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
@@ -510,10 +508,7 @@ static std::vector<std::string> expandBundle(const std::string &InputPath) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 
 
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetMCs();
   llvm::InitializeAllTargetMCs();

+ 2 - 7
tools/llvm-extract/llvm-extract.cpp

@@ -25,10 +25,8 @@
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/PrettyStackTrace.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/Regex.h"
 #include "llvm/Support/Regex.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/ToolOutputFile.h"
@@ -113,12 +111,9 @@ static cl::opt<bool> PreserveAssemblyUseListOrder(
     cl::init(false), cl::Hidden);
     cl::init(false), cl::Hidden);
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
 
 
   LLVMContext Context;
   LLVMContext Context;
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
   cl::ParseCommandLineOptions(argc, argv, "llvm extractor\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm extractor\n");
 
 
   // Use lazy loading, since we only care about selected global values.
   // Use lazy loading, since we only care about selected global values.

+ 2 - 10
tools/llvm-jitlistener/llvm-jitlistener.cpp

@@ -24,10 +24,8 @@
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Host.h"
 #include "llvm/Support/Host.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
@@ -178,16 +176,10 @@ InputFilename(cl::Positional, cl::desc("<input IR file>"),
                cl::Required);
                cl::Required);
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
-
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv, "llvm jit event listener test utility\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm jit event listener test utility\n");
 
 
   JitEventListenerTest Test;
   JitEventListenerTest Test;
-
   Test.ProcessInput(InputFilename);
   Test.ProcessInput(InputFilename);
-
   return 0;
   return 0;
 }
 }

+ 2 - 8
tools/llvm-link/llvm-link.cpp

@@ -26,10 +26,8 @@
 #include "llvm/Linker/Linker.h"
 #include "llvm/Linker/Linker.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/ToolOutputFile.h"
@@ -345,16 +343,12 @@ static bool linkFiles(const char *argv0, LLVMContext &Context, Linker &L,
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-
+  InitLLVM X(argc, argv);
   ExitOnErr.setBanner(std::string(argv[0]) + ": ");
   ExitOnErr.setBanner(std::string(argv[0]) + ": ");
 
 
   LLVMContext Context;
   LLVMContext Context;
   Context.setDiagnosticHandler(
   Context.setDiagnosticHandler(
     llvm::make_unique<LLVMLinkDiagnosticHandler>(), true);
     llvm::make_unique<LLVMLinkDiagnosticHandler>(), true);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
   cl::ParseCommandLineOptions(argc, argv, "llvm linker\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm linker\n");
 
 
   if (!DisableDITypeMap)
   if (!DisableDITypeMap)

+ 2 - 8
tools/llvm-lto/llvm-lto.cpp

@@ -40,11 +40,9 @@
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/ToolOutputFile.h"
@@ -799,11 +797,7 @@ private:
 } // end namespace thinlto
 } // end namespace thinlto
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv, "llvm LTO linker\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm LTO linker\n");
 
 
   if (OptLevel < '0' || OptLevel > '3')
   if (OptLevel < '0' || OptLevel > '3')

+ 2 - 7
tools/llvm-mc/llvm-mc.cpp

@@ -31,10 +31,8 @@
 #include "llvm/Support/FileUtilities.h"
 #include "llvm/Support/FileUtilities.h"
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/FormattedStream.h"
 #include "llvm/Support/Host.h"
 #include "llvm/Support/Host.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
@@ -294,10 +292,7 @@ static int AssembleInput(const char *ProgName, const Target *TheTarget,
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 
 
   // Initialize targets and assembly printers/parsers.
   // Initialize targets and assembly printers/parsers.
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetInfos();

+ 2 - 5
tools/llvm-mca/llvm-mca.cpp

@@ -41,9 +41,8 @@
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
@@ -276,9 +275,7 @@ public:
 } // end of anonymous namespace
 } // end of anonymous namespace
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 
 
   // Initialize targets and assembly parsers.
   // Initialize targets and assembly parsers.
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetInfos();

+ 4 - 14
tools/llvm-mt/llvm-mt.cpp

@@ -17,6 +17,7 @@
 #include "llvm/Option/Option.h"
 #include "llvm/Option/Option.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/FileOutputBuffer.h"
 #include "llvm/Support/FileOutputBuffer.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
@@ -61,8 +62,6 @@ class CvtResOptTable : public opt::OptTable {
 public:
 public:
   CvtResOptTable() : OptTable(InfoTable, true) {}
   CvtResOptTable() : OptTable(InfoTable, true) {}
 };
 };
-
-static ExitOnError ExitOnErr;
 } // namespace
 } // namespace
 
 
 LLVM_ATTRIBUTE_NORETURN void reportError(Twine Msg) {
 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;
   CvtResOptTable T;
   unsigned MAI, MAC;
   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);
   opt::InputArgList InputArgs = T.ParseArgs(ArgsArr, MAI, MAC);
 
 
   for (auto *Arg : InputArgs.filtered(OPT_INPUT)) {
   for (auto *Arg : InputArgs.filtered(OPT_INPUT)) {

+ 2 - 7
tools/llvm-nm/llvm-nm.cpp

@@ -33,9 +33,8 @@
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/Program.h"
 #include "llvm/Support/Program.h"
 #include "llvm/Support/Signals.h"
 #include "llvm/Support/Signals.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
@@ -2016,11 +2015,7 @@ static void dumpSymbolNamesFromFile(std::string &Filename) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv, "llvm symbol table dumper\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm symbol table dumper\n");
 
 
   // llvm-nm only reads binary files.
   // llvm-nm only reads binary files.

+ 2 - 7
tools/llvm-objcopy/llvm-objcopy.cpp

@@ -24,9 +24,7 @@
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/FileOutputBuffer.h"
 #include "llvm/Support/FileOutputBuffer.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 #include <algorithm>
 #include <algorithm>
 #include <cassert>
 #include <cassert>
@@ -327,10 +325,7 @@ std::unique_ptr<Reader> CreateReader() {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv, "llvm objcopy utility\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm objcopy utility\n");
   ToolName = argv[0];
   ToolName = argv[0];
   if (InputFilename.empty()) {
   if (InputFilename.empty()) {

+ 2 - 7
tools/llvm-objdump/llvm-objdump.cpp

@@ -51,10 +51,8 @@
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/GraphWriter.h"
 #include "llvm/Support/GraphWriter.h"
 #include "llvm/Support/Host.h"
 #include "llvm/Support/Host.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
@@ -2179,10 +2177,7 @@ static void DumpInput(StringRef file) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 
 
   // Initialize targets and assembly printers/parsers.
   // Initialize targets and assembly printers/parsers.
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetInfos();

+ 4 - 5
tools/llvm-opt-report/OptReport.cpp

@@ -14,20 +14,19 @@
 ///
 ///
 //===----------------------------------------------------------------------===//
 //===----------------------------------------------------------------------===//
 
 
-#include "llvm/Support/CommandLine.h"
 #include "llvm/Demangle/Demangle.h"
 #include "llvm/Demangle/Demangle.h"
+#include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/ErrorOr.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/LineIterator.h"
 #include "llvm/Support/LineIterator.h"
-#include "llvm/Support/FileSystem.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Program.h"
 #include "llvm/Support/Program.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/YAMLTraits.h"
 #include "llvm/Support/YAMLTraits.h"
+#include "llvm/Support/raw_ostream.h"
 #include <cstdlib>
 #include <cstdlib>
 #include <map>
 #include <map>
 #include <set>
 #include <set>
@@ -506,7 +505,7 @@ static bool writeReport(LocationInfoTy &LocationInfo) {
 }
 }
 
 
 int main(int argc, const char **argv) {
 int main(int argc, const char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
+  InitLLVM X(argc, argv);
 
 
   cl::HideUnrelatedOptions(OptReportCategory);
   cl::HideUnrelatedOptions(OptReportCategory);
   cl::ParseCommandLineOptions(
   cl::ParseCommandLineOptions(

+ 4 - 14
tools/llvm-pdbutil/llvm-pdbutil.cpp

@@ -73,6 +73,7 @@
 #include "llvm/Support/FileOutputBuffer.h"
 #include "llvm/Support/FileOutputBuffer.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/LineIterator.h"
 #include "llvm/Support/LineIterator.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
@@ -84,7 +85,6 @@
 #include "llvm/Support/Signals.h"
 #include "llvm/Support/Signals.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 
 
-
 using namespace llvm;
 using namespace llvm;
 using namespace llvm::codeview;
 using namespace llvm::codeview;
 using namespace llvm::msf;
 using namespace llvm::msf;
@@ -1205,21 +1205,11 @@ static void simplifyChunkList(llvm::cl::list<opts::ModuleSubsection> &Chunks) {
   Chunks.push_back(opts::ModuleSubsection::All);
   Chunks.push_back(opts::ModuleSubsection::All);
 }
 }
 
 
-int main(int argc_, const char *argv_[]) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv_[0]);
-  PrettyStackTraceProgram X(argc_, argv_);
-
+int main(int Argc, const char **Argv) {
+  InitLLVM X(Argc, Argv);
   ExitOnErr.setBanner("llvm-pdbutil: ");
   ExitOnErr.setBanner("llvm-pdbutil: ");
 
 
-  SmallVector<const char *, 256> argv;
-  SpecificBumpPtrAllocator<char> ArgAllocator;
-  ExitOnErr(errorCodeToError(sys::Process::GetArgumentVector(
-      argv, makeArrayRef(argv_, argc_), ArgAllocator)));
-
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
-
-  cl::ParseCommandLineOptions(argv.size(), argv.data(), "LLVM PDB Dumper\n");
+  cl::ParseCommandLineOptions(Argc, Argv, "LLVM PDB Dumper\n");
 
 
   if (opts::BytesSubcommand) {
   if (opts::BytesSubcommand) {
     if (!parseRange(opts::bytes::DumpBlockRangeOpt,
     if (!parseRange(opts::bytes::DumpBlockRangeOpt,

+ 2 - 7
tools/llvm-profdata/llvm-profdata.cpp

@@ -24,11 +24,9 @@
 #include "llvm/Support/Errc.h"
 #include "llvm/Support/Errc.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/ThreadPool.h"
 #include "llvm/Support/ThreadPool.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 #include <algorithm>
 #include <algorithm>
@@ -802,10 +800,7 @@ static int show_main(int argc, const char *argv[]) {
 }
 }
 
 
 int main(int argc, const char *argv[]) {
 int main(int argc, const char *argv[]) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 
 
   StringRef ProgName(sys::path::filename(argv[0]));
   StringRef ProgName(sys::path::filename(argv[0]));
   if (argc > 1) {
   if (argc > 1) {

+ 4 - 12
tools/llvm-rc/llvm-rc.cpp

@@ -21,6 +21,7 @@
 #include "llvm/Option/ArgList.h"
 #include "llvm/Option/ArgList.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/PrettyStackTrace.h"
@@ -76,22 +77,13 @@ LLVM_ATTRIBUTE_NORETURN static void fatalError(const Twine &Message) {
 
 
 } // anonymous namespace
 } // anonymous namespace
 
 
-int main(int argc_, const char *argv_[]) {
-  sys::PrintStackTraceOnErrorSignal(argv_[0]);
-  PrettyStackTraceProgram X(argc_, argv_);
-
+int main(int Argc, const char **Argv) {
+  InitLLVM X(Argc, Argv);
   ExitOnErr.setBanner("llvm-rc: ");
   ExitOnErr.setBanner("llvm-rc: ");
 
 
-  SmallVector<const char *, 256> argv;
-  SpecificBumpPtrAllocator<char> ArgAllocator;
-  ExitOnErr(errorCodeToError(sys::Process::GetArgumentVector(
-      argv, makeArrayRef(argv_, argc_), ArgAllocator)));
-
-  llvm_shutdown_obj Y;
-
   RcOptTable T;
   RcOptTable T;
   unsigned MAI, MAC;
   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);
   opt::InputArgList InputArgs = T.ParseArgs(ArgsArr, MAI, MAC);
 
 
   // The tool prints nothing when invoked with no command-line arguments.
   // The tool prints nothing when invoked with no command-line arguments.

+ 3 - 8
tools/llvm-readobj/llvm-readobj.cpp

@@ -35,11 +35,9 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FormatVariadic.h"
 #include "llvm/Support/FormatVariadic.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/ScopedPrinter.h"
 #include "llvm/Support/ScopedPrinter.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetRegistry.h"
 
 
 using namespace llvm;
 using namespace llvm;
@@ -556,17 +554,14 @@ static void dumpInput(StringRef File) {
 }
 }
 
 
 int main(int argc, const char *argv[]) {
 int main(int argc, const char *argv[]) {
-  StringRef ToolName = argv[0];
-  sys::PrintStackTraceOnErrorSignal(ToolName);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;
+  InitLLVM X(argc, argv);
 
 
   // Register the target printer for --version.
   // Register the target printer for --version.
   cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);
   cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);
 
 
   opts::WideOutput.setHiddenFlag(cl::Hidden);
   opts::WideOutput.setHiddenFlag(cl::Hidden);
 
 
-  if (sys::path::stem(ToolName).find("readelf") != StringRef::npos)
+  if (sys::path::stem(argv[0]).find("readelf") != StringRef::npos)
     opts::Output = opts::GNU;
     opts::Output = opts::GNU;
 
 
   cl::ParseCommandLineOptions(argc, argv, "LLVM Object Reader\n");
   cl::ParseCommandLineOptions(argc, argv, "LLVM Object Reader\n");

+ 2 - 7
tools/llvm-rtdyld/llvm-rtdyld.cpp

@@ -27,11 +27,9 @@
 #include "llvm/Object/SymbolSize.h"
 #include "llvm/Object/SymbolSize.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/DynamicLibrary.h"
 #include "llvm/Support/DynamicLibrary.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/Memory.h"
 #include "llvm/Support/Memory.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/TargetSelect.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
@@ -736,11 +734,8 @@ static int linkAndVerify() {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-
+  InitLLVM X(argc, argv);
   ProgramName = argv[0];
   ProgramName = argv[0];
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
 
 
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetInfos();
   llvm::InitializeAllTargetMCs();
   llvm::InitializeAllTargetMCs();

+ 2 - 8
tools/llvm-size/llvm-size.cpp

@@ -23,10 +23,8 @@
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 #include <algorithm>
 #include <algorithm>
 #include <string>
 #include <string>
@@ -854,11 +852,7 @@ static void printBerkelyTotals() {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print a stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv, "llvm object size dumper\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm object size dumper\n");
 
 
   ToolName = argv[0];
   ToolName = argv[0];

+ 2 - 4
tools/llvm-strings/llvm-strings.cpp

@@ -16,10 +16,9 @@
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Error.h"
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Format.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/Program.h"
 #include "llvm/Support/Program.h"
-#include "llvm/Support/Signals.h"
 #include <cctype>
 #include <cctype>
 #include <string>
 #include <string>
 
 
@@ -94,8 +93,7 @@ static void strings(raw_ostream &OS, StringRef FileName, StringRef Contents) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
 
 
   cl::ParseCommandLineOptions(argc, argv, "llvm string dumper\n");
   cl::ParseCommandLineOptions(argc, argv, "llvm string dumper\n");
   if (MinLength == 0) {
   if (MinLength == 0) {

+ 2 - 7
tools/llvm-symbolizer/llvm-symbolizer.cpp

@@ -22,10 +22,8 @@
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Path.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 #include <cstdio>
 #include <cstdio>
 #include <cstring>
 #include <cstring>
@@ -145,10 +143,7 @@ static bool parseCommand(StringRef InputString, bool &IsData,
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  // Print stack trace if we signal out.
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
+  InitLLVM X(argc, argv);
 
 
   llvm::sys::InitializeCOMRAII COM(llvm::sys::COMThreadingMode::MultiThreaded);
   llvm::sys::InitializeCOMRAII COM(llvm::sys::COMThreadingMode::MultiThreaded);
 
 

+ 3 - 7
tools/obj2yaml/obj2yaml.cpp

@@ -7,14 +7,12 @@
 //
 //
 //===----------------------------------------------------------------------===//
 //===----------------------------------------------------------------------===//
 
 
-#include "Error.h"
 #include "obj2yaml.h"
 #include "obj2yaml.h"
+#include "Error.h"
 #include "llvm/Object/Archive.h"
 #include "llvm/Object/Archive.h"
 #include "llvm/Object/COFF.h"
 #include "llvm/Object/COFF.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
-#include "llvm/Support/ManagedStatic.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
+#include "llvm/Support/InitLLVM.h"
 
 
 using namespace llvm;
 using namespace llvm;
 using namespace llvm::object;
 using namespace llvm::object;
@@ -62,10 +60,8 @@ cl::opt<std::string> InputFilename(cl::Positional, cl::desc("<input file>"),
                                    cl::init("-"));
                                    cl::init("-"));
 
 
 int main(int argc, char *argv[]) {
 int main(int argc, char *argv[]) {
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv);
   cl::ParseCommandLineOptions(argc, argv);
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
 
 
   if (Error Err = dumpInput(InputFilename)) {
   if (Error Err = dumpInput(InputFilename)) {
     reportError(InputFilename, std::move(Err));
     reportError(InputFilename, std::move(Err));

+ 2 - 6
tools/opt/opt.cpp

@@ -41,10 +41,8 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/Host.h"
 #include "llvm/Support/Host.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/PluginLoader.h"
 #include "llvm/Support/PluginLoader.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/TargetRegistry.h"
 #include "llvm/Support/TargetRegistry.h"
@@ -367,13 +365,11 @@ void initializePollyPasses(llvm::PassRegistry &Registry);
 // main for opt
 // main for opt
 //
 //
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  llvm::PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
 
 
   // Enable debug stream buffering.
   // Enable debug stream buffering.
   EnableDebugBuffering = true;
   EnableDebugBuffering = true;
 
 
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
   LLVMContext Context;
   LLVMContext Context;
 
 
   InitializeAllTargets();
   InitializeAllTargets();

+ 2 - 6
tools/verify-uselistorder/verify-uselistorder.cpp

@@ -42,10 +42,8 @@
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileUtilities.h"
 #include "llvm/Support/FileUtilities.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/SystemUtils.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
@@ -527,13 +525,11 @@ static void reverseUseLists(Module &M) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  llvm::PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
 
 
   // Enable debug stream buffering.
   // Enable debug stream buffering.
   EnableDebugBuffering = true;
   EnableDebugBuffering = true;
 
 
-  llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
   LLVMContext Context;
   LLVMContext Context;
 
 
   cl::ParseCommandLineOptions(argc, argv,
   cl::ParseCommandLineOptions(argc, argv,

+ 2 - 6
tools/yaml2obj/yaml2obj.cpp

@@ -19,10 +19,8 @@
 #include "llvm/ObjectYAML/ObjectYAML.h"
 #include "llvm/ObjectYAML/ObjectYAML.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/FileSystem.h"
 #include "llvm/Support/FileSystem.h"
-#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/ToolOutputFile.h"
 #include "llvm/Support/YAMLTraits.h"
 #include "llvm/Support/YAMLTraits.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
@@ -70,10 +68,8 @@ static int convertYAML(yaml::Input &YIn, raw_ostream &Out) {
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv);
   cl::ParseCommandLineOptions(argc, argv);
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
-  llvm_shutdown_obj Y;  // Call llvm_shutdown() on exit.
 
 
   if (OutputFilename.empty())
   if (OutputFilename.empty())
     OutputFilename = "-";
     OutputFilename = "-";

+ 2 - 4
utils/FileCheck/FileCheck.cpp

@@ -21,10 +21,9 @@
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringSet.h"
 #include "llvm/ADT/StringSet.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/CommandLine.h"
+#include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/PrettyStackTrace.h"
 #include "llvm/Support/Regex.h"
 #include "llvm/Support/Regex.h"
-#include "llvm/Support/Signals.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/SourceMgr.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/Support/raw_ostream.h"
 #include <algorithm>
 #include <algorithm>
@@ -1360,8 +1359,7 @@ bool CheckInput(SourceMgr &SM, StringRef Buffer,
 }
 }
 
 
 int main(int argc, char **argv) {
 int main(int argc, char **argv) {
-  sys::PrintStackTraceOnErrorSignal(argv[0]);
-  PrettyStackTraceProgram X(argc, argv);
+  InitLLVM X(argc, argv);
   cl::ParseCommandLineOptions(argc, argv);
   cl::ParseCommandLineOptions(argc, argv);
 
 
   if (!ValidateCheckPrefixes()) {
   if (!ValidateCheckPrefixes()) {