FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
program-dependence-graph/include/ProgramDependencyGraph.hh at main · ARISTODE/program-dependence-graph · GitHub
ARISTODE
/
program-dependence-graph
Public
Notifications
You must be signed in to change notification settings
Fork
18
Star
42
Code
Issues
5
Pull requests
4
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
program-dependence-graph
/
include
/
ProgramDependencyGraph.hh
Copy path
More file actions
More file actions
Latest commit
History
History
History
40 lines (38 loc) · 1.71 KB
Breadcrumbs
program-dependence-graph
/
include
/
ProgramDependencyGraph.hh
Copy path
File metadata and controls
40 lines (38 loc) · 1.71 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#
ifndef
PROGRAMDEPENDENCYGRAPH_H_
#
define
PROGRAMDEPENDENCYGRAPH_H_
#
include
"
LLVMEssentials.hh
"
#
include
"
Graph.hh
"
#
include
"
PDGCallGraph.hh
"
#
include
"
DataDependencyGraph.hh
"
#
include
"
ControlDependencyGraph.hh
"
namespace
pdg
{
class
ProgramDependencyGraph
:
public
llvm
::ModulePass
{
public:
static
char
ID
;
ProgramDependencyGraph
() : llvm::ModulePass(
ID
) {};
bool
runOnModule
(llvm::Module &M)
override
;
void
getAnalysisUsage
(llvm::AnalysisUsage &
AU
)
const
override
;
ProgramGraph *
getPDG
() {
return
_PDG; }
llvm::StringRef
getPassName
()
const
override
{
return
"
Program Dependency Graph
"
; }
FunctionWrapper *
getFuncWrapper
(llvm::Function &F) {
return
_PDG->
getFuncWrapperMap
()[&F]; }
CallWrapper *
getCallWrapper
(llvm::CallInst &call_inst) {
return
_PDG->
getCallWrapperMap
()[&call_inst]; }
void
connectGlobalVarWithUses
();
void
connectInTrees
(Tree *src_tree, Tree *dst_tree, EdgeType edge_type);
void
connectOutTrees
(Tree *src_tree, Tree *dst_tree, EdgeType edge_type);
void
connectCallerAndCallee
(CallWrapper &cw, FunctionWrapper &fw);
void
connectIntraprocDependencies
(llvm::Function &F);
void
connectInterprocDependencies
(llvm::Function &F);
void
connectFormalInTreeWithAddrVars
(Tree &formal_in_tree);
void
connectFormalOutTreeWithAddrVars
(Tree &formal_out_tree);
void
connectActualInTreeWithAddrVars
(Tree &actual_in_tree, llvm::CallInst &ci);
void
connectActualOutTreeWithAddrVars
(Tree &actual_out_tree, llvm::CallInst &ci);
bool
canReach
(Node &src, Node &dst);
bool
canReach
(Node &src, Node &dst, std::set<EdgeType> exclude_edge_types);
private:
llvm::Module *_module;
ProgramGraph *_PDG;
};
}
#
endif
Back
|
FazBrowse Home
|
New Git URL