/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/IR/PassInstrumentation.h
Line | Count | Source |
1 | | //===- llvm/IR/PassInstrumentation.h ----------------------*- C++ -*-===// |
2 | | // |
3 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | | // See https://llvm.org/LICENSE.txt for license information. |
5 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | | // |
7 | | //===----------------------------------------------------------------------===// |
8 | | /// \file |
9 | | /// |
10 | | /// This file defines the Pass Instrumentation classes that provide |
11 | | /// instrumentation points into the pass execution by PassManager. |
12 | | /// |
13 | | /// There are two main classes: |
14 | | /// - PassInstrumentation provides a set of instrumentation points for |
15 | | /// pass managers to call on. |
16 | | /// |
17 | | /// - PassInstrumentationCallbacks registers callbacks and provides access |
18 | | /// to them for PassInstrumentation. |
19 | | /// |
20 | | /// PassInstrumentation object is being used as a result of |
21 | | /// PassInstrumentationAnalysis (so it is intended to be easily copyable). |
22 | | /// |
23 | | /// Intended scheme of use for Pass Instrumentation is as follows: |
24 | | /// - register instrumentation callbacks in PassInstrumentationCallbacks |
25 | | /// instance. PassBuilder provides helper for that. |
26 | | /// |
27 | | /// - register PassInstrumentationAnalysis with all the PassManagers. |
28 | | /// PassBuilder handles that automatically when registering analyses. |
29 | | /// |
30 | | /// - Pass Manager requests PassInstrumentationAnalysis from analysis manager |
31 | | /// and gets PassInstrumentation as its result. |
32 | | /// |
33 | | /// - Pass Manager invokes PassInstrumentation entry points appropriately, |
34 | | /// passing StringRef identification ("name") of the pass currently being |
35 | | /// executed and IRUnit it works on. There can be different schemes of |
36 | | /// providing names in future, currently it is just a name() of the pass. |
37 | | /// |
38 | | /// - PassInstrumentation wraps address of IRUnit into llvm::Any and passes |
39 | | /// control to all the registered callbacks. Note that we specifically wrap |
40 | | /// 'const IRUnitT*' so as to avoid any accidental changes to IR in |
41 | | /// instrumenting callbacks. |
42 | | /// |
43 | | /// - Some instrumentation points (BeforePass) allow to control execution |
44 | | /// of a pass. For those callbacks returning false means pass will not be |
45 | | /// executed. |
46 | | /// |
47 | | /// TODO: currently there is no way for a pass to opt-out of execution control |
48 | | /// (e.g. become unskippable). PassManager is the only entity that determines |
49 | | /// how pass instrumentation affects pass execution. |
50 | | /// |
51 | | //===----------------------------------------------------------------------===// |
52 | | |
53 | | #ifndef LLVM_IR_PASSINSTRUMENTATION_H |
54 | | #define LLVM_IR_PASSINSTRUMENTATION_H |
55 | | |
56 | | #include "llvm/ADT/Any.h" |
57 | | #include "llvm/ADT/FunctionExtras.h" |
58 | | #include "llvm/ADT/SmallVector.h" |
59 | | #include "llvm/Support/TypeName.h" |
60 | | #include <type_traits> |
61 | | |
62 | | namespace llvm { |
63 | | |
64 | | class PreservedAnalyses; |
65 | | |
66 | | /// This class manages callbacks registration, as well as provides a way for |
67 | | /// PassInstrumentation to pass control to the registered callbacks. |
68 | | class PassInstrumentationCallbacks { |
69 | | public: |
70 | | // Before/After callbacks accept IRUnits whenever appropriate, so they need |
71 | | // to take them as constant pointers, wrapped with llvm::Any. |
72 | | // For the case when IRUnit has been invalidated there is a different |
73 | | // callback to use - AfterPassInvalidated. |
74 | | // TODO: currently AfterPassInvalidated does not accept IRUnit, since passing |
75 | | // already invalidated IRUnit is unsafe. There are ways to handle invalidated IRUnits |
76 | | // in a safe way, and we might pursue that as soon as there is a useful instrumentation |
77 | | // that needs it. |
78 | | using BeforePassFunc = bool(StringRef, Any); |
79 | | using AfterPassFunc = void(StringRef, Any); |
80 | | using AfterPassInvalidatedFunc = void(StringRef); |
81 | | using BeforeAnalysisFunc = void(StringRef, Any); |
82 | | using AfterAnalysisFunc = void(StringRef, Any); |
83 | | |
84 | | public: |
85 | 1.27k | PassInstrumentationCallbacks() {} |
86 | | |
87 | | /// Copying PassInstrumentationCallbacks is not intended. |
88 | | PassInstrumentationCallbacks(const PassInstrumentationCallbacks &) = delete; |
89 | | void operator=(const PassInstrumentationCallbacks &) = delete; |
90 | | |
91 | 14 | template <typename CallableT> void registerBeforePassCallback(CallableT C) { |
92 | 14 | BeforePassCallbacks.emplace_back(std::move(C)); |
93 | 14 | } PassTimingInfo.cpp:void llvm::PassInstrumentationCallbacks::registerBeforePassCallback<llvm::TimePassesHandler::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_0>(llvm::TimePassesHandler::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_0) Line | Count | Source | 91 | 6 | template <typename CallableT> void registerBeforePassCallback(CallableT C) { | 92 | 6 | BeforePassCallbacks.emplace_back(std::move(C)); | 93 | 6 | } |
StandardInstrumentations.cpp:void llvm::PassInstrumentationCallbacks::registerBeforePassCallback<llvm::PrintIRInstrumentation::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_0>(llvm::PrintIRInstrumentation::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_0) Line | Count | Source | 91 | 8 | template <typename CallableT> void registerBeforePassCallback(CallableT C) { | 92 | 8 | BeforePassCallbacks.emplace_back(std::move(C)); | 93 | 8 | } |
|
94 | | |
95 | 18 | template <typename CallableT> void registerAfterPassCallback(CallableT C) { |
96 | 18 | AfterPassCallbacks.emplace_back(std::move(C)); |
97 | 18 | } PassTimingInfo.cpp:void llvm::PassInstrumentationCallbacks::registerAfterPassCallback<llvm::TimePassesHandler::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_1>(llvm::TimePassesHandler::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_1) Line | Count | Source | 95 | 6 | template <typename CallableT> void registerAfterPassCallback(CallableT C) { | 96 | 6 | AfterPassCallbacks.emplace_back(std::move(C)); | 97 | 6 | } |
StandardInstrumentations.cpp:void llvm::PassInstrumentationCallbacks::registerAfterPassCallback<llvm::PrintIRInstrumentation::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_1>(llvm::PrintIRInstrumentation::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_1) Line | Count | Source | 95 | 12 | template <typename CallableT> void registerAfterPassCallback(CallableT C) { | 96 | 12 | AfterPassCallbacks.emplace_back(std::move(C)); | 97 | 12 | } |
|
98 | | |
99 | | template <typename CallableT> |
100 | 18 | void registerAfterPassInvalidatedCallback(CallableT C) { |
101 | 18 | AfterPassInvalidatedCallbacks.emplace_back(std::move(C)); |
102 | 18 | } PassTimingInfo.cpp:void llvm::PassInstrumentationCallbacks::registerAfterPassInvalidatedCallback<llvm::TimePassesHandler::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_2>(llvm::TimePassesHandler::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_2) Line | Count | Source | 100 | 6 | void registerAfterPassInvalidatedCallback(CallableT C) { | 101 | 6 | AfterPassInvalidatedCallbacks.emplace_back(std::move(C)); | 102 | 6 | } |
StandardInstrumentations.cpp:void llvm::PassInstrumentationCallbacks::registerAfterPassInvalidatedCallback<llvm::PrintIRInstrumentation::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_2>(llvm::PrintIRInstrumentation::registerCallbacks(llvm::PassInstrumentationCallbacks&)::$_2) Line | Count | Source | 100 | 12 | void registerAfterPassInvalidatedCallback(CallableT C) { | 101 | 12 | AfterPassInvalidatedCallbacks.emplace_back(std::move(C)); | 102 | 12 | } |
|
103 | | |
104 | | template <typename CallableT> |
105 | 6 | void registerBeforeAnalysisCallback(CallableT C) { |
106 | 6 | BeforeAnalysisCallbacks.emplace_back(std::move(C)); |
107 | 6 | } |
108 | | |
109 | | template <typename CallableT> |
110 | 6 | void registerAfterAnalysisCallback(CallableT C) { |
111 | 6 | AfterAnalysisCallbacks.emplace_back(std::move(C)); |
112 | 6 | } |
113 | | |
114 | | private: |
115 | | friend class PassInstrumentation; |
116 | | |
117 | | SmallVector<llvm::unique_function<BeforePassFunc>, 4> BeforePassCallbacks; |
118 | | SmallVector<llvm::unique_function<AfterPassFunc>, 4> AfterPassCallbacks; |
119 | | SmallVector<llvm::unique_function<AfterPassInvalidatedFunc>, 4> |
120 | | AfterPassInvalidatedCallbacks; |
121 | | SmallVector<llvm::unique_function<BeforeAnalysisFunc>, 4> |
122 | | BeforeAnalysisCallbacks; |
123 | | SmallVector<llvm::unique_function<AfterAnalysisFunc>, 4> |
124 | | AfterAnalysisCallbacks; |
125 | | }; |
126 | | |
127 | | /// This class provides instrumentation entry points for the Pass Manager, |
128 | | /// doing calls to callbacks registered in PassInstrumentationCallbacks. |
129 | | class PassInstrumentation { |
130 | | PassInstrumentationCallbacks *Callbacks; |
131 | | |
132 | | public: |
133 | | /// Callbacks object is not owned by PassInstrumentation, its life-time |
134 | | /// should at least match the life-time of corresponding |
135 | | /// PassInstrumentationAnalysis (which usually is till the end of current |
136 | | /// compilation). |
137 | | PassInstrumentation(PassInstrumentationCallbacks *CB = nullptr) |
138 | 121k | : Callbacks(CB) {} |
139 | | |
140 | | /// BeforePass instrumentation point - takes \p Pass instance to be executed |
141 | | /// and constant reference to IR it operates on. \Returns true if pass is |
142 | | /// allowed to be executed. |
143 | | template <typename IRUnitT, typename PassT> |
144 | 115k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { |
145 | 115k | if (!Callbacks) |
146 | 83.0k | return true; |
147 | 32.7k | |
148 | 32.7k | bool ShouldRun = true; |
149 | 32.7k | for (auto &C : Callbacks->BeforePassCallbacks) |
150 | 791 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); |
151 | 32.7k | return ShouldRun; |
152 | 32.7k | } bool llvm::PassInstrumentation::runBeforePass<llvm::LazyCallGraph::SCC, llvm::detail::PassConcept<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >(llvm::detail::PassConcept<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 144 | 4.92k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 4.92k | if (!Callbacks) | 146 | 3.47k | return true; | 147 | 1.45k | | 148 | 1.45k | bool ShouldRun = true; | 149 | 1.45k | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 27 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 1.45k | return ShouldRun; | 152 | 1.45k | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Module, llvm::detail::PassConcept<llvm::Module, llvm::AnalysisManager<llvm::Module> > >(llvm::detail::PassConcept<llvm::Module, llvm::AnalysisManager<llvm::Module> > const&, llvm::Module const&) const Line | Count | Source | 144 | 9.31k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 9.31k | if (!Callbacks) | 146 | 3.18k | return true; | 147 | 6.12k | | 148 | 6.12k | bool ShouldRun = true; | 149 | 6.12k | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 128 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 6.12k | return ShouldRun; | 152 | 6.12k | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::detail::PassConcept<llvm::Function, llvm::AnalysisManager<llvm::Function> > >(llvm::detail::PassConcept<llvm::Function, llvm::AnalysisManager<llvm::Function> > const&, llvm::Function const&) const Line | Count | Source | 144 | 73.8k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 73.8k | if (!Callbacks) | 146 | 62.1k | return true; | 147 | 11.7k | | 148 | 11.7k | bool ShouldRun = true; | 149 | 11.7k | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 447 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 11.7k | return ShouldRun; | 152 | 11.7k | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Loop, llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> >(llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> const&, llvm::Loop const&) const Line | Count | Source | 144 | 4.13k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 4.13k | if (!Callbacks) | 146 | 442 | return true; | 147 | 3.69k | | 148 | 3.69k | bool ShouldRun = true; | 149 | 3.69k | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 44 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 3.69k | return ShouldRun; | 152 | 3.69k | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::BoundsCheckingPass>(llvm::BoundsCheckingPass const&, llvm::Function const&) const Line | Count | Source | 144 | 3 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 3 | if (!Callbacks) | 146 | 3 | return true; | 147 | 0 | | 148 | 0 | bool ShouldRun = true; | 149 | 0 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 0 | return ShouldRun; | 152 | 0 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::EntryExitInstrumenterPass>(llvm::EntryExitInstrumenterPass const&, llvm::Function const&) const Line | Count | Source | 144 | 1.08k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 1.08k | if (!Callbacks) | 146 | 1.08k | return true; | 147 | 0 | | 148 | 0 | bool ShouldRun = true; | 149 | 0 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 0 | return ShouldRun; | 152 | 0 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::AddressSanitizerPass>(llvm::AddressSanitizerPass const&, llvm::Function const&) const Line | Count | Source | 144 | 3 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 3 | if (!Callbacks) | 146 | 3 | return true; | 147 | 0 | | 148 | 0 | bool ShouldRun = true; | 149 | 0 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 0 | return ShouldRun; | 152 | 0 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::MemorySanitizerPass>(llvm::MemorySanitizerPass const&, llvm::Function const&) const Line | Count | Source | 144 | 2 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 2 | if (!Callbacks) | 146 | 2 | return true; | 147 | 0 | | 148 | 0 | bool ShouldRun = true; | 149 | 0 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 0 | return ShouldRun; | 152 | 0 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::ThreadSanitizerPass>(llvm::ThreadSanitizerPass const&, llvm::Function const&) const Line | Count | Source | 144 | 4 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 4 | if (!Callbacks) | 146 | 4 | return true; | 147 | 0 | | 148 | 0 | bool ShouldRun = true; | 149 | 0 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 0 | return ShouldRun; | 152 | 0 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> > >(llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> > const&, llvm::Function const&) const Line | Count | Source | 144 | 14.1k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 14.1k | if (!Callbacks) | 146 | 9.11k | return true; | 147 | 5.04k | | 148 | 5.04k | bool ShouldRun = true; | 149 | 5.04k | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 86 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 5.04k | return ShouldRun; | 152 | 5.04k | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Loop, llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> >(llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> const&, llvm::Loop const&) const Line | Count | Source | 144 | 3.52k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 3.52k | if (!Callbacks) | 146 | 122 | return true; | 147 | 3.39k | | 148 | 3.39k | bool ShouldRun = true; | 149 | 3.39k | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 23 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 3.39k | return ShouldRun; | 152 | 3.39k | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Loop, llvm::LICMPass>(llvm::LICMPass const&, llvm::Loop const&) const Line | Count | Source | 144 | 105 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 105 | if (!Callbacks) | 146 | 48 | return true; | 147 | 57 | | 148 | 57 | bool ShouldRun = true; | 149 | 57 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 6 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 57 | return ShouldRun; | 152 | 57 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >(llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 144 | 2.25k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 2.25k | if (!Callbacks) | 146 | 1.19k | return true; | 147 | 1.05k | | 148 | 1.05k | bool ShouldRun = true; | 149 | 1.05k | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 15 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 1.05k | return ShouldRun; | 152 | 1.05k | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Loop, llvm::LoopRotatePass>(llvm::LoopRotatePass const&, llvm::Loop const&) const Line | Count | Source | 144 | 45 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 45 | if (!Callbacks) | 146 | 20 | return true; | 147 | 25 | | 148 | 25 | bool ShouldRun = true; | 149 | 25 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 3 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 25 | return ShouldRun; | 152 | 25 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::PromotePass>(llvm::PromotePass const&, llvm::Function const&) const Line | Count | Source | 144 | 1.16k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 1.16k | if (!Callbacks) | 146 | 1.09k | return true; | 147 | 74 | | 148 | 74 | bool ShouldRun = true; | 149 | 74 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 6 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 74 | return ShouldRun; | 152 | 74 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass<llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> > >(llvm::DevirtSCCRepeatedPass<llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> > const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 144 | 1.15k | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 1.15k | if (!Callbacks) | 146 | 1.08k | return true; | 147 | 73 | | 148 | 73 | bool ShouldRun = true; | 149 | 73 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 6 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 73 | return ShouldRun; | 152 | 73 | } |
Unexecuted instantiation: bool llvm::PassInstrumentation::runBeforePass<llvm::Loop, llvm::LoopUnrollAndJamPass>(llvm::LoopUnrollAndJamPass const&, llvm::Loop const&) const bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::AddDiscriminatorsPass>(llvm::AddDiscriminatorsPass const&, llvm::Function const&) const Line | Count | Source | 144 | 25 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 25 | if (!Callbacks) | 146 | 13 | return true; | 147 | 12 | | 148 | 12 | bool ShouldRun = true; | 149 | 12 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 12 | return ShouldRun; | 152 | 12 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::LazyCallGraph::SCC, llvm::PostOrderFunctionAttrsPass>(llvm::PostOrderFunctionAttrsPass const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 144 | 24 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 24 | if (!Callbacks) | 146 | 12 | return true; | 147 | 12 | | 148 | 12 | bool ShouldRun = true; | 149 | 12 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 12 | return ShouldRun; | 152 | 12 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::LazyCallGraph::SCC, llvm::InlinerPass>(llvm::InlinerPass const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 144 | 13 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 13 | if (!Callbacks) | 146 | 8 | return true; | 147 | 5 | | 148 | 5 | bool ShouldRun = true; | 149 | 5 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 5 | return ShouldRun; | 152 | 5 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Function, llvm::SimplifyCFGPass>(llvm::SimplifyCFGPass const&, llvm::Function const&) const Line | Count | Source | 144 | 14 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 14 | if (!Callbacks) | 146 | 8 | return true; | 147 | 6 | | 148 | 6 | bool ShouldRun = true; | 149 | 6 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 6 | return ShouldRun; | 152 | 6 | } |
bool llvm::PassInstrumentation::runBeforePass<llvm::Module, llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> > >(llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> > const&, llvm::Module const&) const Line | Count | Source | 144 | 3 | bool runBeforePass(const PassT &Pass, const IRUnitT &IR) const { | 145 | 3 | if (!Callbacks) | 146 | 0 | return true; | 147 | 3 | | 148 | 3 | bool ShouldRun = true; | 149 | 3 | for (auto &C : Callbacks->BeforePassCallbacks) | 150 | 0 | ShouldRun &= C(Pass.name(), llvm::Any(&IR)); | 151 | 3 | return ShouldRun; | 152 | 3 | } |
|
153 | | |
154 | | /// AfterPass instrumentation point - takes \p Pass instance that has |
155 | | /// just been executed and constant reference to \p IR it operates on. |
156 | | /// \p IR is guaranteed to be valid at this point. |
157 | | template <typename IRUnitT, typename PassT> |
158 | 114k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { |
159 | 114k | if (Callbacks) |
160 | 31.0k | for (auto &C : Callbacks->AfterPassCallbacks) |
161 | 813 | C(Pass.name(), llvm::Any(&IR)); |
162 | 114k | } void llvm::PassInstrumentation::runAfterPass<llvm::LazyCallGraph::SCC, llvm::detail::PassConcept<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >(llvm::detail::PassConcept<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 158 | 4.90k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 4.90k | if (Callbacks) | 160 | 1.43k | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 25 | C(Pass.name(), llvm::Any(&IR)); | 162 | 4.90k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Module, llvm::detail::PassConcept<llvm::Module, llvm::AnalysisManager<llvm::Module> > >(llvm::detail::PassConcept<llvm::Module, llvm::AnalysisManager<llvm::Module> > const&, llvm::Module const&) const Line | Count | Source | 158 | 9.30k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 9.30k | if (Callbacks) | 160 | 6.11k | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 139 | C(Pass.name(), llvm::Any(&IR)); | 162 | 9.30k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::detail::PassConcept<llvm::Function, llvm::AnalysisManager<llvm::Function> > >(llvm::detail::PassConcept<llvm::Function, llvm::AnalysisManager<llvm::Function> > const&, llvm::Function const&) const Line | Count | Source | 158 | 73.8k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 73.8k | if (Callbacks) | 160 | 11.7k | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 458 | C(Pass.name(), llvm::Any(&IR)); | 162 | 73.8k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Loop, llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> >(llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> const&, llvm::Loop const&) const Line | Count | Source | 158 | 3.29k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 3.29k | if (Callbacks) | 160 | 2.87k | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 42 | C(Pass.name(), llvm::Any(&IR)); | 162 | 3.29k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::BoundsCheckingPass>(llvm::BoundsCheckingPass const&, llvm::Function const&) const Line | Count | Source | 158 | 3 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 3 | if (Callbacks) | 160 | 0 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 3 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::EntryExitInstrumenterPass>(llvm::EntryExitInstrumenterPass const&, llvm::Function const&) const Line | Count | Source | 158 | 1.08k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 1.08k | if (Callbacks) | 160 | 0 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 1.08k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::AddressSanitizerPass>(llvm::AddressSanitizerPass const&, llvm::Function const&) const Line | Count | Source | 158 | 3 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 3 | if (Callbacks) | 160 | 0 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 3 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::MemorySanitizerPass>(llvm::MemorySanitizerPass const&, llvm::Function const&) const Line | Count | Source | 158 | 2 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 2 | if (Callbacks) | 160 | 0 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 2 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::ThreadSanitizerPass>(llvm::ThreadSanitizerPass const&, llvm::Function const&) const Line | Count | Source | 158 | 4 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 4 | if (Callbacks) | 160 | 0 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 4 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> > >(llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function> > const&, llvm::Function const&) const Line | Count | Source | 158 | 14.1k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 14.1k | if (Callbacks) | 160 | 5.04k | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 92 | C(Pass.name(), llvm::Any(&IR)); | 162 | 14.1k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Loop, llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> >(llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> const&, llvm::Loop const&) const Line | Count | Source | 158 | 2.68k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 2.68k | if (Callbacks) | 160 | 2.58k | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 22 | C(Pass.name(), llvm::Any(&IR)); | 162 | 2.68k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Loop, llvm::LICMPass>(llvm::LICMPass const&, llvm::Loop const&) const Line | Count | Source | 158 | 105 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 105 | if (Callbacks) | 160 | 57 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 6 | C(Pass.name(), llvm::Any(&IR)); | 162 | 105 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >(llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 158 | 2.23k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 2.23k | if (Callbacks) | 160 | 1.04k | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 14 | C(Pass.name(), llvm::Any(&IR)); | 162 | 2.23k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Loop, llvm::LoopRotatePass>(llvm::LoopRotatePass const&, llvm::Loop const&) const Line | Count | Source | 158 | 45 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 45 | if (Callbacks) | 160 | 25 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 3 | C(Pass.name(), llvm::Any(&IR)); | 162 | 45 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::PromotePass>(llvm::PromotePass const&, llvm::Function const&) const Line | Count | Source | 158 | 1.16k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 1.16k | if (Callbacks) | 160 | 74 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 6 | C(Pass.name(), llvm::Any(&IR)); | 162 | 1.16k | } |
void llvm::PassInstrumentation::runAfterPass<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass<llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> > >(llvm::DevirtSCCRepeatedPass<llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> > const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 158 | 1.15k | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 1.15k | if (Callbacks) | 160 | 73 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 6 | C(Pass.name(), llvm::Any(&IR)); | 162 | 1.15k | } |
Unexecuted instantiation: void llvm::PassInstrumentation::runAfterPass<llvm::Loop, llvm::LoopUnrollAndJamPass>(llvm::LoopUnrollAndJamPass const&, llvm::Loop const&) const void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::AddDiscriminatorsPass>(llvm::AddDiscriminatorsPass const&, llvm::Function const&) const Line | Count | Source | 158 | 25 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 25 | if (Callbacks) | 160 | 12 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 25 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::LazyCallGraph::SCC, llvm::PostOrderFunctionAttrsPass>(llvm::PostOrderFunctionAttrsPass const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 158 | 24 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 24 | if (Callbacks) | 160 | 12 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 24 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::LazyCallGraph::SCC, llvm::InlinerPass>(llvm::InlinerPass const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 158 | 13 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 13 | if (Callbacks) | 160 | 5 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 13 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Function, llvm::SimplifyCFGPass>(llvm::SimplifyCFGPass const&, llvm::Function const&) const Line | Count | Source | 158 | 14 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 14 | if (Callbacks) | 160 | 6 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 14 | } |
void llvm::PassInstrumentation::runAfterPass<llvm::Module, llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> > >(llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> > const&, llvm::Module const&) const Line | Count | Source | 158 | 3 | void runAfterPass(const PassT &Pass, const IRUnitT &IR) const { | 159 | 3 | if (Callbacks) | 160 | 3 | for (auto &C : Callbacks->AfterPassCallbacks) | 161 | 0 | C(Pass.name(), llvm::Any(&IR)); | 162 | 3 | } |
|
163 | | |
164 | | /// AfterPassInvalidated instrumentation point - takes \p Pass instance |
165 | | /// that has just been executed. For use when IR has been invalidated |
166 | | /// by \p Pass execution. |
167 | | template <typename IRUnitT, typename PassT> |
168 | 1.70k | void runAfterPassInvalidated(const PassT &Pass) const { |
169 | 1.70k | if (Callbacks) |
170 | 1.66k | for (auto &C : Callbacks->AfterPassInvalidatedCallbacks) |
171 | 12 | C(Pass.name()); |
172 | 1.70k | } void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::LazyCallGraph::SCC, llvm::detail::PassConcept<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >(llvm::detail::PassConcept<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> const&) const Line | Count | Source | 168 | 19 | void runAfterPassInvalidated(const PassT &Pass) const { | 169 | 19 | if (Callbacks) | 170 | 18 | for (auto &C : Callbacks->AfterPassInvalidatedCallbacks) | 171 | 3 | C(Pass.name()); | 172 | 19 | } |
void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::Loop, llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> >(llvm::detail::PassConcept<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> const&) const Line | Count | Source | 168 | 837 | void runAfterPassInvalidated(const PassT &Pass) const { | 169 | 837 | if (Callbacks) | 170 | 818 | for (auto &C : Callbacks->AfterPassInvalidatedCallbacks) | 171 | 3 | C(Pass.name()); | 172 | 837 | } |
void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::Loop, llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> >(llvm::PassManager<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>, llvm::LoopStandardAnalysisResults&, llvm::LPMUpdater&> const&) const Line | Count | Source | 168 | 837 | void runAfterPassInvalidated(const PassT &Pass) const { | 169 | 837 | if (Callbacks) | 170 | 818 | for (auto &C : Callbacks->AfterPassInvalidatedCallbacks) | 171 | 3 | C(Pass.name()); | 172 | 837 | } |
Unexecuted instantiation: void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::Loop, llvm::LICMPass>(llvm::LICMPass const&) const void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> >(llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> const&) const Line | Count | Source | 168 | 16 | void runAfterPassInvalidated(const PassT &Pass) const { | 169 | 16 | if (Callbacks) | 170 | 15 | for (auto &C : Callbacks->AfterPassInvalidatedCallbacks) | 171 | 3 | C(Pass.name()); | 172 | 16 | } |
Unexecuted instantiation: void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::Loop, llvm::LoopRotatePass>(llvm::LoopRotatePass const&) const Unexecuted instantiation: void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass<llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> > >(llvm::DevirtSCCRepeatedPass<llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&> > const&) const Unexecuted instantiation: void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::Loop, llvm::LoopUnrollAndJamPass>(llvm::LoopUnrollAndJamPass const&) const Unexecuted instantiation: void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::LazyCallGraph::SCC, llvm::PostOrderFunctionAttrsPass>(llvm::PostOrderFunctionAttrsPass const&) const Unexecuted instantiation: void llvm::PassInstrumentation::runAfterPassInvalidated<llvm::LazyCallGraph::SCC, llvm::InlinerPass>(llvm::InlinerPass const&) const |
173 | | |
174 | | /// BeforeAnalysis instrumentation point - takes \p Analysis instance |
175 | | /// to be executed and constant reference to IR it operates on. |
176 | | template <typename IRUnitT, typename PassT> |
177 | 90.0k | void runBeforeAnalysis(const PassT &Analysis, const IRUnitT &IR) const { |
178 | 90.0k | if (Callbacks) |
179 | 34.9k | for (auto &C : Callbacks->BeforeAnalysisCallbacks) |
180 | 393 | C(Analysis.name(), llvm::Any(&IR)); |
181 | 90.0k | } void llvm::PassInstrumentation::runBeforeAnalysis<llvm::Function, llvm::detail::AnalysisPassConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator> >(llvm::detail::AnalysisPassConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator> const&, llvm::Function const&) const Line | Count | Source | 177 | 77.2k | void runBeforeAnalysis(const PassT &Analysis, const IRUnitT &IR) const { | 178 | 77.2k | if (Callbacks) | 179 | 27.2k | for (auto &C : Callbacks->BeforeAnalysisCallbacks) | 180 | 277 | C(Analysis.name(), llvm::Any(&IR)); | 181 | 77.2k | } |
void llvm::PassInstrumentation::runBeforeAnalysis<llvm::Module, llvm::detail::AnalysisPassConcept<llvm::Module, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>::Invalidator> >(llvm::detail::AnalysisPassConcept<llvm::Module, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>::Invalidator> const&, llvm::Module const&) const Line | Count | Source | 177 | 5.76k | void runBeforeAnalysis(const PassT &Analysis, const IRUnitT &IR) const { | 178 | 5.76k | if (Callbacks) | 179 | 4.42k | for (auto &C : Callbacks->BeforeAnalysisCallbacks) | 180 | 70 | C(Analysis.name(), llvm::Any(&IR)); | 181 | 5.76k | } |
void llvm::PassInstrumentation::runBeforeAnalysis<llvm::LazyCallGraph::SCC, llvm::detail::AnalysisPassConcept<llvm::LazyCallGraph::SCC, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>::Invalidator, llvm::LazyCallGraph&> >(llvm::detail::AnalysisPassConcept<llvm::LazyCallGraph::SCC, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>::Invalidator, llvm::LazyCallGraph&> const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 177 | 5.82k | void runBeforeAnalysis(const PassT &Analysis, const IRUnitT &IR) const { | 178 | 5.82k | if (Callbacks) | 179 | 2.35k | for (auto &C : Callbacks->BeforeAnalysisCallbacks) | 180 | 29 | C(Analysis.name(), llvm::Any(&IR)); | 181 | 5.82k | } |
void llvm::PassInstrumentation::runBeforeAnalysis<llvm::Loop, llvm::detail::AnalysisPassConcept<llvm::Loop, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>::Invalidator, llvm::LoopStandardAnalysisResults&> >(llvm::detail::AnalysisPassConcept<llvm::Loop, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>::Invalidator, llvm::LoopStandardAnalysisResults&> const&, llvm::Loop const&) const Line | Count | Source | 177 | 1.17k | void runBeforeAnalysis(const PassT &Analysis, const IRUnitT &IR) const { | 178 | 1.17k | if (Callbacks) | 179 | 966 | for (auto &C : Callbacks->BeforeAnalysisCallbacks) | 180 | 17 | C(Analysis.name(), llvm::Any(&IR)); | 181 | 1.17k | } |
Unexecuted instantiation: void llvm::PassInstrumentation::runBeforeAnalysis<polly::Scop, llvm::detail::AnalysisPassConcept<polly::Scop, llvm::PreservedAnalyses, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>::Invalidator, polly::ScopStandardAnalysisResults&> >(llvm::detail::AnalysisPassConcept<polly::Scop, llvm::PreservedAnalyses, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>::Invalidator, polly::ScopStandardAnalysisResults&> const&, polly::Scop const&) const |
182 | | |
183 | | /// AfterAnalysis instrumentation point - takes \p Analysis instance |
184 | | /// that has just been executed and constant reference to IR it operated on. |
185 | | template <typename IRUnitT, typename PassT> |
186 | 105k | void runAfterAnalysis(const PassT &Analysis, const IRUnitT &IR) const { |
187 | 105k | if (Callbacks) |
188 | 34.9k | for (auto &C : Callbacks->AfterAnalysisCallbacks) |
189 | 393 | C(Analysis.name(), llvm::Any(&IR)); |
190 | 105k | } void llvm::PassInstrumentation::runAfterAnalysis<llvm::Function, llvm::detail::AnalysisPassConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator> >(llvm::detail::AnalysisPassConcept<llvm::Function, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>::Invalidator> const&, llvm::Function const&) const Line | Count | Source | 186 | 86.4k | void runAfterAnalysis(const PassT &Analysis, const IRUnitT &IR) const { | 187 | 86.4k | if (Callbacks) | 188 | 27.2k | for (auto &C : Callbacks->AfterAnalysisCallbacks) | 189 | 277 | C(Analysis.name(), llvm::Any(&IR)); | 190 | 86.4k | } |
void llvm::PassInstrumentation::runAfterAnalysis<llvm::Module, llvm::detail::AnalysisPassConcept<llvm::Module, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>::Invalidator> >(llvm::detail::AnalysisPassConcept<llvm::Module, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>::Invalidator> const&, llvm::Module const&) const Line | Count | Source | 186 | 7.19k | void runAfterAnalysis(const PassT &Analysis, const IRUnitT &IR) const { | 187 | 7.19k | if (Callbacks) | 188 | 4.42k | for (auto &C : Callbacks->AfterAnalysisCallbacks) | 189 | 70 | C(Analysis.name(), llvm::Any(&IR)); | 190 | 7.19k | } |
void llvm::PassInstrumentation::runAfterAnalysis<llvm::LazyCallGraph::SCC, llvm::detail::AnalysisPassConcept<llvm::LazyCallGraph::SCC, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>::Invalidator, llvm::LazyCallGraph&> >(llvm::detail::AnalysisPassConcept<llvm::LazyCallGraph::SCC, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>::Invalidator, llvm::LazyCallGraph&> const&, llvm::LazyCallGraph::SCC const&) const Line | Count | Source | 186 | 7.99k | void runAfterAnalysis(const PassT &Analysis, const IRUnitT &IR) const { | 187 | 7.99k | if (Callbacks) | 188 | 2.35k | for (auto &C : Callbacks->AfterAnalysisCallbacks) | 189 | 29 | C(Analysis.name(), llvm::Any(&IR)); | 190 | 7.99k | } |
void llvm::PassInstrumentation::runAfterAnalysis<llvm::Loop, llvm::detail::AnalysisPassConcept<llvm::Loop, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>::Invalidator, llvm::LoopStandardAnalysisResults&> >(llvm::detail::AnalysisPassConcept<llvm::Loop, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>::Invalidator, llvm::LoopStandardAnalysisResults&> const&, llvm::Loop const&) const Line | Count | Source | 186 | 4.05k | void runAfterAnalysis(const PassT &Analysis, const IRUnitT &IR) const { | 187 | 4.05k | if (Callbacks) | 188 | 966 | for (auto &C : Callbacks->AfterAnalysisCallbacks) | 189 | 17 | C(Analysis.name(), llvm::Any(&IR)); | 190 | 4.05k | } |
Unexecuted instantiation: void llvm::PassInstrumentation::runAfterAnalysis<polly::Scop, llvm::detail::AnalysisPassConcept<polly::Scop, llvm::PreservedAnalyses, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>::Invalidator, polly::ScopStandardAnalysisResults&> >(llvm::detail::AnalysisPassConcept<polly::Scop, llvm::PreservedAnalyses, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>::Invalidator, polly::ScopStandardAnalysisResults&> const&, polly::Scop const&) const |
191 | | |
192 | | /// Handle invalidation from the pass manager when PassInstrumentation |
193 | | /// is used as the result of PassInstrumentationAnalysis. |
194 | | /// |
195 | | /// On attempt to invalidate just return false. There is nothing to become |
196 | | /// invalid here. |
197 | | template <typename IRUnitT, typename... ExtraArgsT> |
198 | | bool invalidate(IRUnitT &, const class llvm::PreservedAnalyses &, |
199 | 14.2k | ExtraArgsT...) { |
200 | 14.2k | return false; |
201 | 14.2k | } bool llvm::PassInstrumentation::invalidate<llvm::Module, llvm::AnalysisManager<llvm::Module>::Invalidator>(llvm::Module&, llvm::PreservedAnalyses const&, llvm::AnalysisManager<llvm::Module>::Invalidator) Line | Count | Source | 199 | 1.49k | ExtraArgsT...) { | 200 | 1.49k | return false; | 201 | 1.49k | } |
bool llvm::PassInstrumentation::invalidate<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>::Invalidator>(llvm::LazyCallGraph::SCC&, llvm::PreservedAnalyses const&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>::Invalidator) Line | Count | Source | 199 | 3.84k | ExtraArgsT...) { | 200 | 3.84k | return false; | 201 | 3.84k | } |
bool llvm::PassInstrumentation::invalidate<llvm::Function, llvm::AnalysisManager<llvm::Function>::Invalidator>(llvm::Function&, llvm::PreservedAnalyses const&, llvm::AnalysisManager<llvm::Function>::Invalidator) Line | Count | Source | 199 | 8.35k | ExtraArgsT...) { | 200 | 8.35k | return false; | 201 | 8.35k | } |
bool llvm::PassInstrumentation::invalidate<llvm::Loop, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>::Invalidator>(llvm::Loop&, llvm::PreservedAnalyses const&, llvm::AnalysisManager<llvm::Loop, llvm::LoopStandardAnalysisResults&>::Invalidator) Line | Count | Source | 199 | 597 | ExtraArgsT...) { | 200 | 597 | return false; | 201 | 597 | } |
|
202 | | }; |
203 | | |
204 | | } // namespace llvm |
205 | | |
206 | | #endif |