LCOV - code coverage report
Current view: top level - lib/Support - Threading.cpp (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 6 7 85.7 %
Date: 2017-09-14 15:23:50 Functions: 2 2 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===-- llvm/Support/Threading.cpp- Control multithreading mode --*- 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 file defines helper functions for running LLVM in a multi-threaded
      11             : // environment.
      12             : //
      13             : //===----------------------------------------------------------------------===//
      14             : 
      15             : #include "llvm/Support/Threading.h"
      16             : #include "llvm/Config/config.h"
      17             : #include "llvm/Support/Host.h"
      18             : 
      19             : #include <cassert>
      20             : #include <errno.h>
      21             : #include <stdlib.h>
      22             : #include <string.h>
      23             : 
      24             : using namespace llvm;
      25             : 
      26             : //===----------------------------------------------------------------------===//
      27             : //=== WARNING: Implementation here must contain only TRULY operating system
      28             : //===          independent code.
      29             : //===----------------------------------------------------------------------===//
      30             : 
      31    40946551 : bool llvm::llvm_is_multithreaded() {
      32             : #if LLVM_ENABLE_THREADS != 0
      33    40946551 :   return true;
      34             : #else
      35             :   return false;
      36             : #endif
      37             : }
      38             : 
      39             : #if LLVM_ENABLE_THREADS == 0 ||                                                \
      40             :     (!defined(LLVM_ON_WIN32) && !defined(HAVE_PTHREAD_H))
      41             : // Support for non-Win32, non-pthread implementation.
      42             : void llvm::llvm_execute_on_thread(void (*Fn)(void *), void *UserData,
      43             :                                   unsigned RequestedStackSize) {
      44             :   (void)RequestedStackSize;
      45             :   Fn(UserData);
      46             : }
      47             : 
      48             : unsigned llvm::heavyweight_hardware_concurrency() { return 1; }
      49             : 
      50             : uint64_t llvm::get_threadid() { return 0; }
      51             : 
      52             : uint32_t llvm::get_max_thread_name_length() { return 0; }
      53             : 
      54             : void llvm::set_thread_name(const Twine &Name) {}
      55             : 
      56             : void llvm::get_thread_name(SmallVectorImpl<char> &Name) { Name.clear(); }
      57             : 
      58             : #else
      59             : 
      60             : #include <thread>
      61       72682 : unsigned llvm::heavyweight_hardware_concurrency() {
      62             :   // Since we can't get here unless LLVM_ENABLE_THREADS == 1, it is safe to use
      63             :   // `std::thread` directly instead of `llvm::thread` (and indeed, doing so
      64             :   // allows us to not define `thread` in the llvm namespace, which conflicts
      65             :   // with some platforms such as FreeBSD whose headers also define a struct
      66             :   // called `thread` in the global namespace which can cause ambiguity due to
      67             :   // ADL.
      68       72682 :   int NumPhysical = sys::getHostNumPhysicalCores();
      69       72682 :   if (NumPhysical == -1)
      70           0 :     return std::thread::hardware_concurrency();
      71       72682 :   return NumPhysical;
      72             : }
      73             : 
      74             : // Include the platform-specific parts of this class.
      75             : #ifdef LLVM_ON_UNIX
      76             : #include "Unix/Threading.inc"
      77             : #endif
      78             : #ifdef LLVM_ON_WIN32
      79             : #include "Windows/Threading.inc"
      80             : #endif
      81             : 
      82             : #endif

Generated by: LCOV version 1.13