/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 |