Coverage Report

Created: 2017-10-03 07:32

/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/include/llvm/Support/ManagedStatic.h
Line
Count
Source
1
//===-- llvm/Support/ManagedStatic.h - Static Global wrapper ----*- 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 the ManagedStatic class and the llvm_shutdown() function.
11
//
12
//===----------------------------------------------------------------------===//
13
14
#ifndef LLVM_SUPPORT_MANAGEDSTATIC_H
15
#define LLVM_SUPPORT_MANAGEDSTATIC_H
16
17
#include <atomic>
18
#include <cstddef>
19
20
namespace llvm {
21
22
/// object_creator - Helper method for ManagedStatic.
23
template <class C> struct object_creator {
24
1.13M
  static void *call() { return new C(); }
llvm::object_creator<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::call()
Line
Count
Source
24
48.2k
  static void *call() { return new C(); }
SampleProf.cpp:llvm::object_creator<(anonymous namespace)::SampleProfErrorCategoryType>::call()
Line
Count
Source
24
100
  static void *call() { return new C(); }
Unexecuted instantiation: InstrProf.cpp:llvm::object_creator<(anonymous namespace)::InstrProfErrorCategoryType>::call()
BitcodeReader.cpp:llvm::object_creator<(anonymous namespace)::BitcodeErrorCategoryType>::call()
Line
Count
Source
24
66
  static void *call() { return new C(); }
CodeViewError.cpp:llvm::object_creator<(anonymous namespace)::CodeViewErrorCategory>::call()
Line
Count
Source
24
94
  static void *call() { return new C(); }
llvm::object_creator<llvm::SmallVector<std::__1::pair<llvm::PassManagerBuilder::ExtensionPointTy, std::__1::function<void (llvm::PassManagerBuilder const&, llvm::legacy::PassManagerBase&)> >, 8u> >::call()
Line
Count
Source
24
69.8k
  static void *call() { return new C(); }
llvm::object_creator<std::__1::vector<std::__1::pair<void (*)(void*), void*>, std::__1::allocator<std::__1::pair<void (*)(void*), void*> > > >::call()
Line
Count
Source
24
108k
  static void *call() { return new C(); }
llvm::object_creator<llvm::sys::SmartMutex<false> >::call()
Line
Count
Source
24
1.09k
  static void *call() { return new C(); }
llvm::object_creator<llvm::sys::DynamicLibrary::HandleSet>::call()
Line
Count
Source
24
348
  static void *call() { return new C(); }
llvm::object_creator<llvm::StringMap<void*, llvm::MallocAllocator> >::call()
Line
Count
Source
24
2
  static void *call() { return new C(); }
Timer.cpp:llvm::object_creator<(anonymous namespace)::Name2PairMap>::call()
Line
Count
Source
24
6
  static void *call() { return new C(); }
llvm::object_creator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::call()
Line
Count
Source
24
102k
  static void *call() { return new C(); }
llvm::object_creator<llvm::OptionRegistry>::call()
Line
Count
Source
24
24.6k
  static void *call() { return new C(); }
Error.cpp:llvm::object_creator<(anonymous namespace)::ErrorErrorCategory>::call()
Line
Count
Source
24
1.90k
  static void *call() { return new C(); }
llvm::object_creator<llvm::DebugCounter>::call()
Line
Count
Source
24
92.0k
  static void *call() { return new C(); }
CommandLine.cpp:llvm::object_creator<(anonymous namespace)::CommandLineParser>::call()
Line
Count
Source
24
110k
  static void *call() { return new C(); }
SelectionDAG.cpp:llvm::object_creator<(anonymous namespace)::EVTArray>::call()
Line
Count
Source
24
33.2k
  static void *call() { return new C(); }
llvm::object_creator<std::__1::set<llvm::EVT, llvm::EVT::compareRawBits, std::__1::allocator<llvm::EVT> > >::call()
Line
Count
Source
24
2.75k
  static void *call() { return new C(); }
llvm::object_creator<llvm::PassRegistry>::call()
Line
Count
Source
24
100k
  static void *call() { return new C(); }
llvm::object_creator<llvm::sys::SmartMutex<true> >::call()
Line
Count
Source
24
173k
  static void *call() { return new C(); }
LegacyPassManager.cpp:llvm::object_creator<(anonymous namespace)::TimingInfo>::call()
Line
Count
Source
24
10
  static void *call() { return new C(); }
llvm::object_creator<llvm::OptBisect>::call()
Line
Count
Source
24
38.2k
  static void *call() { return new C(); }
llvm::object_creator<llvm::LLVMContext>::call()
Line
Count
Source
24
28
  static void *call() { return new C(); }
llvm::object_creator<llvm::X86InstrFMA3Info>::call()
Line
Count
Source
24
9.51k
  static void *call() { return new C(); }
llvm::object_creator<std::__1::map<llvm::Module const*, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > >, std::__1::less<llvm::Module const*>, std::__1::allocator<std::__1::pair<llvm::Module const* const, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > > > > > >::call()
Line
Count
Source
24
232
  static void *call() { return new C(); }
llvm::object_creator<llvm::cl::SubCommand>::call()
Line
Count
Source
24
220k
  static void *call() { return new C(); }
25
};
26
27
/// object_deleter - Helper method for ManagedStatic.
28
///
29
template <typename T> struct object_deleter {
30
1.10M
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::StringMap<void*, llvm::MallocAllocator> >::call(void*)
Line
Count
Source
30
2
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >::call(void*)
Line
Count
Source
30
47.7k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::cl::SubCommand>::call(void*)
Line
Count
Source
30
202k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<std::__1::map<llvm::Module const*, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > >, std::__1::less<llvm::Module const*>, std::__1::allocator<std::__1::pair<llvm::Module const* const, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > > > > > >::call(void*)
Line
Count
Source
30
228
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::X86InstrFMA3Info>::call(void*)
Line
Count
Source
30
9.33k
  static void call(void *Ptr) { delete (T *)Ptr; }
Unexecuted instantiation: llvm::object_deleter<llvm::LLVMContext>::call(void*)
llvm::object_deleter<llvm::OptBisect>::call(void*)
Line
Count
Source
30
38.0k
  static void call(void *Ptr) { delete (T *)Ptr; }
LegacyPassManager.cpp:llvm::object_deleter<(anonymous namespace)::TimingInfo>::call(void*)
Line
Count
Source
30
10
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::sys::SmartMutex<true> >::call(void*)
Line
Count
Source
30
166k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::PassRegistry>::call(void*)
Line
Count
Source
30
95.7k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<std::__1::set<llvm::EVT, llvm::EVT::compareRawBits, std::__1::allocator<llvm::EVT> > >::call(void*)
Line
Count
Source
30
2.75k
  static void call(void *Ptr) { delete (T *)Ptr; }
SelectionDAG.cpp:llvm::object_deleter<(anonymous namespace)::EVTArray>::call(void*)
Line
Count
Source
30
32.9k
  static void call(void *Ptr) { delete (T *)Ptr; }
CommandLine.cpp:llvm::object_deleter<(anonymous namespace)::CommandLineParser>::call(void*)
Line
Count
Source
30
101k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::DebugCounter>::call(void*)
Line
Count
Source
30
88.5k
  static void call(void *Ptr) { delete (T *)Ptr; }
Error.cpp:llvm::object_deleter<(anonymous namespace)::ErrorErrorCategory>::call(void*)
Line
Count
Source
30
1.81k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::OptionRegistry>::call(void*)
Line
Count
Source
30
24.4k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >::call(void*)
Line
Count
Source
30
95.7k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::TimerGroup>::call(void*)
Line
Count
Source
30
22.5k
  static void call(void *Ptr) { delete (T *)Ptr; }
Timer.cpp:llvm::object_deleter<(anonymous namespace)::Name2PairMap>::call(void*)
Line
Count
Source
30
6
  static void call(void *Ptr) { delete (T *)Ptr; }
SampleProf.cpp:llvm::object_deleter<(anonymous namespace)::SampleProfErrorCategoryType>::call(void*)
Line
Count
Source
30
84
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::sys::DynamicLibrary::HandleSet>::call(void*)
Line
Count
Source
30
289
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::sys::SmartMutex<false> >::call(void*)
Line
Count
Source
30
120
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<std::__1::vector<std::__1::pair<void (*)(void*), void*>, std::__1::allocator<std::__1::pair<void (*)(void*), void*> > > >::call(void*)
Line
Count
Source
30
101k
  static void call(void *Ptr) { delete (T *)Ptr; }
llvm::object_deleter<llvm::SmallVector<std::__1::pair<llvm::PassManagerBuilder::ExtensionPointTy, std::__1::function<void (llvm::PassManagerBuilder const&, llvm::legacy::PassManagerBase&)> >, 8u> >::call(void*)
Line
Count
Source
30
69.7k
  static void call(void *Ptr) { delete (T *)Ptr; }
CodeViewError.cpp:llvm::object_deleter<(anonymous namespace)::CodeViewErrorCategory>::call(void*)
Line
Count
Source
30
93
  static void call(void *Ptr) { delete (T *)Ptr; }
Unexecuted instantiation: BitcodeReader.cpp:llvm::object_deleter<(anonymous namespace)::BitcodeErrorCategoryType>::call(void*)
Unexecuted instantiation: InstrProf.cpp:llvm::object_deleter<(anonymous namespace)::InstrProfErrorCategoryType>::call(void*)
31
};
32
template <typename T, size_t N> struct object_deleter<T[N]> {
33
  static void call(void *Ptr) { delete[](T *)Ptr; }
34
};
35
36
/// ManagedStaticBase - Common base class for ManagedStatic instances.
37
class ManagedStaticBase {
38
protected:
39
  // This should only be used as a static variable, which guarantees that this
40
  // will be zero initialized.
41
  mutable std::atomic<void *> Ptr;
42
  mutable void (*DeleterFn)(void*);
43
  mutable const ManagedStaticBase *Next;
44
45
  void RegisterManagedStatic(void *(*creator)(), void (*deleter)(void*)) const;
46
47
public:
48
  /// isConstructed - Return true if this object has not been created yet.
49
240k
  bool isConstructed() const { return Ptr != nullptr; }
50
51
  void destroy() const;
52
};
53
54
/// ManagedStatic - This transparently changes the behavior of global statics to
55
/// be lazily constructed on demand (good for reducing startup times of dynamic
56
/// libraries that link in LLVM components) and for making destruction be
57
/// explicit through the llvm_shutdown() function call.
58
///
59
template <class C, class Creator = object_creator<C>,
60
          class Deleter = object_deleter<C>>
61
class ManagedStatic : public ManagedStaticBase {
62
public:
63
  // Accessors.
64
744M
  C &operator*() {
65
744M
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
744M
    if (!Tmp)
67
1.16M
      RegisterManagedStatic(Creator::call, Deleter::call);
68
744M
69
744M
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
744M
  }
llvm::ManagedStatic<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, llvm::object_creator<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >, llvm::object_deleter<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > >::operator*()
Line
Count
Source
64
81.9k
  C &operator*() {
65
81.9k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
81.9k
    if (!Tmp)
67
48.2k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
81.9k
69
81.9k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
81.9k
  }
SampleProf.cpp:llvm::ManagedStatic<(anonymous namespace)::SampleProfErrorCategoryType, llvm::object_creator<(anonymous namespace)::SampleProfErrorCategoryType>, llvm::object_deleter<(anonymous namespace)::SampleProfErrorCategoryType> >::operator*()
Line
Count
Source
64
2.50k
  C &operator*() {
65
2.50k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
2.50k
    if (!Tmp)
67
100
      RegisterManagedStatic(Creator::call, Deleter::call);
68
2.50k
69
2.50k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
2.50k
  }
Unexecuted instantiation: InstrProf.cpp:llvm::ManagedStatic<(anonymous namespace)::InstrProfErrorCategoryType, llvm::object_creator<(anonymous namespace)::InstrProfErrorCategoryType>, llvm::object_deleter<(anonymous namespace)::InstrProfErrorCategoryType> >::operator*()
BitcodeReader.cpp:llvm::ManagedStatic<(anonymous namespace)::BitcodeErrorCategoryType, llvm::object_creator<(anonymous namespace)::BitcodeErrorCategoryType>, llvm::object_deleter<(anonymous namespace)::BitcodeErrorCategoryType> >::operator*()
Line
Count
Source
64
66
  C &operator*() {
65
66
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
66
    if (!Tmp)
67
66
      RegisterManagedStatic(Creator::call, Deleter::call);
68
66
69
66
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
66
  }
CodeViewError.cpp:llvm::ManagedStatic<(anonymous namespace)::CodeViewErrorCategory, llvm::object_creator<(anonymous namespace)::CodeViewErrorCategory>, llvm::object_deleter<(anonymous namespace)::CodeViewErrorCategory> >::operator*()
Line
Count
Source
64
97
  C &operator*() {
65
97
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
97
    if (!Tmp)
67
94
      RegisterManagedStatic(Creator::call, Deleter::call);
68
97
69
97
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
97
  }
llvm::ManagedStatic<llvm::SmallVector<std::__1::pair<llvm::PassManagerBuilder::ExtensionPointTy, std::__1::function<void (llvm::PassManagerBuilder const&, llvm::legacy::PassManagerBase&)> >, 8u>, llvm::object_creator<llvm::SmallVector<std::__1::pair<llvm::PassManagerBuilder::ExtensionPointTy, std::__1::function<void (llvm::PassManagerBuilder const&, llvm::legacy::PassManagerBase&)> >, 8u> >, llvm::object_deleter<llvm::SmallVector<std::__1::pair<llvm::PassManagerBuilder::ExtensionPointTy, std::__1::function<void (llvm::PassManagerBuilder const&, llvm::legacy::PassManagerBase&)> >, 8u> > >::operator*()
Line
Count
Source
64
678k
  C &operator*() {
65
678k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
678k
    if (!Tmp)
67
69.8k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
678k
69
678k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
678k
  }
llvm::ManagedStatic<std::__1::vector<std::__1::pair<void (*)(void*), void*>, std::__1::allocator<std::__1::pair<void (*)(void*), void*> > >, llvm::object_creator<std::__1::vector<std::__1::pair<void (*)(void*), void*>, std::__1::allocator<std::__1::pair<void (*)(void*), void*> > > >, llvm::object_deleter<std::__1::vector<std::__1::pair<void (*)(void*), void*>, std::__1::allocator<std::__1::pair<void (*)(void*), void*> > > > >::operator*()
Line
Count
Source
64
211k
  C &operator*() {
65
211k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
211k
    if (!Tmp)
67
108k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
211k
69
211k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
211k
  }
llvm::ManagedStatic<llvm::sys::SmartMutex<false>, llvm::object_creator<llvm::sys::SmartMutex<false> >, llvm::object_deleter<llvm::sys::SmartMutex<false> > >::operator*()
Line
Count
Source
64
1.15k
  C &operator*() {
65
1.15k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
1.15k
    if (!Tmp)
67
1.09k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
1.15k
69
1.15k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
1.15k
  }
llvm::ManagedStatic<llvm::sys::DynamicLibrary::HandleSet, llvm::object_creator<llvm::sys::DynamicLibrary::HandleSet>, llvm::object_deleter<llvm::sys::DynamicLibrary::HandleSet> >::operator*()
Line
Count
Source
64
726
  C &operator*() {
65
726
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
726
    if (!Tmp)
67
348
      RegisterManagedStatic(Creator::call, Deleter::call);
68
726
69
726
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
726
  }
llvm::ManagedStatic<llvm::StringMap<void*, llvm::MallocAllocator>, llvm::object_creator<llvm::StringMap<void*, llvm::MallocAllocator> >, llvm::object_deleter<llvm::StringMap<void*, llvm::MallocAllocator> > >::operator*()
Line
Count
Source
64
7
  C &operator*() {
65
7
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
7
    if (!Tmp)
67
2
      RegisterManagedStatic(Creator::call, Deleter::call);
68
7
69
7
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
7
  }
Timer.cpp:llvm::ManagedStatic<(anonymous namespace)::Name2PairMap, llvm::object_creator<(anonymous namespace)::Name2PairMap>, llvm::object_deleter<(anonymous namespace)::Name2PairMap> >::operator*()
Line
Count
Source
64
6
  C &operator*() {
65
6
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
6
    if (!Tmp)
67
6
      RegisterManagedStatic(Creator::call, Deleter::call);
68
6
69
6
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
6
  }
Timer.cpp:llvm::ManagedStatic<llvm::TimerGroup, (anonymous namespace)::CreateDefaultTimerGroup, llvm::object_deleter<llvm::TimerGroup> >::operator*()
Line
Count
Source
64
36.2k
  C &operator*() {
65
36.2k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
36.2k
    if (!Tmp)
67
22.5k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
36.2k
69
36.2k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
36.2k
  }
llvm::ManagedStatic<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, llvm::object_creator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, llvm::object_deleter<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::operator*()
Line
Count
Source
64
102k
  C &operator*() {
65
102k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
102k
    if (!Tmp)
67
102k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
102k
69
102k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
102k
  }
llvm::ManagedStatic<llvm::OptionRegistry, llvm::object_creator<llvm::OptionRegistry>, llvm::object_deleter<llvm::OptionRegistry> >::operator*()
Line
Count
Source
64
24.6k
  C &operator*() {
65
24.6k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
24.6k
    if (!Tmp)
67
24.6k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
24.6k
69
24.6k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
24.6k
  }
Error.cpp:llvm::ManagedStatic<(anonymous namespace)::ErrorErrorCategory, llvm::object_creator<(anonymous namespace)::ErrorErrorCategory>, llvm::object_deleter<(anonymous namespace)::ErrorErrorCategory> >::operator*()
Line
Count
Source
64
27.6k
  C &operator*() {
65
27.6k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
27.6k
    if (!Tmp)
67
1.90k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
27.6k
69
27.6k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
27.6k
  }
llvm::ManagedStatic<llvm::DebugCounter, llvm::object_creator<llvm::DebugCounter>, llvm::object_deleter<llvm::DebugCounter> >::operator*()
Line
Count
Source
64
460k
  C &operator*() {
65
460k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
460k
    if (!Tmp)
67
92.0k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
460k
69
460k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
460k
  }
CommandLine.cpp:llvm::ManagedStatic<(anonymous namespace)::CommandLineParser, llvm::object_creator<(anonymous namespace)::CommandLineParser>, llvm::object_deleter<(anonymous namespace)::CommandLineParser> >::operator*()
Line
Count
Source
64
159M
  C &operator*() {
65
159M
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
159M
    if (!Tmp)
67
110k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
159M
69
159M
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
159M
  }
SelectionDAG.cpp:llvm::ManagedStatic<(anonymous namespace)::EVTArray, llvm::object_creator<(anonymous namespace)::EVTArray>, llvm::object_deleter<(anonymous namespace)::EVTArray> >::operator*()
Line
Count
Source
64
221M
  C &operator*() {
65
221M
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
221M
    if (!Tmp)
67
33.2k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
221M
69
221M
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
221M
  }
llvm::ManagedStatic<std::__1::set<llvm::EVT, llvm::EVT::compareRawBits, std::__1::allocator<llvm::EVT> >, llvm::object_creator<std::__1::set<llvm::EVT, llvm::EVT::compareRawBits, std::__1::allocator<llvm::EVT> > >, llvm::object_deleter<std::__1::set<llvm::EVT, llvm::EVT::compareRawBits, std::__1::allocator<llvm::EVT> > > >::operator*()
Line
Count
Source
64
88.4k
  C &operator*() {
65
88.4k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
88.4k
    if (!Tmp)
67
2.75k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
88.4k
69
88.4k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
88.4k
  }
llvm::ManagedStatic<llvm::PassRegistry, llvm::object_creator<llvm::PassRegistry>, llvm::object_deleter<llvm::PassRegistry> >::operator*()
Line
Count
Source
64
31.6M
  C &operator*() {
65
31.6M
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
31.6M
    if (!Tmp)
67
100k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
31.6M
69
31.6M
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
31.6M
  }
llvm::ManagedStatic<llvm::sys::SmartMutex<true>, llvm::object_creator<llvm::sys::SmartMutex<true> >, llvm::object_deleter<llvm::sys::SmartMutex<true> > >::operator*()
Line
Count
Source
64
583k
  C &operator*() {
65
583k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
583k
    if (!Tmp)
67
173k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
583k
69
583k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
583k
  }
LegacyPassManager.cpp:llvm::ManagedStatic<(anonymous namespace)::TimingInfo, llvm::object_creator<(anonymous namespace)::TimingInfo>, llvm::object_deleter<(anonymous namespace)::TimingInfo> >::operator*()
Line
Count
Source
64
10
  C &operator*() {
65
10
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
10
    if (!Tmp)
67
10
      RegisterManagedStatic(Creator::call, Deleter::call);
68
10
69
10
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
10
  }
llvm::ManagedStatic<llvm::OptBisect, llvm::object_creator<llvm::OptBisect>, llvm::object_deleter<llvm::OptBisect> >::operator*()
Line
Count
Source
64
49.4M
  C &operator*() {
65
49.4M
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
49.4M
    if (!Tmp)
67
38.2k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
49.4M
69
49.4M
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
49.4M
  }
llvm::ManagedStatic<llvm::LLVMContext, llvm::object_creator<llvm::LLVMContext>, llvm::object_deleter<llvm::LLVMContext> >::operator*()
Line
Count
Source
64
131
  C &operator*() {
65
131
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
131
    if (!Tmp)
67
28
      RegisterManagedStatic(Creator::call, Deleter::call);
68
131
69
131
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
131
  }
llvm::ManagedStatic<llvm::X86InstrFMA3Info, llvm::object_creator<llvm::X86InstrFMA3Info>, llvm::object_deleter<llvm::X86InstrFMA3Info> >::operator*()
Line
Count
Source
64
10.7M
  C &operator*() {
65
10.7M
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
10.7M
    if (!Tmp)
67
9.51k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
10.7M
69
10.7M
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
10.7M
  }
llvm::ManagedStatic<std::__1::map<llvm::Module const*, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > >, std::__1::less<llvm::Module const*>, std::__1::allocator<std::__1::pair<llvm::Module const* const, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > > > > >, llvm::object_creator<std::__1::map<llvm::Module const*, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > >, std::__1::less<llvm::Module const*>, std::__1::allocator<std::__1::pair<llvm::Module const* const, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > > > > > >, llvm::object_deleter<std::__1::map<llvm::Module const*, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > >, std::__1::less<llvm::Module const*>, std::__1::allocator<std::__1::pair<llvm::Module const* const, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > > > > > > >::operator*()
Line
Count
Source
64
66.6k
  C &operator*() {
65
66.6k
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
66.6k
    if (!Tmp)
67
232
      RegisterManagedStatic(Creator::call, Deleter::call);
68
66.6k
69
66.6k
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
66.6k
  }
llvm::ManagedStatic<llvm::cl::SubCommand, llvm::object_creator<llvm::cl::SubCommand>, llvm::object_deleter<llvm::cl::SubCommand> >::operator*()
Line
Count
Source
64
269M
  C &operator*() {
65
269M
    void *Tmp = Ptr.load(std::memory_order_acquire);
66
269M
    if (!Tmp)
67
220k
      RegisterManagedStatic(Creator::call, Deleter::call);
68
269M
69
269M
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
70
269M
  }
71
72
381M
  C *operator->() { return &**this; }
llvm::ManagedStatic<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, llvm::object_creator<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > >, llvm::object_deleter<std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > > >::operator->()
Line
Count
Source
72
73.8k
  C *operator->() { return &**this; }
llvm::ManagedStatic<std::__1::map<llvm::Module const*, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > >, std::__1::less<llvm::Module const*>, std::__1::allocator<std::__1::pair<llvm::Module const* const, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > > > > >, llvm::object_creator<std::__1::map<llvm::Module const*, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > >, std::__1::less<llvm::Module const*>, std::__1::allocator<std::__1::pair<llvm::Module const* const, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > > > > > >, llvm::object_deleter<std::__1::map<llvm::Module const*, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > >, std::__1::less<llvm::Module const*>, std::__1::allocator<std::__1::pair<llvm::Module const* const, std::__1::map<llvm::GlobalValue const*, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > >, std::__1::less<llvm::GlobalValue const*>, std::__1::allocator<std::__1::pair<llvm::GlobalValue const* const, std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> >, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, std::__1::vector<unsigned int, std::__1::allocator<unsigned int> > > > > > > > > > > > >::operator->()
Line
Count
Source
72
224
  C *operator->() { return &**this; }
llvm::ManagedStatic<std::__1::set<llvm::EVT, llvm::EVT::compareRawBits, std::__1::allocator<llvm::EVT> >, llvm::object_creator<std::__1::set<llvm::EVT, llvm::EVT::compareRawBits, std::__1::allocator<llvm::EVT> > >, llvm::object_deleter<std::__1::set<llvm::EVT, llvm::EVT::compareRawBits, std::__1::allocator<llvm::EVT> > > >::operator->()
Line
Count
Source
72
88.4k
  C *operator->() { return &**this; }
SelectionDAG.cpp:llvm::ManagedStatic<(anonymous namespace)::EVTArray, llvm::object_creator<(anonymous namespace)::EVTArray>, llvm::object_deleter<(anonymous namespace)::EVTArray> >::operator->()
Line
Count
Source
72
221M
  C *operator->() { return &**this; }
llvm::ManagedStatic<llvm::cl::SubCommand, llvm::object_creator<llvm::cl::SubCommand>, llvm::object_deleter<llvm::cl::SubCommand> >::operator->()
Line
Count
Source
72
111k
  C *operator->() { return &**this; }
CommandLine.cpp:llvm::ManagedStatic<(anonymous namespace)::CommandLineParser, llvm::object_creator<(anonymous namespace)::CommandLineParser>, llvm::object_deleter<(anonymous namespace)::CommandLineParser> >::operator->()
Line
Count
Source
72
159M
  C *operator->() { return &**this; }
Unexecuted instantiation: Timer.cpp:llvm::ManagedStatic<(anonymous namespace)::Name2PairMap, llvm::object_creator<(anonymous namespace)::Name2PairMap>, llvm::object_deleter<(anonymous namespace)::Name2PairMap> >::operator->()
llvm::ManagedStatic<llvm::sys::DynamicLibrary::HandleSet, llvm::object_creator<llvm::sys::DynamicLibrary::HandleSet>, llvm::object_deleter<llvm::sys::DynamicLibrary::HandleSet> >::operator->()
Line
Count
Source
72
252
  C *operator->() { return &**this; }
llvm::ManagedStatic<llvm::StringMap<void*, llvm::MallocAllocator>, llvm::object_creator<llvm::StringMap<void*, llvm::MallocAllocator> >, llvm::object_deleter<llvm::StringMap<void*, llvm::MallocAllocator> > >::operator->()
Line
Count
Source
72
4
  C *operator->() { return &**this; }
llvm::ManagedStatic<std::__1::vector<std::__1::pair<void (*)(void*), void*>, std::__1::allocator<std::__1::pair<void (*)(void*), void*> > >, llvm::object_creator<std::__1::vector<std::__1::pair<void (*)(void*), void*>, std::__1::allocator<std::__1::pair<void (*)(void*), void*> > > >, llvm::object_deleter<std::__1::vector<std::__1::pair<void (*)(void*), void*>, std::__1::allocator<std::__1::pair<void (*)(void*), void*> > > > >::operator->()
Line
Count
Source
72
211k
  C *operator->() { return &**this; }
llvm::ManagedStatic<llvm::SmallVector<std::__1::pair<llvm::PassManagerBuilder::ExtensionPointTy, std::__1::function<void (llvm::PassManagerBuilder const&, llvm::legacy::PassManagerBase&)> >, 8u>, llvm::object_creator<llvm::SmallVector<std::__1::pair<llvm::PassManagerBuilder::ExtensionPointTy, std::__1::function<void (llvm::PassManagerBuilder const&, llvm::legacy::PassManagerBase&)> >, 8u> >, llvm::object_deleter<llvm::SmallVector<std::__1::pair<llvm::PassManagerBuilder::ExtensionPointTy, std::__1::function<void (llvm::PassManagerBuilder const&, llvm::legacy::PassManagerBase&)> >, 8u> > >::operator->()
Line
Count
Source
72
446k
  C *operator->() { return &**this; }
73
74
  const C &operator*() const {
75
    void *Tmp = Ptr.load(std::memory_order_acquire);
76
    if (!Tmp)
77
      RegisterManagedStatic(Creator::call, Deleter::call);
78
79
    return *static_cast<C *>(Ptr.load(std::memory_order_relaxed));
80
  }
81
82
  const C *operator->() const { return &**this; }
83
};
84
85
/// llvm_shutdown - Deallocate and destroy all ManagedStatic variables.
86
void llvm_shutdown();
87
88
/// llvm_shutdown_obj - This is a simple helper class that calls
89
/// llvm_shutdown() when it is destroyed.
90
struct llvm_shutdown_obj {
91
  llvm_shutdown_obj() = default;
92
101k
  ~llvm_shutdown_obj() { llvm_shutdown(); }
93
};
94
95
} // end namespace llvm
96
97
#endif // LLVM_SUPPORT_MANAGEDSTATIC_H