LCOV - code coverage report
Current view: top level - lib/Support - InitLLVM.cpp (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 4 4 100.0 %
Date: 2018-10-20 13:21:21 Functions: 2 2 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===-- InitLLVM.cpp -----------------------------------------------------===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : 
      10             : #include "llvm/Support/InitLLVM.h"
      11             : #include "llvm/Support/Error.h"
      12             : #include "llvm/Support/ManagedStatic.h"
      13             : #include "llvm/Support/PrettyStackTrace.h"
      14             : #include "llvm/Support/Process.h"
      15             : #include "llvm/Support/Signals.h"
      16             : #include <string>
      17             : 
      18             : #ifdef _WIN32
      19             : #include "Windows/WindowsSupport.h"
      20             : #endif
      21             : 
      22             : using namespace llvm;
      23             : using namespace llvm::sys;
      24             : 
      25      331818 : InitLLVM::InitLLVM(int &Argc, const char **&Argv) : StackPrinter(Argc, Argv) {
      26      331818 :   sys::PrintStackTraceOnErrorSignal(Argv[0]);
      27             : 
      28             : #ifdef _WIN32
      29             :   // We use UTF-8 as the internal character encoding. On Windows,
      30             :   // arguments passed to main() may not be encoded in UTF-8. In order
      31             :   // to reliably detect encoding of command line arguments, we use an
      32             :   // Windows API to obtain arguments, convert them to UTF-8, and then
      33             :   // write them back to the Argv vector.
      34             :   //
      35             :   // There's probably other way to do the same thing (e.g. using
      36             :   // wmain() instead of main()), but this way seems less intrusive
      37             :   // than that.
      38             :   std::string Banner = std::string(Argv[0]) + ": ";
      39             :   ExitOnError ExitOnErr(Banner);
      40             : 
      41             :   ExitOnErr(errorCodeToError(windows::GetCommandLineArguments(Args, Alloc)));
      42             : 
      43             :   // GetCommandLineArguments doesn't terminate the vector with a
      44             :   // nullptr.  Do it to make it compatible with the real argv.
      45             :   Args.push_back(nullptr);
      46             : 
      47             :   Argc = Args.size() - 1;
      48             :   Argv = Args.data();
      49             : #endif
      50      165909 : }
      51             : 
      52      329580 : InitLLVM::~InitLLVM() { llvm_shutdown(); }

Generated by: LCOV version 1.13