svf-tools 1.0.475 → 1.0.476
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/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +4 -4
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
- 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/CxtStmt_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -6
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MHP_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +71 -53
- package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +54 -53
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +32 -32
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +36 -36
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymState_8h.html +97 -0
- package/SVF-doxygen/html/html/SymState_8h_source.html +95 -0
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -2
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +56 -57
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +35 -33
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymState-members.html +92 -0
- package/SVF-doxygen/html/html/classSVF_1_1SymState.html +472 -0
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classes.html +101 -100
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
- package/SVF-doxygen/html/html/files.html +4 -3
- package/SVF-doxygen/html/html/functions_0x7e.html +3 -0
- package/SVF-doxygen/html/html/functions_a.html +12 -6
- package/SVF-doxygen/html/html/functions_e.html +8 -5
- package/SVF-doxygen/html/html/functions_f.html +4 -6
- package/SVF-doxygen/html/html/functions_func_0x7e.html +3 -0
- package/SVF-doxygen/html/html/functions_func_g.html +14 -8
- package/SVF-doxygen/html/html/functions_func_o.html +9 -4
- package/SVF-doxygen/html/html/functions_func_s.html +9 -6
- package/SVF-doxygen/html/html/functions_g.html +20 -14
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_o.html +15 -14
- package/SVF-doxygen/html/html/functions_p.html +13 -9
- package/SVF-doxygen/html/html/functions_r.html +3 -5
- package/SVF-doxygen/html/html/functions_s.html +12 -9
- package/SVF-doxygen/html/html/functions_t.html +10 -8
- package/SVF-doxygen/html/html/functions_type.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_a.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +6 -10
- package/SVF-doxygen/html/html/globals_c.html +99 -96
- package/SVF-doxygen/html/html/globals_s.html +3 -1
- package/SVF-doxygen/html/html/globals_type.html +3 -0
- package/SVF-doxygen/html/html/hierarchy.html +155 -153
- package/SVF-doxygen/html/html/namespaceSVF.html +21 -37
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +12 -12
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +23 -23
- package/SVF-doxygen/html/html/namespacemembers_c.html +0 -3
- package/SVF-doxygen/html/html/namespacemembers_type.html +0 -3
- package/SVF-doxygen/html/html/search/all_1.js +2 -0
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_12.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +10 -8
- package/SVF-doxygen/html/html/search/all_14.js +4 -4
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1b.js +1 -0
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +2 -0
- package/SVF-doxygen/html/html/search/all_8.js +1 -0
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_b.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +9 -9
- package/SVF-doxygen/html/html/search/classes_7.js +1 -0
- package/SVF-doxygen/html/html/search/classes_f.js +2 -1
- package/SVF-doxygen/html/html/search/files_d.js +2 -1
- package/SVF-doxygen/html/html/search/functions_11.js +2 -1
- package/SVF-doxygen/html/html/search/functions_17.js +1 -0
- package/SVF-doxygen/html/html/search/functions_6.js +2 -0
- package/SVF-doxygen/html/html/search/functions_e.js +5 -5
- package/SVF-doxygen/html/html/search/functions_f.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_0.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +1 -0
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -0
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +129 -0
- package/include/SVF-FE/BasicTypes.h +1 -0
- package/include/Util/BasicTypes.h +0 -1
- package/include/Util/SymState.h +118 -0
- package/package.json +1 -1
|
@@ -1589,7 +1589,7 @@ Private Attributes</h2></td></tr>
|
|
|
1589
1589
|
<div class="ttc" id="SVFBasicTypes_8h_html_a385e9d80a013723304b329454d32e8b1"><div class="ttname"><a href="SVFBasicTypes_8h.html#a385e9d80a013723304b329454d32e8b1">DMSSA</a></div><div class="ttdeci">#define DMSSA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00170">SVFBasicTypes.h:170</a></div></div>
|
|
1590
1590
|
<div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00252">SVFBasicTypes.h:252</a></div></div>
|
|
1591
1591
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
1592
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1592
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
|
|
1593
1593
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a213ebe634bbdbe33460ccd941c1dc6a5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">SVF::MemSSA::mrGen</a></div><div class="ttdeci">MRGenerator * mrGen</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00116">MemSSA.h:116</a></div></div>
|
|
1594
1594
|
<div class="ttc" id="classSVF_1_1MemSSA_html_ad8011273feaf046bf7f3a3f3b904a91d"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ad8011273feaf046bf7f3a3f3b904a91d">SVF::MemSSA::AddCallSiteCHI</a></div><div class="ttdeci">void AddCallSiteCHI(const CallICFGNode *cs, const MRSet &mrSet)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00198">MemSSA.h:198</a></div></div>
|
|
1595
1595
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_acd4694a030755b7491a6ef55d9ba2682"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acd4694a030755b7491a6ef55d9ba2682">SVF::MRGenerator::getCallSiteRefMRSet</a></div><div class="ttdeci">MRSet & getCallSiteRefMRSet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00459">MemRegion.h:459</a></div></div>
|
|
@@ -1673,7 +1673,7 @@ Private Attributes</h2></td></tr>
|
|
|
1673
1673
|
<div class="fragment"><div class="line"><a name="l00597"></a><span class="lineno"> 597</span> {</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#a709371b13dcf500277f8bc275bdb23c7">SVFModule::iterator</a> fit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efit = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#ad8b71cebf46deaf60e2cd4f6d6bb9433">getModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>();</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  fit != efit; ++fit)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  {</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *fit;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=<span class="stringliteral">""</span> && <a class="code" href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">Options::MSSAFun</a>!=fun-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>())</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span> </div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  Out << <span class="stringliteral">"==========FUNCTION: "</span> << fun-><a class="code" href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">getName</a>() << <span class="stringliteral">"==========\n"</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="comment">// dump function entry chi nodes</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#aec75259d035e3b5589e6fcbbcdfe4b2c">hasFuncEntryChi</a>(fun))</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  {</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a> & entry_chis = <a class="code" href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">getFuncEntryChiSet</a>(fun);</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="keywordflow">for</span> (CHISet::iterator chi_it = entry_chis.begin(); chi_it != entry_chis.end(); chi_it++)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  (*chi_it)->dump();</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span> </div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <span class="keywordflow">for</span> (Function::iterator bit = fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->begin(), ebit = fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>()->end();</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  bit != ebit; ++bit)</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  {</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>& bb = *bit;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keywordflow">if</span> (bb.hasName())</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  Out << bb.getName().str() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <a class="code" href="classSVF_1_1MemSSA.html#a8a5d3597f3dba9744e170cc8c32bf25f">PHISet</a>& phiSet = <a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&bb);</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">for</span>(PHISet::iterator pi = phiSet.begin(), epi = phiSet.end(); pi !=epi; ++pi)</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  (*pi)->dump();</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span> </div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordtype">bool</span> last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keywordflow">for</span> (BasicBlock::iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  it != eit; ++it)</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  {</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>& inst = *it;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keywordtype">bool</span> isAppCall = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(&inst) && !<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(&inst);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">if</span> (isAppCall || <a class="code" href="namespaceSVF_1_1SVFUtil.html#a93ac673b885633849fa484938405ca75">isHeapAllocExtCall</a>(&inst))</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(&inst);</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#af5e356e82c3f93b65bd89908e0f465dc">hasMU</a>(cs))</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">if</span> (!last_is_chi)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  <span class="keywordflow">for</span> (MUSet::iterator mit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).begin(), emit = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs).end();</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  mit != emit; ++mit)</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  {</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  (*mit)-><a class="code" href="classSVF_1_1ICFGNode.html#a3c193da05d6dee7313a141ae3ab43e97">dump</a>();</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  }</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span> </div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  Out << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(&inst) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> </div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#abfb338ce36ad46a9654d50dd6e2b07f1">hasCHI</a>(cs))</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  <span class="keywordflow">for</span> (CHISet::iterator cit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).begin(), ecit = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs).end();</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  cit != ecit; ++cit)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  {</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  (*cit)->dump();</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  }</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  {</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordtype">bool</span> dump_preamble = <span class="keyword">false</span>;</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>& pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(&inst);</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  {</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast<LoadStmt>(edge))</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  {</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a>& muSet = <a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(load);</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">for</span>(MUSet::iterator it = muSet.begin(), eit = muSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  {</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">if</span> (!dump_preamble && !last_is_chi)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  dump_preamble = <span class="keyword">true</span>;</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  (*it)->dump();</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> </div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  Out << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(&inst) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="keywordtype">bool</span> has_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  {</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* edge = *bit;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast<StoreStmt>(edge))</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  {</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <a class="code" href="classSVF_1_1MemSSA.html#af9cf084e3070456d8cca491e1391b0c4">CHISet</a>& chiSet = <a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store);</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="keywordflow">for</span>(CHISet::iterator it = chiSet.begin(), eit = chiSet.end(); it!=eit; ++it)</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  {</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  has_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  (*it)->dump();</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  }</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  }</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  }</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keywordflow">if</span> (has_chi)</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  {</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  Out << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  last_is_chi = <span class="keyword">true</span>;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  last_is_chi = <span class="keyword">false</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  }</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> </div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="comment">// dump return mu nodes</span></div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">hasReturnMu</a>(fun))</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  {</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <a class="code" href="classSVF_1_1MemSSA.html#a81bba824495a882b49e687683954b112">MUSet</a> & return_mus = <a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun);</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">for</span> (MUSet::iterator mu_it = return_mus.begin(); mu_it != return_mus.end(); mu_it++)</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  {</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  (*mu_it)->dump();</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  }</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  }</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  }</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span> }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet & getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
|
|
1674
1674
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
1675
1675
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
|
|
1676
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1676
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
1677
1677
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a964f3fe39ece9a7b8b2033428b75a274"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">SVF::MemSSA::getPHISet</a></div><div class="ttdeci">PHISet & getPHISet(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00404">MemSSA.h:404</a></div></div>
|
|
1678
1678
|
<div class="ttc" id="classSVF_1_1Options_html_a4ac0e6b77fc9ccc18b269268b3cd046d"><div class="ttname"><a href="classSVF_1_1Options.html#a4ac0e6b77fc9ccc18b269268b3cd046d">SVF::Options::MSSAFun</a></div><div class="ttdeci">static const llvm::cl::opt< std ::string > MSSAFun</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00152">Options.h:152</a></div></div>
|
|
1679
1679
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_acc78a116ca0be01a359d1313b2ae603c"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">SVF::MRGenerator::getPAGEdgesFromInst</a></div><div class="ttdeci">SVFStmtList & getPAGEdgesFromInst(const Instruction *inst)</div><div class="ttdoc">Given an instruction, get all its the PAGEdge (statement) in sequence. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00161">MemRegion.cpp:161</a></div></div>
|
|
@@ -1693,7 +1693,7 @@ Private Attributes</h2></td></tr>
|
|
|
1693
1693
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a3400d9a921672b3872656acecc3eac9f"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a3400d9a921672b3872656acecc3eac9f">SVF::MemSSA::hasReturnMu</a></div><div class="ttdeci">bool hasReturnMu(const SVFFunction *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00371">MemSSA.h:371</a></div></div>
|
|
1694
1694
|
<div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00252">SVFBasicTypes.h:252</a></div></div>
|
|
1695
1695
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
1696
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
1696
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
|
|
1697
1697
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a213ebe634bbdbe33460ccd941c1dc6a5"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">SVF::MemSSA::mrGen</a></div><div class="ttdeci">MRGenerator * mrGen</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00116">MemSSA.h:116</a></div></div>
|
|
1698
1698
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a10743fe9c116ee624387c0473815b800"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a10743fe9c116ee624387c0473815b800">SVF::MemSSA::getFuncEntryChiSet</a></div><div class="ttdeci">CHISet & getFuncEntryChiSet(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00376">MemSSA.h:376</a></div></div>
|
|
1699
1699
|
<div class="ttc" id="classSVF_1_1MemSSA_html_af8c38a7ff8da4206f19c038024606d93"><div class="ttname"><a href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">SVF::MemSSA::getReturnMuSet</a></div><div class="ttdeci">MUSet & getReturnMuSet(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00380">MemSSA.h:380</a></div></div>
|
|
@@ -2700,7 +2700,7 @@ Private Attributes</h2></td></tr>
|
|
|
2700
2700
|
<div class="ttc" id="classSVF_1_1MemSSA_html_acf840b71b67cabe831f01f2d358f27fa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#acf840b71b67cabe831f01f2d358f27fa">SVF::MemSSA::usedRegs</a></div><div class="ttdeci">MRSet usedRegs</div><div class="ttdoc">The following three set are used for prune SSA phi insertion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00146">MemSSA.h:146</a></div></div>
|
|
2701
2701
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
2702
2702
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a4d4f7039c2972e671dc15b8c75abad14"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a4d4f7039c2972e671dc15b8c75abad14">SVF::MemSSA::BBToMRSetMap</a></div><div class="ttdeci">Map< const BasicBlock *, MRSet > BBToMRSetMap</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00088">MemSSA.h:88</a></div></div>
|
|
2703
|
-
<div class="ttc" id="namespaceSVF_html_ab44d20f806be99699895260b14a942d7"><div class="ttname"><a href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">SVF::DominanceFrontier</a></div><div class="ttdeci">llvm::DominanceFrontier DominanceFrontier</div><div class="ttdoc">LLVM Dominators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
2703
|
+
<div class="ttc" id="namespaceSVF_html_ab44d20f806be99699895260b14a942d7"><div class="ttname"><a href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">SVF::DominanceFrontier</a></div><div class="ttdeci">llvm::DominanceFrontier DominanceFrontier</div><div class="ttdoc">LLVM Dominators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
|
|
2704
2704
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00068">SVFUtil.cpp:68</a></div></div>
|
|
2705
2705
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a66e693af7b37e4e58b4834898d6a34fa"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a66e693af7b37e4e58b4834898d6a34fa">SVF::MemSSA::BBList</a></div><div class="ttdeci">std::vector< const BasicBlock * > BBList</div><div class="ttdoc">For phi insertion. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00087">MemSSA.h:87</a></div></div>
|
|
2706
2706
|
<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>
|
|
@@ -3025,7 +3025,7 @@ Private Attributes</h2></td></tr>
|
|
|
3025
3025
|
<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>
|
|
3026
3026
|
<div class="ttc" id="SVFBasicTypes_8h_html_a385e9d80a013723304b329454d32e8b1"><div class="ttname"><a href="SVFBasicTypes_8h.html#a385e9d80a013723304b329454d32e8b1">DMSSA</a></div><div class="ttdeci">#define DMSSA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00170">SVFBasicTypes.h:170</a></div></div>
|
|
3027
3027
|
<div class="ttc" id="classSVF_1_1SVFValue_html_a2409c01221b9a6632655cee43d1b35e4"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2409c01221b9a6632655cee43d1b35e4">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00252">SVFBasicTypes.h:252</a></div></div>
|
|
3028
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3028
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
|
|
3029
3029
|
<div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
|
|
3030
3030
|
</div><!-- fragment -->
|
|
3031
3031
|
</div>
|
|
@@ -3061,13 +3061,13 @@ Private Attributes</h2></td></tr>
|
|
|
3061
3061
|
<div class="fragment"><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> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">pta</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">// record which mem region needs to pop stack</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">MRVector</a> memRegs;</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>  <span class="comment">// rename phi result op</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// for each r = phi (...)</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// rewrite r as new name</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(&bb))</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <a class="code" href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">RenamePhiRes</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(&bb),memRegs);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="comment">// process mu and chi</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// for each mu(r)</span></div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">// rewrite r with top mrver of stack(r)</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="comment">// for each r = chi(r')</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="comment">// rewrite r' with top mrver of stack(r)</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="comment">// rewrite r with new name</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb.begin(), eit = bb.end();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  it != eit; ++it)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  {</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*it;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">hasSVFStmtList</a>(inst))</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="classSVF_1_1MemSSA.html#a445d282890dbd2fb51e903255af1cc3e">SVFStmtList</a>& pagEdgeList = <a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">getPAGEdgesFromInst</a>(inst);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keywordflow">for</span>(SVFStmtList::const_iterator bit = pagEdgeList.begin(), ebit= pagEdgeList.end();</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  bit!=ebit; ++bit)</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">PAGEdge</a>* inst = *bit;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast<LoadStmt>(inst))</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(load));</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> </div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* store = SVFUtil::dyn_cast<StoreStmt>(inst))</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(store),memRegs);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  }</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  }</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(inst))</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs = pag-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>()-><a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#af06e8ac43efdedb97a2008cd93fc32d6">hasRefMRSet</a>(cs))</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af4d11a0c7da0ddd7dff8d75a00279847">getMUSet</a>(cs));</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1MemSSA.html#a213ebe634bbdbe33460ccd941c1dc6a5">mrGen</a>-><a class="code" href="classSVF_1_1MRGenerator.html#a7d66a341805af7ec4e4893e5a7e0bc2d">hasModMRSet</a>(cs))</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">RenameChiSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">getCHISet</a>(cs),memRegs);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a832b1306f23e0f3db8cf5c0a35dc4561">isReturn</a>(inst))</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <a class="code" href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">RenameMuSet</a>(<a class="code" href="classSVF_1_1MemSSA.html#af8c38a7ff8da4206f19c038024606d93">getReturnMuSet</a>(fun));</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  }</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="comment">// fill phi operands of succ basic blocks</span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(&bb), esit = succ_end(&bb);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  sit != esit; ++sit)</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ = *sit;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pos = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a87277ee77eceaf80922d54d46103c509">getBBPredecessorPos</a>(&bb, succ);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1MemSSA.html#a552bb17f0435e012b7393fb641c19298">hasPHISet</a>(succ))</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1MemSSA.html#a0ed34f7a27db045c624c5db61d53132b">RenamePhiOps</a>(<a class="code" href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">getPHISet</a>(succ),pos,memRegs);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="comment">// for succ basic block in dominator tree</span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(bb.getParent());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a>* <a class="code" href="classSVF_1_1MemSSA.html#a52b1598f44fe6a6e30095f596bf85cb0">dt</a> = <a class="code" href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">getDT</a>(*fun);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt->getNode(const_cast<BasicBlock*>(&bb)))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode->begin(), DE = dtNode->end();</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  DI != DE; ++DI)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <a class="code" href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SSARenameBB</a>(*((*DI)->getBlock()));</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="comment">// for each r = chi(..), and r = phi(..)</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="comment">// pop ver stack(r)</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keywordflow">while</span> (!memRegs.empty())</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemRegion.html">MemRegion</a>* mr = memRegs.back();</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  memRegs.pop_back();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <a class="code" href="classSVF_1_1MemSSA.html#ae4c7b17d8da8278dca362af79f9f268d">mr2VerStackMap</a>[mr].pop_back();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  }</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span> }</div><div class="ttc" id="classSVF_1_1MemSSA_html_a2e656a50f8964fc3e99d1d436de64418"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2e656a50f8964fc3e99d1d436de64418">SVF::MemSSA::getCHISet</a></div><div class="ttdeci">CHISet & getCHISet(const StoreStmt *st)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00392">MemSSA.h:392</a></div></div>
|
|
3062
3062
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
3063
3063
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a9741a8d0540ba4c27cb667590d246197"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a9741a8d0540ba4c27cb667590d246197">SVF::MemSSA::getDT</a></div><div class="ttdeci">DominatorTree * getDT(const SVFFunction &)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00296">MemSSA.h:296</a></div></div>
|
|
3064
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3064
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
3065
3065
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a964f3fe39ece9a7b8b2033428b75a274"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a964f3fe39ece9a7b8b2033428b75a274">SVF::MemSSA::getPHISet</a></div><div class="ttdeci">PHISet & getPHISet(const BasicBlock *bb)</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00404">MemSSA.h:404</a></div></div>
|
|
3066
3066
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a87277ee77eceaf80922d54d46103c509"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a87277ee77eceaf80922d54d46103c509">SVF::LLVMUtil::getBBPredecessorPos</a></div><div class="ttdeci">u32_t getBBPredecessorPos(const BasicBlock *BB, const BasicBlock *Pred)</div><div class="ttdoc">Get basic block predecessor positin. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00374">LLVMUtil.cpp:374</a></div></div>
|
|
3067
3067
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_a7d66a341805af7ec4e4893e5a7e0bc2d"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a7d66a341805af7ec4e4893e5a7e0bc2d">SVF::MRGenerator::hasModMRSet</a></div><div class="ttdeci">bool hasModMRSet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00455">MemRegion.h:455</a></div></div>
|
|
3068
3068
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a630be375832b1477989af85dce6760f3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a630be375832b1477989af85dce6760f3">SVF::MemSSA::RenamePhiRes</a></div><div class="ttdeci">void RenamePhiRes(const PHISet &phiSet, MRVector &memRegs)</div><div class="ttdoc">Rename result (LHS) of phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00267">MemSSA.h:267</a></div></div>
|
|
3069
3069
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_acc78a116ca0be01a359d1313b2ae603c"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#acc78a116ca0be01a359d1313b2ae603c">SVF::MRGenerator::getPAGEdgesFromInst</a></div><div class="ttdeci">SVFStmtList & getPAGEdgesFromInst(const Instruction *inst)</div><div class="ttdoc">Given an instruction, get all its the PAGEdge (statement) in sequence. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00161">MemRegion.cpp:161</a></div></div>
|
|
3070
|
-
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3070
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
|
|
3071
3071
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
|
|
3072
3072
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a468e1481926df6865678b7232bb79bf3"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a468e1481926df6865678b7232bb79bf3">SVF::MemSSA::pta</a></div><div class="ttdeci">BVDataPTAImpl * pta</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00115">MemSSA.h:115</a></div></div>
|
|
3073
3073
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_a6f631290f3da7c308395eb6a9472d7a5"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#a6f631290f3da7c308395eb6a9472d7a5">SVF::MRGenerator::hasSVFStmtList</a></div><div class="ttdeci">bool hasSVFStmtList(const Instruction *inst)</div><div class="ttdoc">Whether this instruction has SVFIR Edge. </div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00152">MemRegion.cpp:152</a></div></div>
|
|
@@ -3075,13 +3075,13 @@ Private Attributes</h2></td></tr>
|
|
|
3075
3075
|
<div class="ttc" id="classSVF_1_1MRGenerator_html_af06e8ac43efdedb97a2008cd93fc32d6"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#af06e8ac43efdedb97a2008cd93fc32d6">SVF::MRGenerator::hasRefMRSet</a></div><div class="ttdeci">bool hasRefMRSet(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8h_source.html#l00451">MemRegion.h:451</a></div></div>
|
|
3076
3076
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a6066364112e665c33cbf2ec50ae1e3a8"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a6066364112e665c33cbf2ec50ae1e3a8">SVF::MemSSA::RenameChiSet</a></div><div class="ttdeci">void RenameChiSet(const CHISet &chiSet, MRVector &memRegs)</div><div class="ttdoc">Rename chi set. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00254">MemSSA.h:254</a></div></div>
|
|
3077
3077
|
<div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00240">ICFG.cpp:240</a></div></div>
|
|
3078
|
-
<div class="ttc" id="namespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3078
|
+
<div class="ttc" id="namespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
|
|
3079
3079
|
<div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
|
|
3080
3080
|
<div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00378">SVFStatements.h:378</a></div></div>
|
|
3081
3081
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00206">PointerAnalysis.h:206</a></div></div>
|
|
3082
3082
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a7c3fda6f082231350524c2d7c16f067e"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a7c3fda6f082231350524c2d7c16f067e">SVF::MemSSA::MRVector</a></div><div class="ttdeci">std::vector< const MemRegion * > MRVector</div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00070">MemSSA.h:70</a></div></div>
|
|
3083
3083
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a271c20725d49dd65b95c062938ffde4c"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a271c20725d49dd65b95c062938ffde4c">SVF::MemSSA::SSARenameBB</a></div><div class="ttdeci">virtual void SSARenameBB(const BasicBlock &bb)</div><div class="ttdoc">SSA rename for a basic block. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8cpp_source.html#l00280">MemSSA.cpp:280</a></div></div>
|
|
3084
|
-
<div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
3084
|
+
<div class="ttc" id="namespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
|
|
3085
3085
|
<div class="ttc" id="classSVF_1_1MemSSA_html_a2527b76b92dffa8f8513ebfdcc8d8133"><div class="ttname"><a href="classSVF_1_1MemSSA.html#a2527b76b92dffa8f8513ebfdcc8d8133">SVF::MemSSA::RenameMuSet</a></div><div class="ttdeci">void RenameMuSet(const MUSet &muSet)</div><div class="ttdoc">Rename mus, chis and phis. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00243">MemSSA.h:243</a></div></div>
|
|
3086
3086
|
<div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
|
|
3087
3087
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
|
|
@@ -116,7 +116,7 @@ Public Member Functions</h2></td></tr>
|
|
|
116
116
|
</div><div class="memdoc">
|
|
117
117
|
|
|
118
118
|
<p class="definition">Definition at line <a class="el" href="SVFGBuilder_8h_source.html#l00045">45</a> of file <a class="el" href="SVFGBuilder_8h_source.html">SVFGBuilder.h</a>.</p>
|
|
119
|
-
<div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  : <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>()</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {}</div><div class="ttc" id="namespaceSVF_html_ab44d20f806be99699895260b14a942d7"><div class="ttname"><a href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">SVF::DominanceFrontier</a></div><div class="ttdeci">llvm::DominanceFrontier DominanceFrontier</div><div class="ttdoc">LLVM Dominators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
119
|
+
<div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  : <a class="code" href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">DominanceFrontier</a>()</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {}</div><div class="ttc" id="namespaceSVF_html_ab44d20f806be99699895260b14a942d7"><div class="ttname"><a href="namespaceSVF.html#ab44d20f806be99699895260b14a942d7">SVF::DominanceFrontier</a></div><div class="ttdeci">llvm::DominanceFrontier DominanceFrontier</div><div class="ttdoc">LLVM Dominators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00108">BasicTypes.h:108</a></div></div>
|
|
120
120
|
</div><!-- fragment -->
|
|
121
121
|
</div>
|
|
122
122
|
</div>
|
|
@@ -538,13 +538,13 @@ Private Attributes</h2></td></tr>
|
|
|
538
538
|
<div class="ttc" id="classSVF_1_1PCG_html_a7531d638b4f8aca4f0a3af82391001d9"><div class="ttname"><a href="classSVF_1_1PCG.html#a7531d638b4f8aca4f0a3af82391001d9">SVF::PCG::isFollowerFun</a></div><div class="ttdeci">bool isFollowerFun(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00061">PCG.h:61</a></div></div>
|
|
539
539
|
<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>
|
|
540
540
|
<div class="ttc" id="classSVF_1_1PCG_html_ae5ee8cf8cfe42854407190f30f3b6c1b"><div class="ttname"><a href="classSVF_1_1PCG.html#ae5ee8cf8cfe42854407190f30f3b6c1b">SVF::PCG::identifyFollowers</a></div><div class="ttdeci">void identifyFollowers()</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00191">PCG.cpp:191</a></div></div>
|
|
541
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
541
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
542
542
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
543
543
|
<div class="ttc" id="classSVF_1_1PCG_html_a53e95f74121cd6e35b73f345139f6b00"><div class="ttname"><a href="classSVF_1_1PCG.html#a53e95f74121cd6e35b73f345139f6b00">SVF::PCG::addFollowerFun</a></div><div class="ttdeci">bool addFollowerFun(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00077">PCG.h:77</a></div></div>
|
|
544
544
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_adf17f5699c9f40ffc8837e813e3af3ec"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">SVF::PTACallGraphNode::const_iterator</a></div><div class="ttdeci">PTACallGraphEdge::CallGraphEdgeSet::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00180">PTACallGraph.h:180</a></div></div>
|
|
545
545
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
|
|
546
546
|
<div class="ttc" id="classSVF_1_1PCG_html_ae9026f717c442198ffa90ff66f482c92"><div class="ttname"><a href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">SVF::PCG::callgraph</a></div><div class="ttdeci">PTACallGraph * callgraph</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00043">PCG.h:43</a></div></div>
|
|
547
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
547
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
|
|
548
548
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
549
549
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
|
|
550
550
|
<div class="ttc" id="classSVF_1_1PCG_html_ab3a3d18bac6e1f833583d41fa562caea"><div class="ttname"><a href="classSVF_1_1PCG.html#ab3a3d18bac6e1f833583d41fa562caea">SVF::PCG::followers</a></div><div class="ttdeci">FunSet followers</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00041">PCG.h:41</a></div></div>
|
|
@@ -573,7 +573,7 @@ Private Attributes</h2></td></tr>
|
|
|
573
573
|
<div class="fragment"><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="classSVF_1_1PCG.html#a19fea9790fffea9861c0dc7817b60a3e">FunWorkList</a> worklist;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordflow">for</span> (FunSet::iterator it = <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>.begin(), eit = <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>.end(); it != eit; ++it)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  {</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  worklist.push(*it);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">while</span> (!worklist.empty())</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = worklist.pop();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba">getSVFFun</a>(fun);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* funNode = <a class="code" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">callgraph</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = funNode-><a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = funNode-><a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  ++it)</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>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*it)->getDstNode()-><a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PCG.html#a4196d5ffc1542288fd7df5daffaca894">isSpawneeFun</a>(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  worklist.push(caller);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="classSVF_1_1PCG.html#acc48f65798275f5443b34b84e4bb6eae">addSpawneeFun</a>(caller);</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>  }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div><div class="ttc" id="classSVF_1_1PCG_html_ac7dd2bbd4274a5e3a6427f3b674f99ba"><div class="ttname"><a href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba">SVF::PCG::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00130">PCG.h:130</a></div></div>
|
|
574
574
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
575
575
|
<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>
|
|
576
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
576
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
577
577
|
<div class="ttc" id="classSVF_1_1PCG_html_a4196d5ffc1542288fd7df5daffaca894"><div class="ttname"><a href="classSVF_1_1PCG.html#a4196d5ffc1542288fd7df5daffaca894">SVF::PCG::isSpawneeFun</a></div><div class="ttdeci">bool isSpawneeFun(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00057">PCG.h:57</a></div></div>
|
|
578
578
|
<div class="ttc" id="classSVF_1_1PCG_html_a7191718edabfd8ce2df5bfbea683c1fa"><div class="ttname"><a href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">SVF::PCG::spawnees</a></div><div class="ttdeci">FunSet spawnees</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00040">PCG.h:40</a></div></div>
|
|
579
579
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
@@ -581,7 +581,7 @@ Private Attributes</h2></td></tr>
|
|
|
581
581
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html_a959445c97605953fbdebbbd999437a09"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">SVF::PTACallGraphNode::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction() const</div><div class="ttdoc">Get function of this call node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00193">PTACallGraph.h:193</a></div></div>
|
|
582
582
|
<div class="ttc" id="classSVF_1_1PCG_html_acc48f65798275f5443b34b84e4bb6eae"><div class="ttname"><a href="classSVF_1_1PCG.html#acc48f65798275f5443b34b84e4bb6eae">SVF::PCG::addSpawneeFun</a></div><div class="ttdeci">bool addSpawneeFun(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00071">PCG.h:71</a></div></div>
|
|
583
583
|
<div class="ttc" id="classSVF_1_1PCG_html_ae9026f717c442198ffa90ff66f482c92"><div class="ttname"><a href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">SVF::PCG::callgraph</a></div><div class="ttdeci">PTACallGraph * callgraph</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00043">PCG.h:43</a></div></div>
|
|
584
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
584
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
|
|
585
585
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
586
586
|
<div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
|
|
587
587
|
<div class="ttc" id="classSVF_1_1PCG_html_a19fea9790fffea9861c0dc7817b60a3e"><div class="ttname"><a href="classSVF_1_1PCG.html#a19fea9790fffea9861c0dc7817b60a3e">SVF::PCG::FunWorkList</a></div><div class="ttdeci">FIFOWorkList< const Function * > FunWorkList</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00035">PCG.h:35</a></div></div>
|
|
@@ -610,7 +610,7 @@ Private Attributes</h2></td></tr>
|
|
|
610
610
|
<div class="fragment"><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="classSVF_1_1PCG.html#a19fea9790fffea9861c0dc7817b60a3e">FunWorkList</a> worklist;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">for</span> (FunSet::iterator it = <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>.begin(), eit = <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>.end(); it != eit; ++it)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  {</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  worklist.push(*it);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = worklist.pop();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba">getSVFFun</a>(fun);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* funNode = <a class="code" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">callgraph</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(svffun);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = funNode-><a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit = funNode-><a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  ++it)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* callEdge = (*it);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = callEdge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getLLVMFun();</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PCG.html#a13bfb66d3c02157cd3bebad1f829d704">isSpawnerFun</a>(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  worklist.push(caller);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1PCG.html#a11c45407138211987e5143d81ccceb95">addSpawnerFun</a>(caller);</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator dit = callEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(), deit =</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  callEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>(); dit != deit; ++dit)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <a class="code" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b">addSpawnsite</a>((*dit)->getCallSite());</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">for</span> (PTACallGraphEdge::CallInstSet::const_iterator dit = callEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(), deit =</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  callEdge-><a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>(); dit != deit; ++dit)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b">addSpawnsite</a>((*dit)->getCallSite());</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>  }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div><div class="ttc" id="classSVF_1_1PCG_html_ac7dd2bbd4274a5e3a6427f3b674f99ba"><div class="ttname"><a href="classSVF_1_1PCG.html#ac7dd2bbd4274a5e3a6427f3b674f99ba">SVF::PCG::getSVFFun</a></div><div class="ttdeci">const SVFFunction * getSVFFun(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00130">PCG.h:130</a></div></div>
|
|
611
611
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_aaab54c670518d9d6790707f76ea76aa1"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">SVF::PTACallGraph::getCallGraphNode</a></div><div class="ttdeci">PTACallGraphNode * getCallGraphNode(NodeID id) const</div><div class="ttdoc">Get call graph node. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00315">PTACallGraph.h:315</a></div></div>
|
|
612
612
|
<div class="ttc" id="classSVF_1_1PCG_html_a11c45407138211987e5143d81ccceb95"><div class="ttname"><a href="classSVF_1_1PCG.html#a11c45407138211987e5143d81ccceb95">SVF::PCG::addSpawnerFun</a></div><div class="ttdeci">bool addSpawnerFun(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00065">PCG.h:65</a></div></div>
|
|
613
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
613
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
614
614
|
<div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00214">GenericGraph.h:214</a></div></div>
|
|
615
615
|
<div class="ttc" id="classSVF_1_1PCG_html_a3f7f0c7aaa768f7e834b4763b18d8223"><div class="ttname"><a href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">SVF::PCG::spawners</a></div><div class="ttdeci">FunSet spawners</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00039">PCG.h:39</a></div></div>
|
|
616
616
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a494bc8bacca5ca8d266286f3fb303495"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">SVF::PTACallGraphEdge::indirectCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00135">PTACallGraph.h:135</a></div></div>
|
|
@@ -883,7 +883,7 @@ Private Attributes</h2></td></tr>
|
|
|
883
883
|
<div class="fragment"><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">for</span> (CallInstSet::const_iterator sit = <a class="code" href="classSVF_1_1PCG.html#a2a7319200ec2ec07e8b7976b4a876da8">spawnSitesBegin</a>(), esit = <a class="code" href="classSVF_1_1PCG.html#a8dcd94e8f996fdb2197159ea95226817">spawnSitesEnd</a>(); sit != esit; ++sit)</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = *sit;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="classSVF_1_1PCG.html#a05759205f1362b6d72041cf669cf028d">BBWorkList</a> bb_worklist;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> visitedBBs;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  bb_worklist.push(inst->getParent());</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">while</span> (!bb_worklist.empty())</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bb_worklist.pop();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb->begin(), eit = bb->end(); it != eit; ++it)</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &*it;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// mark the callee of this callsite as follower</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="comment">// if this is an call/invoke instruction but not a spawn site</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> ((<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst)) && !<a class="code" href="classSVF_1_1PCG.html#ad7fa3ac0bd5820df718295f66dbf1edc">isSpawnsite</a>(inst))</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>  <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = <a class="code" href="classSVF_1_1PCG.html#a48c51b626e516aa1c0768b57becb6f68">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">callgraph</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#af8df9ca6d906453fa3f7168aa84fd087">hasCallGraphEdge</a>(cbn))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = <a class="code" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">callgraph</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a4ed2fd37007de9c873d5e197a0b3bd4e">getCallEdgeBegin</a>(cbn),</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  ecgIt = <a class="code" href="classSVF_1_1PCG.html#ae9026f717c442198ffa90ff66f482c92">callgraph</a>-><a class="code" href="classSVF_1_1PTACallGraph.html#a170a33ac22673dfd363c3e3b96987737">getCallEdgeEnd</a>(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *cgIt;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <a class="code" href="classSVF_1_1PCG.html#a53e95f74121cd6e35b73f345139f6b00">addFollowerFun</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getLLVMFun());</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</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>  }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb); succ_it != succ_end(bb); succ_it++)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ_bb = *succ_it;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">if</span> (visitedBBs.count(succ_bb) == 0)</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>  visitedBBs.insert(succ_bb);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  bb_worklist.push(succ_bb);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</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> </div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
|
|
884
884
|
<div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
885
885
|
<div class="ttc" id="classSVF_1_1PCG_html_a2a7319200ec2ec07e8b7976b4a876da8"><div class="ttname"><a href="classSVF_1_1PCG.html#a2a7319200ec2ec07e8b7976b4a876da8">SVF::PCG::spawnSitesBegin</a></div><div class="ttdeci">CallInstSet::const_iterator spawnSitesBegin() const</div><div class="ttdoc">Spawn sites iterators. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00098">PCG.h:98</a></div></div>
|
|
886
|
-
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
886
|
+
<div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
|
|
887
887
|
<div class="ttc" id="classSVF_1_1PCG_html_a8dcd94e8f996fdb2197159ea95226817"><div class="ttname"><a href="classSVF_1_1PCG.html#a8dcd94e8f996fdb2197159ea95226817">SVF::PCG::spawnSitesEnd</a></div><div class="ttdeci">CallInstSet::const_iterator spawnSitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00102">PCG.h:102</a></div></div>
|
|
888
888
|
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00093">GenericGraph.h:93</a></div></div>
|
|
889
889
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00104">SVFBasicTypes.h:104</a></div></div>
|
|
@@ -950,7 +950,7 @@ Private Attributes</h2></td></tr>
|
|
|
950
950
|
<div class="fragment"><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> fi = module-><a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efi = module-><a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); fi != efi; ++fi)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = (*fi)->getLLVMFun();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">for</span> (<a class="code" href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a> II = inst_begin((*fi)->getLLVMFun()), E = inst_end((*fi)->getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &*II;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">tdAPI</a>-><a class="code" href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">isTDFork</a>(inst))</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* forkVal = <a class="code" href="classSVF_1_1PCG.html#a8215dc3643d1c4fb3d489e80cd3db336">tdAPI</a>-><a class="code" href="classSVF_1_1ThreadAPI.html#a7ddc0c71aeae315af21972a4905b3456">getForkedFun</a>(inst);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a>(forkVal))</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="classSVF_1_1PCG.html#a1d946482cce92f7b1718a2a8c178be0b">addSpawnsite</a>(inst);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">spawners</a>.insert(fun);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">spawnees</a>.insert(forkFun);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">else</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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"pthread create"</span>);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(inst) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">"invoke spawnee indirectly"</span>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</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="ttc" id="namespaceSVF_1_1SVFUtil_html_ad98299033577f1e7f4e9bc73dff3b253"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">SVF::SVFUtil::getLLVMFunction</a></div><div class="ttdeci">const Function * getLLVMFunction(const Value *val)</div><div class="ttdoc">Return LLVM function if this value is. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00486">SVFUtil.h:486</a></div></div>
|
|
951
951
|
<div class="ttc" id="classSVF_1_1ThreadAPI_html_a9da276dca5092d18f4f22d32e5ab6cdf"><div class="ttname"><a href="classSVF_1_1ThreadAPI.html#a9da276dca5092d18f4f22d32e5ab6cdf">SVF::ThreadAPI::isTDFork</a></div><div class="ttdeci">bool isTDFork(const Instruction *inst) const</div><div class="ttdoc">Return true if this call create a new thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadAPI_8h_source.html#l00129">ThreadAPI.h:129</a></div></div>
|
|
952
952
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
|
|
953
|
-
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#
|
|
953
|
+
<div class="ttc" id="SVF-FE_2BasicTypes_8h_html_a160997c1a0fb1000445d04b89d9c1323"><div class="ttname"><a href="SVF-FE_2BasicTypes_8h.html#a160997c1a0fb1000445d04b89d9c1323">inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVF-FE_2BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
|
|
954
954
|
<div class="ttc" id="classSVF_1_1PCG_html_a3f7f0c7aaa768f7e834b4763b18d8223"><div class="ttname"><a href="classSVF_1_1PCG.html#a3f7f0c7aaa768f7e834b4763b18d8223">SVF::PCG::spawners</a></div><div class="ttdeci">FunSet spawners</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00039">PCG.h:39</a></div></div>
|
|
955
955
|
<div class="ttc" id="classSVF_1_1PCG_html_a7191718edabfd8ce2df5bfbea683c1fa"><div class="ttname"><a href="classSVF_1_1PCG.html#a7191718edabfd8ce2df5bfbea683c1fa">SVF::PCG::spawnees</a></div><div class="ttdeci">FunSet spawnees</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00040">PCG.h:40</a></div></div>
|
|
956
956
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00068">SVFUtil.cpp:68</a></div></div>
|
|
@@ -988,13 +988,13 @@ Private Attributes</h2></td></tr>
|
|
|
988
988
|
<p class="definition">Definition at line <a class="el" href="PCG_8cpp_source.html#l00278">278</a> of file <a class="el" href="PCG_8cpp_source.html">PCG.cpp</a>.</p>
|
|
989
989
|
<div class="fragment"><div class="line"><a name="l00279"></a><span class="lineno"> 279</span> {</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> <span class="comment">// DBOUT(DMTA, outs() << pasMsg("Starting Race Detection\n"));</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <a class="code" href="classSVF_1_1PCG.html#aca2efdefda1f95a6450eca4a781cbefa">PCG::FunVec</a> worklist;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> = <a class="code" href="classSVF_1_1PCG.html#a985b0c790c582d15e6242950ac66f574">mod</a>-><a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), E = <a class="code" href="classSVF_1_1PCG.html#a985b0c790c582d15e6242950ac66f574">mod</a>-><a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); <a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a> != E; ++<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  worklist.push_back(fun-><a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun1 = worklist.back();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  worklist.pop_back();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordtype">bool</span> ismhpfun = <span class="keyword">false</span>;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">for</span> (PCG::FunVec::iterator it = worklist.begin(), eit = worklist.end(); it != eit; ++it)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun2 = *it;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PCG.html#a4cab54d7273424c8b26376d8daf15e06">mayHappenInParallelBetweenFunctions</a>(fun1, fun2))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  ismhpfun = <span class="keyword">true</span>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <a class="code" href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0">mhpfuns</a>.insert(fun2);</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>  }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">if</span> (ismhpfun)</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  {</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0">mhpfuns</a>.insert(fun1);</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div><div class="ttc" id="classSVF_1_1PCG_html_a4cab54d7273424c8b26376d8daf15e06"><div class="ttname"><a href="classSVF_1_1PCG.html#a4cab54d7273424c8b26376d8daf15e06">SVF::PCG::mayHappenInParallelBetweenFunctions</a></div><div class="ttdeci">bool mayHappenInParallelBetweenFunctions(const Function *fun1, const Function *fun2) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00042">PCG.cpp:42</a></div></div>
|
|
990
990
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
|
|
991
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
991
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00126">BasicTypes.h:126</a></div></div>
|
|
992
992
|
<div class="ttc" id="classSVF_1_1PCG_html_a985b0c790c582d15e6242950ac66f574"><div class="ttname"><a href="classSVF_1_1PCG.html#a985b0c790c582d15e6242950ac66f574">SVF::PCG::mod</a></div><div class="ttdeci">SVFModule * mod</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00044">PCG.h:44</a></div></div>
|
|
993
993
|
<div class="ttc" id="classSVF_1_1PCG_html_a96f91b051a8035b614e015bf4d5081e0"><div class="ttname"><a href="classSVF_1_1PCG.html#a96f91b051a8035b614e015bf4d5081e0">SVF::PCG::mhpfuns</a></div><div class="ttdeci">FunSet mhpfuns</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00042">PCG.h:42</a></div></div>
|
|
994
994
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
995
995
|
<div class="ttc" id="classSVF_1_1PCG_html_aca2efdefda1f95a6450eca4a781cbefa"><div class="ttname"><a href="classSVF_1_1PCG.html#aca2efdefda1f95a6450eca4a781cbefa">SVF::PCG::FunVec</a></div><div class="ttdeci">std::vector< const Function * > FunVec</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00033">PCG.h:33</a></div></div>
|
|
996
996
|
<div class="ttc" id="CFLGrammar_8txt_html_acc7b4cf736579c4d83be2316d5a9e5f2"><div class="ttname"><a href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00014">CFLGrammar.txt:14</a></div></div>
|
|
997
|
-
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#
|
|
997
|
+
<div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00142">BasicTypes.h:142</a></div></div>
|
|
998
998
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
|
|
999
999
|
<div class="ttc" id="classSVF_1_1SVFModule_html_afcf2978f32e15127fb093405dc17d7f1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVF::SVFModule::const_iterator</a></div><div class="ttdeci">FunctionSetType::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00052">SVFModule.h:52</a></div></div>
|
|
1000
1000
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00358">SVFUtil.h:358</a></div></div>
|