Static Value-Flow Analysis
Loading...
Searching...
No Matches
CFLBase.h
Go to the documentation of this file.
1//===----- CFLBase.h -- CFL Analysis Client Base--------------//
2//
3// SVF: Static Value-Flow Analysis
4//
5// Copyright (C) <2013-> <Yulei Sui>
6//
7
8// This program is free software: you can redistribute it and/or modify
9// it under the terms of the GNU Affero General Public License as published by
10// the Free Software Foundation, either version 3 of the License, or
11// (at your option) any later version.
12
13// This program is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU Affero General Public License for more details.
17
18// You should have received a copy of the GNU Affero General Public License
19// along with this program. If not, see <http://www.gnu.org/licenses/>.
20//
21//===----------------------------------------------------------------------===//
22
23/*
24 * CFLBase.h
25 *
26 * Created on: Oct 12, 2022
27 * Author: Pei Xu
28 */
29
30#ifndef INCLUDE_CFL_CFLBASE_H_
31#define INCLUDE_CFL_CFLBASE_H_
32
33#include "CFL/CFLSolver.h"
34#include "CFL/CFGrammar.h"
36#include "MemoryModel/PTATY.h"
37
38namespace SVF
39{
40
41class CFLGraph;
42class CFLStat;
43class SVFIR;
44
46class CFLBase : public BVDataPTAImpl
47{
48
49public:
53
55 virtual ~CFLBase()
56 {
57 delete solver;
58 delete grammarBase;
59 }
60
62 virtual void checkParameter();
63
65 virtual void buildCFLGrammar();
66
68 virtual void buildCFLGraph();
69
71 virtual void normalizeCFLGrammar();
72
75
77 virtual void countSumEdges();
78
80 virtual void solve();
81
83 virtual void finalize();
84
86 virtual void analyze();
87
89
90 // Grammar
91 static double timeOfBuildCFLGrammar; // Time of building grammarBase from text file
92 static double timeOfNormalizeGrammar; // Time of normalizing grammarBase to CFGrammar
93 // Graph
94 static double timeOfBuildCFLGraph; // Time of building CFLGraph
95 static double numOfTerminalEdges; // Number of terminal labeled edges
96 static double numOfTemporaryNonterminalEdges; // Number of temporary (ie. X0, X1..) nonterminal labeled edges
97 static double numOfNonterminalEdges; // Number of nonterminal labeled edges
98 static double numOfStartEdges; // Number of start nonterminal labeled edges
99 // Solver
100 static double numOfIteration; // Number solving Iteration
101 static double numOfChecks; // Number of checks
102 static double timeOfSolving; // time of solving CFL Reachability
104
105protected:
111};
112
113} // End namespace SVF
114
115#endif /* INCLUDE_CFL_CFLBASE_H_*/
CFL Client Base Class.
Definition CFLBase.h:47
static double timeOfBuildCFLGrammar
Statistics.
Definition CFLBase.h:91
virtual void buildCFLGraph()
Build CFLGraph based on Option.
Definition CFLBase.cpp:84
CFLGraph * getCFLGraph()
Get CFL graph.
Definition CFLBase.cpp:151
static double numOfStartEdges
Definition CFLBase.h:98
virtual void analyze()
Perform analyze (main part of CFLR Analysis)
Definition CFLBase.cpp:142
virtual void solve()
Solving CFL Reachability.
Definition CFLBase.cpp:124
CFLSolver * solver
Definition CFLBase.h:110
virtual void normalizeCFLGrammar()
Normalize grammar.
Definition CFLBase.cpp:111
static double numOfChecks
Definition CFLBase.h:101
static double numOfNonterminalEdges
Definition CFLBase.h:97
virtual void checkParameter()
Parameter Checking.
Definition CFLBase.cpp:55
virtual void buildCFLGrammar()
Build Grammar from text file.
Definition CFLBase.cpp:71
virtual void finalize()
Finalize extra stat info passing.
Definition CFLBase.cpp:135
CFLGraph * graph
Definition CFLBase.h:107
virtual void countSumEdges()
Count the num of Nonterminal Edges.
Definition CFLBase.cpp:156
static double timeOfSolving
Definition CFLBase.h:102
CFGrammar * grammar
Definition CFLBase.h:109
static double timeOfBuildCFLGraph
Definition CFLBase.h:94
virtual ~CFLBase()
Destructor.
Definition CFLBase.h:55
SVFIR * svfir
Definition CFLBase.h:106
static double numOfIteration
Definition CFLBase.h:100
static double numOfTerminalEdges
Definition CFLBase.h:95
static double numOfTemporaryNonterminalEdges
Definition CFLBase.h:96
static double timeOfNormalizeGrammar
Definition CFLBase.h:92
GrammarBase * grammarBase
Definition CFLBase.h:108
CFLBase(SVFIR *ir, PTATY pty)
Definition CFLBase.h:50
for isBitcode
Definition BasicTypes.h:70
PTATY
Pointer analysis type list.
Definition PTATY.h:9
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:76