svf-tools 1.0.474 → 1.0.475
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/AndersenSFR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +8 -7
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +20 -19
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +15 -15
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +24 -24
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +111 -111
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +41 -40
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +8 -8
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +14 -13
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +9 -9
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +31 -30
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +23 -23
- package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +35 -34
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +28 -27
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +19 -19
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +26 -25
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +22 -22
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +27 -26
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +24 -24
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +17 -16
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +40 -39
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +16 -16
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +58 -57
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +24 -24
- package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +5 -5
- package/SVF-doxygen/html/html/cfl_8cpp.html +3 -3
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +48 -48
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +78 -78
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +100 -100
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +71 -71
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +59 -59
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +148 -148
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +88 -88
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +65 -65
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
- package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
- package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
- package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF.html +4 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1452 -0
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +41 -1409
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +4 -4
- package/SVF-doxygen/html/html/namespacemembers.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_func.html +39 -39
- package/SVF-doxygen/html/html/namespacemembers_g.html +14 -14
- package/SVF-doxygen/html/html/namespacemembers_i.html +18 -18
- package/SVF-doxygen/html/html/namespacemembers_p.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_s.html +2 -2
- package/SVF-doxygen/html/html/namespaces.html +2 -1
- package/SVF-doxygen/html/html/saber_8cpp.html +2 -2
- package/SVF-doxygen/html/html/saber_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/search/all_1.js +3 -3
- package/SVF-doxygen/html/html/search/all_10.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +3 -2
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +14 -14
- package/SVF-doxygen/html/html/search/all_9.js +18 -18
- package/SVF-doxygen/html/html/search/functions_0.js +3 -3
- package/SVF-doxygen/html/html/search/functions_11.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +14 -14
- package/SVF-doxygen/html/html/search/functions_8.js +18 -18
- package/SVF-doxygen/html/html/search/functions_f.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +1 -0
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/wpa_8cpp.html +2 -2
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +2 -2
- package/include/MTA/MHP.h +1 -1
- package/include/SVF-FE/LLVMUtil.h +7 -7
- package/lib/Graphs/ICFG.cpp +2 -2
- package/lib/MSSA/MemRegion.cpp +1 -0
- package/lib/MSSA/MemSSA.cpp +1 -0
- package/lib/MTA/LockAnalysis.cpp +1 -0
- package/lib/MemoryModel/LocationSet.cpp +1 -0
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -0
- package/lib/MemoryModel/SVFIR.cpp +1 -1
- package/lib/MemoryModel/SymbolTableInfo.cpp +1 -0
- package/lib/SABER/LeakChecker.cpp +1 -0
- package/lib/SABER/PathCondAllocator.cpp +1 -0
- package/lib/SVF-FE/CHGBuilder.cpp +1 -0
- package/lib/SVF-FE/CPPUtil.cpp +2 -2
- package/lib/SVF-FE/ICFGBuilder.cpp +1 -0
- package/lib/SVF-FE/LLVMUtil.cpp +32 -32
- package/lib/SVF-FE/SVFIRBuilder.cpp +2 -1
- package/lib/SVF-FE/SymbolTableBuilder.cpp +8 -7
- package/lib/WPA/AndersenStat.cpp +1 -0
- package/lib/WPA/FlowSensitiveStat.cpp +1 -0
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +1 -1
- package/tools/DDA/dda.cpp +1 -1
- package/tools/Example/svf-ex.cpp +1 -1
- package/tools/MTA/mta.cpp +1 -1
- package/tools/SABER/saber.cpp +1 -1
- package/tools/WPA/wpa.cpp +1 -1
|
@@ -206,9 +206,9 @@ $(function() {
|
|
|
206
206
|
<div class="ttc" id="IRGraph_8h_html"><div class="ttname"><a href="IRGraph_8h.html">IRGraph.h</a></div></div>
|
|
207
207
|
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a40387a4893ae5caf58d6f786533d2f44"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a40387a4893ae5caf58d6f786533d2f44">SVF::SymbolTableInfo::getModule</a></div><div class="ttdeci">SVFModule * getModule()</div><div class="ttdoc">Module. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8h_source.html#l00154">SymbolTableInfo.h:154</a></div></div>
|
|
208
208
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a3face8a526a33d82ef7cde7602030bc9"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a3face8a526a33d82ef7cde7602030bc9">SVF::SVFIR::addValNode</a></div><div class="ttdeci">NodeID addValNode(const Value *, SVFVar *node, NodeID i)</div><div class="ttdoc">Add a value (pointer) node. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00561">SVFIR.h:561</a></div></div>
|
|
209
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
209
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
210
210
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a63acb4d86d93ad1e88860ac839a8c654"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a63acb4d86d93ad1e88860ac839a8c654">SVF::SVFIR::hasSVFStmtList</a></div><div class="ttdeci">bool hasSVFStmtList(const ICFGNode *inst) const</div><div class="ttdoc">Whether this instruction has SVFIR Edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00172">SVFIR.h:172</a></div></div>
|
|
211
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8e40c578ccdd3a108a10a191a309bd18"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8e40c578ccdd3a108a10a191a309bd18">SVF::SymbolTableInfo::createDummyObj</a></div><div class="ttdeci">const MemObj * createDummyObj(SymID symId, const Type *type)</div><div class="ttdoc">Can only be invoked by SVFIR::addDummyNode() when creaing SVFIR from file. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
211
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8e40c578ccdd3a108a10a191a309bd18"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8e40c578ccdd3a108a10a191a309bd18">SVF::SymbolTableInfo::createDummyObj</a></div><div class="ttdeci">const MemObj * createDummyObj(SymID symId, const Type *type)</div><div class="ttdoc">Can only be invoked by SVFIR::addDummyNode() when creaing SVFIR from file. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00357">SymbolTableInfo.cpp:357</a></div></div>
|
|
212
212
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a0552d565633ee22abe03085134a871c0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a0552d565633ee22abe03085134a871c0">SVF::SVFIR::hasPTASVFStmtList</a></div><div class="ttdeci">bool hasPTASVFStmtList(const ICFGNode *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00176">SVFIR.h:176</a></div></div>
|
|
213
213
|
<div class="ttc" id="classSVF_1_1SVFIR_html_ac359813747b4f75920c5f395ba74f410"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ac359813747b4f75920c5f395ba74f410">SVF::SVFIR::hasFunArgsList</a></div><div class="ttdeci">bool hasFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Function has arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00215">SVFIR.h:215</a></div></div>
|
|
214
214
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa148e3e14ebad8460e32079f2f44413a"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa148e3e14ebad8460e32079f2f44413a">SVF::SVFIR::getFunArgsList</a></div><div class="ttdeci">const SVFVarList & getFunArgsList(const SVFFunction *func) const</div><div class="ttdoc">Get function arguments list. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00225">SVFIR.h:225</a></div></div>
|
|
@@ -293,7 +293,7 @@ $(function() {
|
|
|
293
293
|
<div class="ttc" id="classSVF_1_1SVFIR_html_ae2006820c0d00482b85e7ae3adcb5744"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ae2006820c0d00482b85e7ae3adcb5744">SVF::SVFIR::getSVFStmtSet</a></div><div class="ttdeci">SVFStmt::SVFStmtSetTy & getSVFStmtSet(SVFStmt::PEDGEK kind)</div><div class="ttdoc">Get/set methods to get SVFStmts based on their kinds and ICFGNodes. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00162">SVFIR.h:162</a></div></div>
|
|
294
294
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a4cef56f7fc77b47dc6e65c59c98551c5"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a4cef56f7fc77b47dc6e65c59c98551c5">SVF::SVFIR::funRetMap</a></div><div class="ttdeci">FunToRetMap funRetMap</div><div class="ttdoc">Map a function to its unique function return PAGNodes. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00086">SVFIR.h:86</a></div></div>
|
|
295
295
|
<div class="ttc" id="classSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00307">SVFStatements.h:307</a></div></div>
|
|
296
|
-
<div class="ttc" id="classSVF_1_1MemObj_html_a1a4ff4aaaf2573240a318e1b79328cd0"><div class="ttname"><a href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">SVF::MemObj::isConstDataOrConstGlobal</a></div><div class="ttdeci">bool isConstDataOrConstGlobal() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
296
|
+
<div class="ttc" id="classSVF_1_1MemObj_html_a1a4ff4aaaf2573240a318e1b79328cd0"><div class="ttname"><a href="classSVF_1_1MemObj.html#a1a4ff4aaaf2573240a318e1b79328cd0">SVF::MemObj::isConstDataOrConstGlobal</a></div><div class="ttdeci">bool isConstDataOrConstGlobal() const</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00731">SymbolTableInfo.cpp:731</a></div></div>
|
|
297
297
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa54b93ebf36944b548aaa74dbf8a144f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa54b93ebf36944b548aaa74dbf8a144f">SVF::SVFIR::addCopyStmt</a></div><div class="ttdeci">CopyStmt * addCopyStmt(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00069">SVFIR.cpp:69</a></div></div>
|
|
298
298
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a25b86c16d11b4d50ccc28ead525687ae"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a25b86c16d11b4d50ccc28ead525687ae">SVF::SVFIR::getObject</a></div><div class="ttdeci">const MemObj * getObject(const ObjVar *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00352">SVFIR.h:352</a></div></div>
|
|
299
299
|
<div class="ttc" id="classSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00047">SVFStatements.h:47</a></div></div>
|
|
@@ -67,12 +67,12 @@ $(function() {
|
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
69
|
<a href="SVFModule_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SVFModule.cpp -- Helper functions for pointer analysis--------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>"</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="SymbolTableBuilder_8h.html">SVF-FE/SymbolTableBuilder.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98"> 30</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVFModule::buildSymbolTableInfo</a>()</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">pagReadFromTXT</a>())</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  {</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<span class="stringliteral">"Building Symbol table ...\n"</span>));</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <a class="code" href="classSVF_1_1SymbolTableInfo.html">SymbolTableInfo</a> *symInfo = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <a class="code" href="classSVF_1_1SymbolTableBuilder.html">SymbolTableBuilder</a> builder(symInfo);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  builder.<a class="code" href="classSVF_1_1SymbolTableBuilder.html#aef0bb1e88d0b69313c673318f7b7cb5f">buildMemModel</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="ttc" id="classSVF_1_1SymbolTableBuilder_html"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html">SVF::SymbolTableBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8h_source.html#l00042">SymbolTableBuilder.h:42</a></div></div>
|
|
70
|
-
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_aef0bb1e88d0b69313c673318f7b7cb5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#aef0bb1e88d0b69313c673318f7b7cb5f">SVF::SymbolTableBuilder::buildMemModel</a></div><div class="ttdeci">void buildMemModel(SVFModule *svfModule)</div><div class="ttdoc">Start building memory model. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#
|
|
70
|
+
<div class="ttc" id="classSVF_1_1SymbolTableBuilder_html_aef0bb1e88d0b69313c673318f7b7cb5f"><div class="ttname"><a href="classSVF_1_1SymbolTableBuilder.html#aef0bb1e88d0b69313c673318f7b7cb5f">SVF::SymbolTableBuilder::buildMemModel</a></div><div class="ttdeci">void buildMemModel(SVFModule *svfModule)</div><div class="ttdoc">Start building memory model. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableBuilder_8cpp_source.html#l00049">SymbolTableBuilder.cpp:49</a></div></div>
|
|
71
71
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00100">SVFUtil.cpp:100</a></div></div>
|
|
72
72
|
<div class="ttc" id="SymbolTableBuilder_8h_html"><div class="ttname"><a href="SymbolTableBuilder_8h.html">SymbolTableBuilder.h</a></div></div>
|
|
73
73
|
<div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
|
|
74
74
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream & outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
|
|
75
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
75
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
76
76
|
<div class="ttc" id="SVFBasicTypes_8h_html_a2c64190a065f342897573a3ef4973adb"><div class="ttname"><a href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a></div><div class="ttdeci">#define DGENERAL</div><div class="ttdoc">General debug flag is for each phase of a pass, it is often in a colorful output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00159">SVFBasicTypes.h:159</a></div></div>
|
|
77
77
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
|
|
78
78
|
<div class="ttc" id="SVFModule_8h_html"><div class="ttname"><a href="SVFModule_8h.html">SVFModule.h</a></div></div>
|
|
@@ -103,7 +103,7 @@ $(function() {
|
|
|
103
103
|
<div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1TDJoinPE_html_accac29adba7ca4883ae161c223a1703d"><div class="ttname"><a href="classSVF_1_1TDJoinPE.html#accac29adba7ca4883ae161c223a1703d">SVF::TDJoinPE::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00268">SVFStatements.cpp:268</a></div></div>
|
|
105
105
|
<div class="ttc" id="classSVF_1_1BinaryOPStmt_html_a138547516e2676c297a27d762544f2aa"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a138547516e2676c297a27d762544f2aa">SVF::BinaryOPStmt::toString</a></div><div class="ttdeci">virtual const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00143">SVFStatements.cpp:143</a></div></div>
|
|
106
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
106
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
107
107
|
<div class="ttc" id="classSVF_1_1AddrStmt_html_abf9453ed58c6946640a85be31512c0e8"><div class="ttname"><a href="classSVF_1_1AddrStmt.html#abf9453ed58c6946640a85be31512c0e8">SVF::AddrStmt::toString</a></div><div class="ttdeci">virtual const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00072">SVFStatements.cpp:72</a></div></div>
|
|
108
108
|
<div class="ttc" id="classSVF_1_1GepStmt_html_acae68ff97d408a1dd929b0348415c81d"><div class="ttname"><a href="classSVF_1_1GepStmt.html#acae68ff97d408a1dd929b0348415c81d">SVF::GepStmt::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00216">SVFStatements.cpp:216</a></div></div>
|
|
109
109
|
<div class="ttc" id="classSVF_1_1UnaryOPStmt_html_a8029b46bccda153ca2e677686c2655e2"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html#a8029b46bccda153ca2e677686c2655e2">SVF::UnaryOPStmt::getOpVarID</a></div><div class="ttdeci">NodeID getOpVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00292">SVFStatements.cpp:292</a></div></div>
|
|
@@ -105,7 +105,7 @@ $(function() {
|
|
|
105
105
|
<div class="ttc" id="classSVF_1_1CloneFIObjVar_html"><div class="ttname"><a href="classSVF_1_1CloneFIObjVar.html">SVF::CloneFIObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00813">SVFVariables.h:813</a></div></div>
|
|
106
106
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a283f7c0c2eaae07c6865f73a0daafeffabf9e21e7cbec690ad318a68cd5d756dc"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a283f7c0c2eaae07c6865f73a0daafeffabf9e21e7cbec690ad318a68cd5d756dc">SVF::SVFVar::CloneGepObjNode</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00073">SVFVariables.h:73</a></div></div>
|
|
107
107
|
<div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode< SVFVar, SVFStmt >::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00177">SVFStatements.h:177</a></div></div>
|
|
108
|
-
<div class="ttc" id="classSVF_1_1MemObj_html_aa4fa7a1b86d66692ffffeaee0e187216"><div class="ttname"><a href="classSVF_1_1MemObj.html#aa4fa7a1b86d66692ffffeaee0e187216">SVF::MemObj::getType</a></div><div class="ttdeci">const Type * getType() const</div><div class="ttdoc">Get obj type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
108
|
+
<div class="ttc" id="classSVF_1_1MemObj_html_aa4fa7a1b86d66692ffffeaee0e187216"><div class="ttname"><a href="classSVF_1_1MemObj.html#aa4fa7a1b86d66692ffffeaee0e187216">SVF::MemObj::getType</a></div><div class="ttdeci">const Type * getType() const</div><div class="ttdoc">Get obj type. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00645">SymbolTableInfo.cpp:645</a></div></div>
|
|
109
109
|
<div class="ttc" id="classSVF_1_1RetPN_html_ac551c1aaf9ec3cb77814aa4664d61a23"><div class="ttname"><a href="classSVF_1_1RetPN.html#ac551c1aaf9ec3cb77814aa4664d61a23">SVF::RetPN::RetPN</a></div><div class="ttdeci">RetPN(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00590">SVFVariables.h:590</a></div></div>
|
|
110
110
|
<div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
|
|
111
111
|
<div class="ttc" id="classSVF_1_1GepValVar_html_a0aab756122dcce24faf556f0b7057dc1"><div class="ttname"><a href="classSVF_1_1GepValVar.html#a0aab756122dcce24faf556f0b7057dc1">SVF::GepValVar::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00397">SVFVariables.h:397</a></div></div>
|
|
@@ -169,13 +169,13 @@ $(function() {
|
|
|
169
169
|
<div class="ttc" id="classSVF_1_1SVFVar_html_a1ace69053c2c4436fd78d5624bd0086a"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a1ace69053c2c4436fd78d5624bd0086a">SVF::SVFVar::hasValue</a></div><div class="ttdeci">bool hasValue() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00111">SVFVariables.h:111</a></div></div>
|
|
170
170
|
<div class="ttc" id="classSVF_1_1DummyValVar_html_a3fbbb34ccb50e65d6d7aabe7e84e548f"><div class="ttname"><a href="classSVF_1_1DummyValVar.html#a3fbbb34ccb50e65d6d7aabe7e84e548f">SVF::DummyValVar::classof</a></div><div class="ttdeci">static bool classof(const ValVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00667">SVFVariables.h:667</a></div></div>
|
|
171
171
|
<div class="ttc" id="classSVF_1_1CloneFIObjVar_html_a96a659f0a876b417ebdf6057db65c870"><div class="ttname"><a href="classSVF_1_1CloneFIObjVar.html#a96a659f0a876b417ebdf6057db65c870">SVF::CloneFIObjVar::classof</a></div><div class="ttdeci">static bool classof(const CloneFIObjVar *)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00817">SVFVariables.h:817</a></div></div>
|
|
172
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
172
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
|
|
173
173
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a3f20339b5295e11beb0f9adb95c7aa5b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a3f20339b5295e11beb0f9adb95c7aa5b">SVF::GenericNode::GNodeK</a></div><div class="ttdeci">s64_t GNodeK</div><div class="ttdoc">Edge kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00139">GenericGraph.h:139</a></div></div>
|
|
174
174
|
<div class="ttc" id="classSVF_1_1ValVar_html_aeaccfd3bf5f968ad12d7e1a2426e5faa"><div class="ttname"><a href="classSVF_1_1ValVar.html#aeaccfd3bf5f968ad12d7e1a2426e5faa">SVF::ValVar::getValueName</a></div><div class="ttdeci">const std::string getValueName() const</div><div class="ttdoc">Return name of a LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00294">SVFVariables.h:294</a></div></div>
|
|
175
175
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a93d217b0c9fd8008a2989ca2b4f3fbfb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a93d217b0c9fd8008a2989ca2b4f3fbfb">SVF::GenericNode::addIncomingEdge</a></div><div class="ttdeci">bool addIncomingEdge(EdgeType *inEdge)</div><div class="ttdoc">Add incoming and outgoing edges. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00279">GenericGraph.h:279</a></div></div>
|
|
176
176
|
<div class="ttc" id="classSVF_1_1GepValVar_html_a0e5084d3fc54a70ace07075f846395ef"><div class="ttname"><a href="classSVF_1_1GepValVar.html#a0e5084d3fc54a70ace07075f846395ef">SVF::GepValVar::getConstantFieldIdx</a></div><div class="ttdeci">s32_t getConstantFieldIdx() const</div><div class="ttdoc">offset of the base value variable </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00410">SVFVariables.h:410</a></div></div>
|
|
177
177
|
<div class="ttc" id="classSVF_1_1FIObjVar_html_a73cd80e57f81d34b6295e110e3d43acc"><div class="ttname"><a href="classSVF_1_1FIObjVar.html#a73cd80e57f81d34b6295e110e3d43acc">SVF::FIObjVar::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGNodeTy *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00538">SVFVariables.h:538</a></div></div>
|
|
178
|
-
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87ee08e81de307eb9c02889b6ed98dd5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">SVF::SymbolTableInfo::getFlatternedElemType</a></div><div class="ttdeci">const Type * getFlatternedElemType(const Type *baseType, u32_t flatten_idx)</div><div class="ttdoc">Return the type of a flattened element given a flattened index. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
178
|
+
<div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a87ee08e81de307eb9c02889b6ed98dd5"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a87ee08e81de307eb9c02889b6ed98dd5">SVF::SymbolTableInfo::getFlatternedElemType</a></div><div class="ttdeci">const Type * getFlatternedElemType(const Type *baseType, u32_t flatten_idx)</div><div class="ttdoc">Return the type of a flattened element given a flattened index. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00406">SymbolTableInfo.cpp:406</a></div></div>
|
|
179
179
|
<div class="ttc" id="classSVF_1_1ValVar_html_a71e5f4eaf74f852d3354ac6b0b65f39c"><div class="ttname"><a href="classSVF_1_1ValVar.html#a71e5f4eaf74f852d3354ac6b0b65f39c">SVF::ValVar::classof</a></div><div class="ttdeci">static bool classof(const SVFVar *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00270">SVFVariables.h:270</a></div></div>
|
|
180
180
|
<div class="ttc" id="classSVF_1_1VarArgPN_html_ad6ebe474373838bc6c00e8baaa3f7137"><div class="ttname"><a href="classSVF_1_1VarArgPN.html#ad6ebe474373838bc6c00e8baaa3f7137">SVF::VarArgPN::VarArgPN</a></div><div class="ttdeci">VarArgPN(const SVFFunction *val, NodeID i)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00633">SVFVariables.h:633</a></div></div>
|
|
181
181
|
<div class="ttc" id="classSVF_1_1DummyObjVar_html_a3dff74bbf50b6a901239d3fd31e0f36c"><div class="ttname"><a href="classSVF_1_1DummyObjVar.html#a3dff74bbf50b6a901239d3fd31e0f36c">SVF::DummyObjVar::DummyObjVar</a></div><div class="ttdeci">DummyObjVar(NodeID i, const MemObj *m, PNODEK ty=DummyObjNode)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00724">SVFVariables.h:724</a></div></div>
|
|
@@ -124,11 +124,11 @@ $(function() {
|
|
|
124
124
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_ae6ea391ac44dffeb6899bb44323c5361"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ae6ea391ac44dffeb6899bb44323c5361">SVF::PointerAnalysis::isHeapMemObj</a></div><div class="ttdeci">bool isHeapMemObj(NodeID id) const</div><div class="ttdoc">Whether this object is heap or array. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00317">PointerAnalysis.h:317</a></div></div>
|
|
125
125
|
<div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
|
|
126
126
|
<div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList< NodeID ></a></div></div>
|
|
127
|
-
<div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#
|
|
127
|
+
<div class="ttc" id="classSVF_1_1MemObj_html_a41d85883d44ad77832b020455951c6fc"><div class="ttname"><a href="classSVF_1_1MemObj.html#a41d85883d44ad77832b020455951c6fc">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00665">SymbolTableInfo.cpp:665</a></div></div>
|
|
128
128
|
<div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_ad8f4f63d2071be4eb5f6fb2fdf29a10a"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#ad8f4f63d2071be4eb5f6fb2fdf29a10a">SVF::SaberSVFGBuilder::rmDerefDirSVFGEdges</a></div><div class="ttdeci">void rmDerefDirSVFGEdges(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8cpp_source.html#l00146">SaberSVFGBuilder.cpp:146</a></div></div>
|
|
129
129
|
<div class="ttc" id="SaberCheckerAPI_8h_html"><div class="ttname"><a href="SaberCheckerAPI_8h.html">SaberCheckerAPI.h</a></div></div>
|
|
130
130
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
|
|
131
|
-
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a108380f6f0b67654bb7c7676686096c8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">SVF::PointerAnalysis::isLocalVarInRecursiveFun</a></div><div class="ttdeci">bool isLocalVarInRecursiveFun(NodeID id) const</div><div class="ttdoc">Whether a local variable is in function recursions. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#
|
|
131
|
+
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a108380f6f0b67654bb7c7676686096c8"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a108380f6f0b67654bb7c7676686096c8">SVF::PointerAnalysis::isLocalVarInRecursiveFun</a></div><div class="ttdeci">bool isLocalVarInRecursiveFun(NodeID id) const</div><div class="ttdoc">Whether a local variable is in function recursions. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00162">PointerAnalysis.cpp:162</a></div></div>
|
|
132
132
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00169">GenericGraph.h:169</a></div></div>
|
|
133
133
|
<div class="ttc" id="classSVF_1_1StmtVFGNode_html"><div class="ttname"><a href="classSVF_1_1StmtVFGNode.html">SVF::StmtVFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00116">VFGNode.h:116</a></div></div>
|
|
134
134
|
<div class="ttc" id="classSVF_1_1MemSSA_html_ad40617a1907b9a6b8cc24888ce54a0ac"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad40617a1907b9a6b8cc24888ce54a0ac">SVF::MemSSA::getPTA</a></div><div class="ttdeci">BVDataPTAImpl * getPTA() const</div><div class="ttdoc">Return PTA. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00315">MemSSA.h:315</a></div></div>
|
|
@@ -69,7 +69,7 @@ $(function() {
|
|
|
69
69
|
<a href="SrcSnkDDA_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===- SrcSnkDDA.cpp -- Source-sink analyzer --------------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * SrcSnkDDA.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Apr 1, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="SrcSnkDDA_8h.html">SABER/SrcSnkDDA.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="SVFGStat_8h.html">Graphs/SVFGStat.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="SVFIRBuilder_8h.html">SVF-FE/SVFIRBuilder.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="preprocessor">#include "<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>"</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a8883b9a42106ed8c55835d2ba9a579cd"> 42</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8883b9a42106ed8c55835d2ba9a579cd">SrcSnkDDA::initialize</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(module);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* ander = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(pag);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a5fb7733fd66ecad30eea8ced3839e590">Options::SABERFULLSVFG</a>)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  svfg = memSSA.buildFullSVFG(ander);</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  svfg = memSSA.buildPTROnlySVFG(ander);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  setGraph(memSSA.getSVFG());</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  ptaCallGraph = ander-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">//AndersenWaveDiff::releaseAndersenWaveDiff();</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment"></span> getPathAllocator()->allocate(getPAG()->getModule());</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  initSrcs();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  initSnks();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc"> 62</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">SrcSnkDDA::analyze</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  initialize(module);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <a class="code" href="classSVF_1_1ContextCond.html#a92e89bbae0f31bb9eb971ab3edcc8071">ContextCond::setMaxCxtLen</a>(<a class="code" href="classSVF_1_1Options.html#a21cbaab292e9f5bd39109f774fcc88d4">Options::CxtLimit</a>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> iter = sourcesBegin(), eiter = sourcesEnd();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  iter != eiter; ++iter)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  {</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  setCurSlice(*iter);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a2c64190a065f342897573a3ef4973adb">DGENERAL</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"Analysing slice:"</span> << (*iter)->getId() << <span class="stringliteral">")\n"</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> item((*iter)->getId(),cxt);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  forwardTraverse(item);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">if</span> (getCurSlice()->isReachGlobal())</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"Forward analysis reaches globals for slice:"</span> << (*iter)->getId() << <span class="stringliteral">")\n"</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"Forward process for slice:"</span> << (*iter)->getId() << <span class="stringliteral">" (size = "</span> << getCurSlice()->getForwardSliceSize() << <span class="stringliteral">")\n"</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> sit = getCurSlice()->sinksBegin(), esit =</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  getCurSlice()->sinksEnd(); sit != esit; ++sit)</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> item((*sit)->getId(),cxt);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  backwardTraverse(item);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  }</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"Backward process for slice:"</span> << (*iter)->getId() << <span class="stringliteral">" (size = "</span> << getCurSlice()->getBackwardSliceSize() << <span class="stringliteral">")\n"</span>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ace1f2368a0a466f98c9e53def47db3ab">Options::DumpSlice</a>)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  annotateSlice(_curSlice);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>(_curSlice->AllPathReachableSolve())</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  _curSlice->setAllReachable();</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"Guard computation for slice:"</span> << (*iter)->getId() << <span class="stringliteral">")\n"</span>);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  reportBug(getCurSlice());</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  finalize();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> }</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c"> 119</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">SrcSnkDDA::isInAWrapper</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <a class="code" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">CallSiteSet</a>& csIdSet)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">bool</span> reachFunExit = <span class="keyword">false</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">WorkList</a> worklist;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(src);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6">SVFGNodeBS</a> visited;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> step = 0;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span>(visited.test(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())==0)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  visited.set(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// reaching maximum steps when traversing on SVFG to identify a memory allocation wrapper</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (step++ > <a class="code" href="classSVF_1_1Options.html#a0b82f16ee0c7e6566a6ae20662525e84">Options::MaxStepInWrapper</a>)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVFGNode::const_iterator</a> it = node-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit =</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  node-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit; ++it)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = (*it);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="comment">//assert(edge->isDirectVFGEdge() && "the edge should always be direct VF");</span></div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="comment">// if this is a call edge</span></div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a92e3da59f7f5a693945b9a93f169da04">isCallDirectVFGEdge</a>())</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  {</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// if this is a return edge</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a49cbf2a714c9b965b19452d266cd8bdf">isRetDirectVFGEdge</a>())</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  reachFunExit = <span class="keyword">true</span>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  csIdSet.insert(getSVFG()->getCallSite(SVFUtil::cast<RetDirSVFGEdge>(edge)->getCallSiteId()));</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// (1) an intra direct edge, we will keep tracking</span></div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// (2) an intra indirect edge, we only track if the succ SVFGNode is a load, which means we only track one level store-load pair .</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// (3) do not track for all other interprocedural edges.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* succ = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span>(SVFUtil::isa<IntraDirSVFGEdge>(edge))</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">if</span> (SVFUtil::isa<CopySVFGNode>(succ) || SVFUtil::isa<GepSVFGNode>(succ)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  || SVFUtil::isa<PHISVFGNode>(succ) || SVFUtil::isa<FormalRetSVFGNode>(succ)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  || SVFUtil::isa<ActualRetSVFGNode>(succ) || SVFUtil::isa<StoreSVFGNode>(succ))</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(succ);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<IntraIndSVFGEdge>(edge))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span>(SVFUtil::isa<LoadSVFGNode>(succ))</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(succ);</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="keywordflow">if</span>(reachFunExit)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span> }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span> </div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad2203ca5bd08c6fbebd31a8a010edebb"> 193</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad2203ca5bd08c6fbebd31a8a010edebb">SrcSnkDDA::FWProcessOutgoingEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a>& item, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"\n##processing source: "</span> << getCurSlice()->getSource()->getId() <<<span class="stringliteral">" forward propagate from ("</span> << edge-><a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>());</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// for indirect SVFGEdge, the propagation should follow the def-use chains</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// points-to on the edge indicate whether the object of source node can be propagated</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* dstNode = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> newItem(dstNode->getId(),item.<a class="code" href="classSVF_1_1CxtDPItem.html#a1dea25cd5d72c52cef1cff23b832a196">getContexts</a>());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span>(isGlobalSVFGNode(dstNode) || getCurSlice()->isReachGlobal())</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  {</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  getCurSlice()->setReachGlobal();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// push context for calling</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>())</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = 0;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallDirSVFGEdge.html">CallDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast<CallDirSVFGEdge>(edge))</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  csId = callEdge->getCallSiteId();</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  csId = SVFUtil::cast<CallIndSVFGEdge>(edge)->getCallSiteId();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  newItem.pushContext(csId);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" push cxt ["</span> << csId << <span class="stringliteral">"] "</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  }</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">// match context for return</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> csId = 0;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetDirSVFGEdge.html">RetDirSVFGEdge</a>* callEdge = SVFUtil::dyn_cast<RetDirSVFGEdge>(edge))</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  csId = callEdge->getCallSiteId();</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  csId = SVFUtil::cast<RetIndSVFGEdge>(edge)->getCallSiteId();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span> (newItem.matchContext(csId) == <span class="keyword">false</span>)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"-|-\n"</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" pop cxt ["</span> << csId << <span class="stringliteral">"] "</span>);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span>(forwardVisited(dstNode,newItem))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" node "</span><< dstNode->getId() <<<span class="stringliteral">" has been visited\n"</span>);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  addForwardVisited(dstNode, newItem);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span>(pushIntoWorklist(newItem))</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">" --> "</span> << edge-><a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() << <span class="stringliteral">", cxt size: "</span> << newItem.getContexts().cxtSize() <<<span class="stringliteral">")\n"</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a1ea0d4c4e53ff6986dd50d624ba2bff5"> 258</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1ea0d4c4e53ff6986dd50d624ba2bff5">SrcSnkDDA::BWProcessIncomingEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a>&, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a817abc424f7cfcdec5954c7807970f36">DSaber</a>,<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"backward propagate from ("</span> << edge-><a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() << <span class="stringliteral">" --> "</span> << edge-><a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() << <span class="stringliteral">")\n"</span>);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* srcNode = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>();</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordflow">if</span>(backwardVisited(srcNode))</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  addBackwardVisited(srcNode);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <a class="code" href="classSVF_1_1ContextCond.html">ContextCond</a> cxt;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="classSVF_1_1CxtDPItem.html">DPIm</a> newItem(srcNode->getId(), cxt);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  pushIntoWorklist(newItem);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd"> 273</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">SrcSnkDDA::setCurSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">if</span>(_curSlice!=<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keyword">delete</span> _curSlice;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  _curSlice = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  clearVisitedMap();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  _curSlice = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>(src,getPathAllocator(), getSVFG());</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd"> 285</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">SrcSnkDDA::annotateSlice</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  getSVFG()->getStat()->addToSources(slice-><a class="code" href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">getSource</a>());</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-><a class="code" href="classSVF_1_1ProgSlice.html#adf620c97daed49735d21b485c448b4a2">sinksBegin</a>(), eit = slice-><a class="code" href="classSVF_1_1ProgSlice.html#a27636f096ec825c4d5cb1dca608afb31">sinksEnd</a>(); it!=eit; ++it )</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  getSVFG()->getStat()->addToSinks(*it);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-><a class="code" href="classSVF_1_1ProgSlice.html#ae482fcb138aaf345586a39daa34ff895">forwardSliceBegin</a>(), eit = slice-><a class="code" href="classSVF_1_1ProgSlice.html#add10d8fd041ac7e6eb611df8a6b1384b">forwardSliceEnd</a>(); it!=eit; ++it )</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  getSVFG()->getStat()->addToForwardSlice(*it);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a> it = slice-><a class="code" href="classSVF_1_1ProgSlice.html#ab5810f8a7a994f0637c54b94d0367a89">backwardSliceBegin</a>(), eit = slice-><a class="code" href="classSVF_1_1ProgSlice.html#aed4bedc716a3e252e44a6f28e677d61c">backwardSliceEnd</a>(); it!=eit; ++it )</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  getSVFG()->getStat()->addToBackwardSlice(*it);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> }</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> </div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba"> 296</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">SrcSnkDDA::dumpSlices</a>()</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span> {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ace1f2368a0a466f98c9e53def47db3ab">Options::DumpSlice</a>)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFG.html">SVFG</a>*<span class="keyword">></span>(getSVFG())->dump(<span class="stringliteral">"Slice"</span>,<span class="keyword">true</span>);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span> }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ae3d665ff1e796348131e797eb0283bfb"> 303</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ae3d665ff1e796348131e797eb0283bfb">SrcSnkDDA::printBDDStat</a>()</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span> {</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"BDD Mem usage: "</span> << getPathAllocator()->getMemUsage() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"BDD Number: "</span> << getPathAllocator()->getCondNum() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> }</div><div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1ProgSlice_html_ac1dc48ea64a89ce37394a22e609a0cd0"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac1dc48ea64a89ce37394a22e609a0cd0">SVF::ProgSlice::getSource</a></div><div class="ttdeci">const SVFGNode * getSource() const</div><div class="ttdoc">root and sink operations </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00112">ProgSlice.h:112</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a8817604b20724703121e9466e5cdb4cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">SVF::SrcSnkDDA::annotateSlice</a></div><div class="ttdeci">void annotateSlice(ProgSlice *slice)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00285">SrcSnkDDA.cpp:285</a></div></div>
|
|
72
|
-
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa6d56f9580f76fd09d25ce6cf7541e98"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">SVF::SVFIRBuilder::build</a></div><div class="ttdeci">virtual SVFIR * build(SVFModule *svfModule)</div><div class="ttdoc">Start building SVFIR here. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#
|
|
72
|
+
<div class="ttc" id="classSVF_1_1SVFIRBuilder_html_aa6d56f9580f76fd09d25ce6cf7541e98"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">SVF::SVFIRBuilder::build</a></div><div class="ttdeci">virtual SVFIR * build(SVFModule *svfModule)</div><div class="ttdoc">Start building SVFIR here. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8cpp_source.html#l00050">SVFIRBuilder.cpp:50</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00077">GenericGraph.h:77</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1CxtDPItem_html_a1dea25cd5d72c52cef1cff23b832a196"><div class="ttname"><a href="classSVF_1_1CxtDPItem.html#a1dea25cd5d72c52cef1cff23b832a196">SVF::CxtDPItem::getContexts</a></div><div class="ttdeci">const ContextCond & getContexts() const</div><div class="ttdoc">Get context. </div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00476">DPItem.h:476</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
|