Static Value-Flow Analysis
Loading...
Searching...
No Matches
CFLStat.cpp
Go to the documentation of this file.
1//===- CFLStat.cpp -- Statistics of CFL Reachability's analysis------------------//
2//
3// SVF: Static Value-Flow Analysis
4//
5// Copyright (C) <2013-2017> <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 * CFLStat.cpp
25 *
26 * Created on: 17 Sep, 2022
27 * Author: Pei Xu
28 */
29
30#include "CFL/CFLAlias.h"
31#include "CFL/CFLStat.h"
32#include "CFL/CFLVF.h"
33
34using namespace SVF;
35using namespace SVFUtil;
36using namespace std;
37
42{
43 startClk();
44}
45
50{
53
54 timeStatMap["BuildingTime"] = pta->timeOfBuildCFLGraph;
55 PTNumStatMap["NumOfNodes"] = CFLGraph->getTotalNodeNum();
56 PTNumStatMap["NumOfEdges"] = CFLGraph->getCFLEdges().size();
57
58 PTAStat::printStat("CFLGraph Stats");
59}
60
62{
63 timeStatMap["BuildingTime"] = pta->timeOfBuildCFLGrammar;
64 timeStatMap["NormalizationTime"] = pta->timeOfNormalizeGrammar;
65
66 PTAStat::printStat("CFLGrammar Stats");
67}
68
70{
71 timeStatMap["AnalysisTime"] = pta->timeOfSolving;
72 PTNumStatMap["numOfChecks"] = pta->numOfChecks;
73 PTNumStatMap["numOfIteration"] = pta->numOfIteration;
74 PTNumStatMap["SumEdges"] = pta->numOfStartEdges;
75
76 PTAStat::printStat("CFL-reachability Solver Stats");
77}
78
83{
84 assert((SVFUtil::isa<CFLAlias, CFLVF>(pta)) && "not an CFLAlias pass!! what else??");
85 endClk();
86
87 // Grammar stat
89
90 // CFLGraph stat
92
93 // Solver stat
95
96 // Stat about Call graph and General stat
98}
99
cJSON * p
Definition cJSON.cpp:2559
CFL Client Base Class.
Definition CFLBase.h:47
static double timeOfBuildCFLGrammar
Statistics.
Definition CFLBase.h:91
CFLGraph * getCFLGraph()
Get CFL graph.
Definition CFLBase.cpp:151
static double numOfStartEdges
Definition CFLBase.h:98
static double numOfChecks
Definition CFLBase.h:101
virtual void countSumEdges()
Count the num of Nonterminal Edges.
Definition CFLBase.cpp:156
static double timeOfSolving
Definition CFLBase.h:102
static double timeOfBuildCFLGraph
Definition CFLBase.h:94
static double numOfIteration
Definition CFLBase.h:100
static double timeOfNormalizeGrammar
Definition CFLBase.h:92
const CFLEdgeSet & getCFLEdges() const
Definition CFLGraph.h:198
virtual void performStat()
Definition CFLStat.cpp:82
void CFLGrammarStat()
Definition CFLStat.cpp:61
CFLBase * pta
Definition CFLStat.h:47
void CFLGraphStat()
Definition CFLStat.cpp:49
void CFLSolverStat()
Definition CFLStat.cpp:69
CFLStat(CFLBase *p)
Definition CFLStat.cpp:41
u32_t getTotalNodeNum() const
Get total number of node/edge.
void performStat() override
Definition PTAStat.cpp:53
NUMStatMap PTNumStatMap
Definition SVFStat.h:80
virtual void printStat(std::string str="")
Definition SVFStat.cpp:70
virtual void endClk()
Definition SVFStat.h:66
TIMEStatMap timeStatMap
Definition SVFStat.h:81
virtual void startClk()
Definition SVFStat.h:61
for isBitcode
Definition BasicTypes.h:70
llvm::IRBuilder IRBuilder
Definition BasicTypes.h:76