LLVM
15.0.0git
include
llvm
Analysis
IndirectCallVisitor.h
Go to the documentation of this file.
1
//===-- IndirectCallVisitor.h - indirect call visitor ---------------------===//
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
//
9
// This file implements defines a visitor class and a helper function that find
10
// all indirect call-sites in a function.
11
12
#ifndef LLVM_ANALYSIS_INDIRECTCALLVISITOR_H
13
#define LLVM_ANALYSIS_INDIRECTCALLVISITOR_H
14
15
#include "
llvm/IR/InstVisitor.h
"
16
#include <vector>
17
18
namespace
llvm
{
19
// Visitor class that finds all indirect call.
20
struct
PGOIndirectCallVisitor
:
public
InstVisitor
<PGOIndirectCallVisitor> {
21
std::vector<CallBase *>
IndirectCalls
;
22
PGOIndirectCallVisitor
() =
default
;
23
24
void
visitCallBase
(
CallBase
&Call) {
25
if
(Call.isIndirectCall())
26
IndirectCalls
.push_back(&Call);
27
}
28
};
29
30
// Helper function that finds all indirect call sites.
31
inline
std::vector<CallBase *>
findIndirectCalls
(
Function
&
F
) {
32
PGOIndirectCallVisitor
ICV;
33
ICV.
visit
(
F
);
34
return
ICV.
IndirectCalls
;
35
}
36
}
// namespace llvm
37
38
#endif
llvm::PGOIndirectCallVisitor::IndirectCalls
std::vector< CallBase * > IndirectCalls
Definition:
IndirectCallVisitor.h:21
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:17
llvm::Function
Definition:
Function.h:60
F
#define F(x, y, z)
Definition:
MD5.cpp:55
llvm::PGOIndirectCallVisitor
Definition:
IndirectCallVisitor.h:20
llvm::InstVisitor::visit
void visit(Iterator Start, Iterator End)
Definition:
InstVisitor.h:87
InstVisitor.h
llvm::PGOIndirectCallVisitor::visitCallBase
void visitCallBase(CallBase &Call)
Definition:
IndirectCallVisitor.h:24
llvm::InstVisitor
Base class for instruction visitors.
Definition:
InstVisitor.h:78
llvm::findIndirectCalls
std::vector< CallBase * > findIndirectCalls(Function &F)
Definition:
IndirectCallVisitor.h:31
llvm::CallBase
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
Definition:
InstrTypes.h:1174
llvm::PGOIndirectCallVisitor::PGOIndirectCallVisitor
PGOIndirectCallVisitor()=default
Generated on Mon Jul 4 2022 06:50:17 for LLVM by
1.8.17