svf-tools 1.0.563 → 1.0.564
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -38
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp.html +0 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +9 -114
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +7 -69
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +65 -6
- package/SVF-doxygen/html/html/SVFStat_8h_source.html +16 -14
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat-members.html +21 -74
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -208
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +22 -75
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +15 -176
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat-members.html +26 -79
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +13 -188
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat-members.html +22 -75
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +11 -172
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat-members.html +26 -79
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +19 -180
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +30 -83
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +11 -172
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +6 -62
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +33 -1841
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +44 -97
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +25 -186
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat-members.html +17 -15
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +158 -37
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +23 -76
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +13 -187
- package/SVF-doxygen/html/html/functions_a.html +5 -9
- package/SVF-doxygen/html/html/functions_b.html +8 -11
- package/SVF-doxygen/html/html/functions_c.html +2 -2
- package/SVF-doxygen/html/html/functions_e.html +2 -3
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func_b.html +1 -4
- package/SVF-doxygen/html/html/functions_func_p.html +4 -5
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +6 -6
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_m.html +1 -9
- package/SVF-doxygen/html/html/functions_n.html +0 -114
- package/SVF-doxygen/html/html/functions_o.html +12 -12
- package/SVF-doxygen/html/html/functions_p.html +19 -28
- package/SVF-doxygen/html/html/functions_s.html +18 -25
- package/SVF-doxygen/html/html/functions_t.html +3 -18
- package/SVF-doxygen/html/html/functions_u.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_a.html +0 -4
- package/SVF-doxygen/html/html/functions_vars_e.html +1 -2
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -9
- package/SVF-doxygen/html/html/functions_vars_n.html +0 -114
- package/SVF-doxygen/html/html/functions_vars_p.html +1 -7
- package/SVF-doxygen/html/html/functions_vars_s.html +1 -8
- package/SVF-doxygen/html/html/functions_vars_t.html +0 -15
- package/SVF-doxygen/html/html/functions_vars_u.html +0 -3
- package/SVF-doxygen/html/html/functions_w.html +11 -11
- package/SVF-doxygen/html/html/search/all_1.js +1 -2
- package/SVF-doxygen/html/html/search/all_10.js +13 -15
- package/SVF-doxygen/html/html/search/all_11.js +1 -1
- package/SVF-doxygen/html/html/search/all_12.js +7 -9
- package/SVF-doxygen/html/html/search/all_13.js +6 -11
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_2.js +1 -2
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +2 -2
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +2 -4
- package/SVF-doxygen/html/html/search/all_e.js +3 -39
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_1.js +1 -2
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +3 -3
- package/SVF-doxygen/html/html/search/variables_1.js +1 -2
- package/SVF-doxygen/html/html/search/variables_10.js +1 -3
- package/SVF-doxygen/html/html/search/variables_12.js +1 -3
- package/SVF-doxygen/html/html/search/variables_13.js +3 -8
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +2 -4
- package/SVF-doxygen/html/html/search/variables_e.js +3 -39
- package/include/Util/PTAStat.h +0 -79
- package/include/Util/SVFStat.h +3 -2
- package/lib/Util/PTAStat.cpp +7 -259
- package/lib/Util/SVFStat.cpp +197 -2
- package/lib/WPA/AndersenStat.cpp +31 -31
- package/lib/WPA/FlowSensitiveStat.cpp +14 -14
- package/lib/WPA/VersionedFlowSensitiveStat.cpp +13 -13
- package/package.json +1 -1
package/lib/WPA/AndersenStat.cpp
CHANGED
|
@@ -306,49 +306,49 @@ void AndersenStat::performStat()
|
|
|
306
306
|
|
|
307
307
|
constraintGraphStat();
|
|
308
308
|
|
|
309
|
-
timeStatMap[
|
|
310
|
-
timeStatMap[
|
|
311
|
-
timeStatMap[SCCMergeTime] = Andersen::timeOfSCCMerges;
|
|
309
|
+
timeStatMap["TotalTime"] = (endTime - startTime)/TIMEINTERVAL;
|
|
310
|
+
timeStatMap["SCCDetectTime"] = Andersen::timeOfSCCDetection;
|
|
311
|
+
timeStatMap["SCCMergeTime"] = Andersen::timeOfSCCMerges;
|
|
312
312
|
timeStatMap[CollapseTime] = Andersen::timeOfCollapse;
|
|
313
313
|
|
|
314
|
-
timeStatMap[
|
|
315
|
-
timeStatMap[
|
|
316
|
-
timeStatMap[
|
|
314
|
+
timeStatMap["LoadStoreTime"] = Andersen::timeOfProcessLoadStore;
|
|
315
|
+
timeStatMap["CopyGepTime"] = Andersen::timeOfProcessCopyGep;
|
|
316
|
+
timeStatMap["UpdateCGTime"] = Andersen::timeOfUpdateCallGraph;
|
|
317
317
|
|
|
318
|
-
PTNumStatMap[
|
|
319
|
-
PTNumStatMap[
|
|
318
|
+
PTNumStatMap["TotalPointers"] = pag->getValueNodeNum() + pag->getFieldValNodeNum();
|
|
319
|
+
PTNumStatMap["TotalObjects"] = pag->getObjectNodeNum() + pag->getFieldObjNodeNum();
|
|
320
320
|
|
|
321
321
|
|
|
322
|
-
PTNumStatMap[
|
|
323
|
-
PTNumStatMap[
|
|
324
|
-
PTNumStatMap[
|
|
325
|
-
PTNumStatMap[
|
|
326
|
-
PTNumStatMap[
|
|
322
|
+
PTNumStatMap["AddrProcessed"] = Andersen::numOfProcessedAddr;
|
|
323
|
+
PTNumStatMap["CopyProcessed"] = Andersen::numOfProcessedCopy;
|
|
324
|
+
PTNumStatMap["GepProcessed"] = Andersen::numOfProcessedGep;
|
|
325
|
+
PTNumStatMap["LoadProcessed"] = Andersen::numOfProcessedLoad;
|
|
326
|
+
PTNumStatMap["StoreProcessed"] = Andersen::numOfProcessedStore;
|
|
327
327
|
|
|
328
|
-
PTNumStatMap[
|
|
329
|
-
PTNumStatMap[NumOfFieldExpand] = Andersen::numOfFieldExpand;
|
|
328
|
+
PTNumStatMap["NumOfSFRs"] = Andersen::numOfSfrs;
|
|
329
|
+
PTNumStatMap["NumOfFieldExpand"] = Andersen::numOfFieldExpand;
|
|
330
330
|
|
|
331
|
-
PTNumStatMap[
|
|
332
|
-
PTNumStatMap[
|
|
333
|
-
PTNumStatMap[
|
|
334
|
-
PTNumStatMap[
|
|
331
|
+
PTNumStatMap["Pointers"] = pag->getValueNodeNum();
|
|
332
|
+
PTNumStatMap["MemObjects"] = pag->getObjectNodeNum();
|
|
333
|
+
PTNumStatMap["DummyFieldPtrs"] = pag->getFieldValNodeNum();
|
|
334
|
+
PTNumStatMap["FieldObjs"] = pag->getFieldObjNodeNum();
|
|
335
335
|
|
|
336
|
-
timeStatMap[
|
|
337
|
-
timeStatMap[
|
|
336
|
+
timeStatMap["AvgPtsSetSize"] = (double)totalPtsSize/totalPointers;;
|
|
337
|
+
timeStatMap["AvgTopLvlPtsSize"] = (double)totalTopLevPtsSize/totalTopLevPointers;;
|
|
338
338
|
|
|
339
|
-
PTNumStatMap[
|
|
339
|
+
PTNumStatMap["MaxPtsSetSize"] = _MaxPtsSize;
|
|
340
340
|
|
|
341
|
-
PTNumStatMap[
|
|
341
|
+
PTNumStatMap["SolveIterations"] = pta->numOfIteration;
|
|
342
342
|
|
|
343
|
-
PTNumStatMap[
|
|
344
|
-
PTNumStatMap[
|
|
343
|
+
PTNumStatMap["IndCallSites"] = consCG->getIndirectCallsites().size();
|
|
344
|
+
PTNumStatMap["IndEdgeSolved"] = pta->getNumOfResolvedIndCallEdge();
|
|
345
345
|
|
|
346
|
-
PTNumStatMap[
|
|
347
|
-
PTNumStatMap[
|
|
348
|
-
PTNumStatMap[
|
|
349
|
-
PTNumStatMap[
|
|
350
|
-
PTNumStatMap[
|
|
351
|
-
PTNumStatMap[
|
|
346
|
+
PTNumStatMap["NumOfSCCDetect"] = Andersen::numOfSCCDetection;
|
|
347
|
+
PTNumStatMap["TotalCycleNum"] = _NumOfCycles;
|
|
348
|
+
PTNumStatMap["TotalPWCCycleNum"] = _NumOfPWCCycles;
|
|
349
|
+
PTNumStatMap["NodesInCycles"] = _NumOfNodesInCycles;
|
|
350
|
+
PTNumStatMap["MaxNodesInSCC"] = _MaxNumOfNodesInSCC;
|
|
351
|
+
PTNumStatMap["NullPointer"] = _NumOfNullPtr;
|
|
352
352
|
PTNumStatMap["PointsToConstPtr"] = _NumOfConstantPtr;
|
|
353
353
|
PTNumStatMap["PointsToBlkPtr"] = _NumOfBlackholePtr;
|
|
354
354
|
|
|
@@ -120,8 +120,8 @@ void FlowSensitiveStat::performStat()
|
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
PTNumStatMap[
|
|
124
|
-
PTNumStatMap[
|
|
123
|
+
PTNumStatMap["FIObjNum"] = fiObjNumber;
|
|
124
|
+
PTNumStatMap["FSObjNum"] = fsObjNumber;
|
|
125
125
|
|
|
126
126
|
unsigned numOfCopy = 0;
|
|
127
127
|
unsigned numOfStore = 0;
|
|
@@ -138,7 +138,7 @@ void FlowSensitiveStat::performStat()
|
|
|
138
138
|
|
|
139
139
|
PTAStat::performStat();
|
|
140
140
|
|
|
141
|
-
timeStatMap[
|
|
141
|
+
timeStatMap["TotalTime"] = (endTime - startTime)/TIMEINTERVAL;
|
|
142
142
|
timeStatMap["SolveTime"] = fspta->solveTime;
|
|
143
143
|
timeStatMap["SCCTime"] = fspta->sccTime;
|
|
144
144
|
timeStatMap["ProcessTime"] = fspta->processTime;
|
|
@@ -154,22 +154,22 @@ void FlowSensitiveStat::performStat()
|
|
|
154
154
|
timeStatMap["UpdateCGTime"] = fspta->updateCallGraphTime;
|
|
155
155
|
timeStatMap["PhiTime"] = fspta->phiTime;
|
|
156
156
|
|
|
157
|
-
PTNumStatMap[
|
|
158
|
-
PTNumStatMap[
|
|
157
|
+
PTNumStatMap["TotalPointers"] = pag->getValueNodeNum() + pag->getFieldValNodeNum();
|
|
158
|
+
PTNumStatMap["TotalObjects"] = pag->getObjectNodeNum() + pag->getFieldObjNodeNum();
|
|
159
159
|
|
|
160
|
-
PTNumStatMap[
|
|
161
|
-
PTNumStatMap[
|
|
162
|
-
PTNumStatMap[
|
|
163
|
-
PTNumStatMap[
|
|
160
|
+
PTNumStatMap["Pointers"] = pag->getValueNodeNum();
|
|
161
|
+
PTNumStatMap["MemObjects"] = pag->getObjectNodeNum();
|
|
162
|
+
PTNumStatMap["DummyFieldPtrs"] = pag->getFieldValNodeNum();
|
|
163
|
+
PTNumStatMap["FieldObjs"] = pag->getFieldObjNodeNum();
|
|
164
164
|
|
|
165
|
-
PTNumStatMap[
|
|
166
|
-
PTNumStatMap[
|
|
165
|
+
PTNumStatMap["CopysNum"] = numOfCopy;
|
|
166
|
+
PTNumStatMap["StoresNum"] = numOfStore;
|
|
167
167
|
|
|
168
|
-
PTNumStatMap[
|
|
168
|
+
PTNumStatMap["SolveIterations"] = fspta->numOfIteration;
|
|
169
169
|
|
|
170
|
-
PTNumStatMap[
|
|
170
|
+
PTNumStatMap["IndEdgeSolved"] = fspta->getNumOfResolvedIndCallEdge();
|
|
171
171
|
|
|
172
|
-
PTNumStatMap[
|
|
172
|
+
PTNumStatMap["NullPointer"] = _NumOfNullPtr;
|
|
173
173
|
PTNumStatMap["PointsToConstPtr"] = _NumOfConstantPtr;
|
|
174
174
|
PTNumStatMap["PointsToBlkPtr"] = _NumOfBlackholePtr;
|
|
175
175
|
|
|
@@ -65,8 +65,8 @@ void VersionedFlowSensitiveStat::performStat()
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
PTNumStatMap[
|
|
69
|
-
PTNumStatMap[
|
|
68
|
+
PTNumStatMap["FIObjNum"] = fiObjNumber;
|
|
69
|
+
PTNumStatMap["FSObjNum"] = fsObjNumber;
|
|
70
70
|
|
|
71
71
|
unsigned numOfCopy = 0;
|
|
72
72
|
unsigned numOfStore = 0;
|
|
@@ -79,7 +79,7 @@ void VersionedFlowSensitiveStat::performStat()
|
|
|
79
79
|
|
|
80
80
|
PTAStat::performStat();
|
|
81
81
|
|
|
82
|
-
timeStatMap[
|
|
82
|
+
timeStatMap["TotalTime"] = (endTime - startTime)/TIMEINTERVAL;
|
|
83
83
|
timeStatMap["SolveTime"] = vfspta->solveTime;
|
|
84
84
|
timeStatMap["SCCTime"] = vfspta->sccTime;
|
|
85
85
|
timeStatMap["ProcessTime"] = vfspta->processTime;
|
|
@@ -98,13 +98,13 @@ void VersionedFlowSensitiveStat::performStat()
|
|
|
98
98
|
timeStatMap["PrelabelingTime"] = vfspta->prelabelingTime;
|
|
99
99
|
timeStatMap["VersionPropTime"] = vfspta->versionPropTime;
|
|
100
100
|
|
|
101
|
-
PTNumStatMap[
|
|
102
|
-
PTNumStatMap[
|
|
101
|
+
PTNumStatMap["TotalPointers"] = pag->getValueNodeNum() + pag->getFieldValNodeNum();
|
|
102
|
+
PTNumStatMap["TotalObjects"] = pag->getObjectNodeNum() + pag->getFieldObjNodeNum();
|
|
103
103
|
|
|
104
|
-
PTNumStatMap[
|
|
105
|
-
PTNumStatMap[
|
|
106
|
-
PTNumStatMap[
|
|
107
|
-
PTNumStatMap[
|
|
104
|
+
PTNumStatMap["Pointers"] = pag->getValueNodeNum();
|
|
105
|
+
PTNumStatMap["MemObjects"] = pag->getObjectNodeNum();
|
|
106
|
+
PTNumStatMap["DummyFieldPtrs"] = pag->getFieldValNodeNum();
|
|
107
|
+
PTNumStatMap["FieldObjs"] = pag->getFieldObjNodeNum();
|
|
108
108
|
|
|
109
109
|
PTNumStatMap["TotalVersions"] = _NumVersions;
|
|
110
110
|
PTNumStatMap["MaxVersionsForObj"] = _MaxVersions;
|
|
@@ -113,12 +113,12 @@ void VersionedFlowSensitiveStat::performStat()
|
|
|
113
113
|
PTNumStatMap["TotalExistingVPts"] = _NumUsedVersions;
|
|
114
114
|
PTNumStatMap["TotalSingleVObjs"] = _NumSingleVersion;
|
|
115
115
|
|
|
116
|
-
PTNumStatMap[
|
|
117
|
-
PTNumStatMap[
|
|
116
|
+
PTNumStatMap["CopysNum"] = numOfCopy;
|
|
117
|
+
PTNumStatMap["StoresNum"] = numOfStore;
|
|
118
118
|
|
|
119
|
-
PTNumStatMap[
|
|
119
|
+
PTNumStatMap["SolveIterations"] = vfspta->numOfIteration;
|
|
120
120
|
|
|
121
|
-
PTNumStatMap[
|
|
121
|
+
PTNumStatMap["IndEdgeSolved"] = vfspta->getNumOfResolvedIndCallEdge();
|
|
122
122
|
|
|
123
123
|
PTNumStatMap["StrongUpdates"] = vfspta->svfgHasSU.count();
|
|
124
124
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.564",
|
|
4
4
|
"description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|