Coverage Report

Created: 2019-07-24 05:18

/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