LCOV - code coverage report
Current view: top level - include/llvm - LinkAllIR.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 4 8 50.0 %
Date: 2017-09-14 15:23:50 Functions: 2 2 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===----- LinkAllIR.h - Reference All VMCore Code --------------*- C++ -*-===//
       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             : // This header file pulls in all the object modules of the VMCore library so
      11             : // that tools like llc, opt, and lli can ensure they are linked with all symbols
      12             : // from libVMCore.a It should only be used from a tool's main program.
      13             : //
      14             : //===----------------------------------------------------------------------===//
      15             : 
      16             : #ifndef LLVM_LINKALLIR_H
      17             : #define LLVM_LINKALLIR_H
      18             : 
      19             : #include "llvm/BinaryFormat/Dwarf.h"
      20             : #include "llvm/IR/InlineAsm.h"
      21             : #include "llvm/IR/Instructions.h"
      22             : #include "llvm/IR/LLVMContext.h"
      23             : #include "llvm/IR/Module.h"
      24             : #include "llvm/IR/Verifier.h"
      25             : #include "llvm/Support/DynamicLibrary.h"
      26             : #include "llvm/Support/MathExtras.h"
      27             : #include "llvm/Support/Memory.h"
      28             : #include "llvm/Support/Mutex.h"
      29             : #include "llvm/Support/Path.h"
      30             : #include "llvm/Support/Process.h"
      31             : #include "llvm/Support/Program.h"
      32             : #include "llvm/Support/Signals.h"
      33             : #include <cstdlib>
      34             : 
      35             : namespace {
      36             :   struct ForceVMCoreLinking {
      37        9158 :     ForceVMCoreLinking() {
      38             :       // We must reference VMCore in such a way that compilers will not
      39             :       // delete it all as dead code, even with whole program optimization,
      40             :       // yet is effectively a NO-OP. As the compiler isn't smart enough
      41             :       // to know that getenv() never returns -1, this will do the job.
      42        9158 :       if (std::getenv("bar") != (char*) -1)
      43        9158 :         return;
      44           0 :       llvm::LLVMContext Context;
      45           0 :       (void)new llvm::Module("", Context);
      46           0 :       (void)new llvm::UnreachableInst(Context);
      47           0 :       (void)    llvm::createVerifierPass(); 
      48             :     }
      49        9158 :   } ForceVMCoreLinking;
      50             : }
      51             : 
      52             : #endif

Generated by: LCOV version 1.13