svf-tools 1.0.306 → 1.0.310
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/AndersenLCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/BasicTypes_8h_source.html +8 -8
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PAG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -7
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +25 -22
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +18 -14
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +68 -68
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +23 -23
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +23 -23
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -7
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +4 -4
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +81 -78
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +18 -17
- package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +19 -16
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +188 -95
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/functions_c.html +10 -10
- package/SVF-doxygen/html/html/functions_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func_f.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +5 -5
- package/SVF-doxygen/html/html/functions_o.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +23 -20
- package/SVF-doxygen/html/html/functions_r.html +6 -4
- package/SVF-doxygen/html/html/functions_s.html +8 -8
- package/SVF-doxygen/html/html/functions_t.html +6 -6
- package/SVF-doxygen/html/html/functions_u.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_p.html +9 -0
- package/SVF-doxygen/html/html/globals_func_i.html +8 -8
- package/SVF-doxygen/html/html/globals_func_s.html +6 -6
- package/SVF-doxygen/html/html/globals_s.html +12 -14
- package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +10 -9
- package/SVF-doxygen/html/html/search/all_10.js +12 -9
- package/SVF-doxygen/html/html/search/all_12.js +1 -1
- package/SVF-doxygen/html/html/search/all_13.js +7 -7
- package/SVF-doxygen/html/html/search/all_14.js +4 -4
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_9.js +3 -3
- package/SVF-doxygen/html/html/search/all_e.js +4 -4
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +2 -2
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_8.js +1 -1
- package/SVF-doxygen/html/html/search/variables_10.js +3 -0
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_e.js +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SmallVector_3_01T_00_01N_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
- package/SVF-doxygen/html/html/tools_2DDA_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2Example_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2MTA_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2SABER_2CMakeLists_8txt.html +1 -1
- package/SVF-doxygen/html/html/tools_2WPA_2CMakeLists_8txt.html +9 -9
- package/include/MemoryModel/PersistentPointsToCache.h +43 -34
- package/include/MemoryModel/PointerAnalysisImpl.h +1 -5
- package/include/Util/SVFBasicTypes.h +4 -2
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +7 -0
- package/lib/MemoryModel/PointsTo.cpp +3 -3
- package/lib/Util/PTAStat.cpp +3 -4
- package/lib/Util/SVFUtil.cpp +1 -0
- package/lib/WPA/FlowSensitive.cpp +1 -1
- package/package.json +1 -1
- package/tools/WPA/CMakeLists.txt +3 -1
|
@@ -422,9 +422,9 @@ Protected Member Functions</h2></td></tr>
|
|
|
422
422
|
<tr class="memitem:ae94cea78b71fb75837ee2a17b5ed0e81"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#acfdb43f20bbcababc928cc4df93a8483">PTDataTy</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a> () const</td></tr>
|
|
423
423
|
<tr class="memdesc:ae94cea78b71fb75837ee2a17b5ed0e81"><td class="mdescLeft"> </td><td class="mdescRight">Get points-to data structure. <a href="#ae94cea78b71fb75837ee2a17b5ed0e81">More...</a><br /></td></tr>
|
|
424
424
|
<tr class="separator:ae94cea78b71fb75837ee2a17b5ed0e81"><td class="memSeparator" colspan="2"> </td></tr>
|
|
425
|
-
<tr class="memitem:
|
|
426
|
-
<tr class="memdesc:
|
|
427
|
-
<tr class="separator:
|
|
425
|
+
<tr class="memitem:a57ff2bf45ede7a730a8adaba8e61179d"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#a57ff2bf45ede7a730a8adaba8e61179d">finalize</a> ()</td></tr>
|
|
426
|
+
<tr class="memdesc:a57ff2bf45ede7a730a8adaba8e61179d"><td class="mdescLeft"> </td><td class="mdescRight">Finalization of pointer analysis, and normalize points-to information to Bit Vector representation. <a href="#a57ff2bf45ede7a730a8adaba8e61179d">More...</a><br /></td></tr>
|
|
427
|
+
<tr class="separator:a57ff2bf45ede7a730a8adaba8e61179d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
428
428
|
<tr class="memitem:aa534e475fa34fa322c567bc376a3da70"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">updateCallGraph</a> (const <a class="el" href="classSVF_1_1PointerAnalysis.html#afc2e412fe96c1fad268ba0255a2042e7">CallSiteToFunPtrMap</a> &)</td></tr>
|
|
429
429
|
<tr class="memdesc:aa534e475fa34fa322c567bc376a3da70"><td class="mdescLeft"> </td><td class="mdescRight">Update callgraph. This should be implemented by its subclass. <a href="#aa534e475fa34fa322c567bc376a3da70">More...</a><br /></td></tr>
|
|
430
430
|
<tr class="separator:aa534e475fa34fa322c567bc376a3da70"><td class="memSeparator" colspan="2"> </td></tr>
|
|
@@ -854,8 +854,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
854
854
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">SVF::PointerAnalysis::AndersenSFR_WPA</a></div><div class="ttdoc">Stride-based field representation. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00071">PointerAnalysis.h:71</a></div></div>
|
|
855
855
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">SVF::PointerAnalysis::FSSPARSE_WPA</a></div><div class="ttdoc">Sparse flow sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00078">PointerAnalysis.h:78</a></div></div>
|
|
856
856
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a7087f9d5a1a5b3576173bd6a7fd72163"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a7087f9d5a1a5b3576173bd6a7fd72163">SVF::BVDataPTAImpl::PersDFPTDataTy</a></div><div class="ttdeci">PersistentDFPTData< NodeID, NodeSet, NodeID, PointsTo > PersDFPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00059">PointerAnalysisImpl.h:59</a></div></div>
|
|
857
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
858
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a94acf249e50ad56f966ddad6843c18f8"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">SVF::BVDataPTAImpl::ptCache</a></div><div class="ttdeci">PersistentPointsToCache< PointsTo > ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
857
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
858
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a94acf249e50ad56f966ddad6843c18f8"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">SVF::BVDataPTAImpl::ptCache</a></div><div class="ttdeci">PersistentPointsToCache< PointsTo > ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00216">PointerAnalysisImpl.h:216</a></div></div>
|
|
859
859
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f">SVF::PointerAnalysis::AndersenWaveDiffWithType_WPA</a></div><div class="ttdoc">Diff wave propagation with type info andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00073">PointerAnalysis.h:73</a></div></div>
|
|
860
860
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a639446e6bf9712afa439d089b94aefae"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a639446e6bf9712afa439d089b94aefae">SVF::BVDataPTAImpl::MutIncDFPTDataTy</a></div><div class="ttdeci">MutableIncDFPTData< NodeID, NodeSet, NodeID, PointsTo > MutIncDFPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00054">PointerAnalysisImpl.h:54</a></div></div>
|
|
861
861
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a5d3c3094e263bf16a4f312a118c1bd36"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a5d3c3094e263bf16a4f312a118c1bd36">SVF::PointerAnalysis::ptaImplTy</a></div><div class="ttdeci">PTAImplTy ptaImplTy</div><div class="ttdoc">PTA implementation type. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00153">PointerAnalysis.h:153</a></div></div>
|
|
@@ -932,7 +932,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
932
932
|
</div><div class="memdoc">
|
|
933
933
|
|
|
934
934
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00131">131</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
935
|
-
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#ac1b9dc035fb0bdf468c7d14b9f9d437a">addPts</a>(<span class="keywordtype">id</span>,ptd);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
935
|
+
<div class="fragment"><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#ac1b9dc035fb0bdf468c7d14b9f9d437a">addPts</a>(<span class="keywordtype">id</span>,ptd);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
936
936
|
<div class="ttc" id="classSVF_1_1PTData_html_ac1b9dc035fb0bdf468c7d14b9f9d437a"><div class="ttname"><a href="classSVF_1_1PTData.html#ac1b9dc035fb0bdf468c7d14b9f9d437a">SVF::PTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &var, const Data &element)=0</div><div class="ttdoc">Adds element to the points-to set associated with var. </div></div>
|
|
937
937
|
</div><!-- fragment -->
|
|
938
938
|
</div>
|
|
@@ -976,8 +976,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
976
976
|
|
|
977
977
|
<p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#abd9da46106d820721a24201caaa164e1">SVF::PointerAnalysis</a>.</p>
|
|
978
978
|
|
|
979
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
980
|
-
<div class="fragment"><div class="line"><a name="
|
|
979
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00452">452</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
980
|
+
<div class="fragment"><div class="line"><a name="l00454"></a><span class="lineno"> 454</span> {</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(LocA.Ptr, LocB.Ptr);</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span> }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00452">PointerAnalysisImpl.cpp:452</a></div></div>
|
|
981
981
|
</div><!-- fragment -->
|
|
982
982
|
</div>
|
|
983
983
|
</div>
|
|
@@ -1020,9 +1020,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1020
1020
|
|
|
1021
1021
|
<p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">SVF::PointerAnalysis</a>.</p>
|
|
1022
1022
|
|
|
1023
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1024
|
-
<div class="fragment"><div class="line"><a name="
|
|
1025
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#
|
|
1023
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00461">461</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1024
|
+
<div class="fragment"><div class="line"><a name="l00463"></a><span class="lineno"> 463</span> {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(V1),<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(V2));</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span> }</div><div class="ttc" id="classSVF_1_1PAG_html_a5f49b7da110a626ed6605d1f108dfa25"><div class="ttname"><a href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">SVF::PAG::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get PAG Node according to LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00547">PAG.h:547</a></div></div>
|
|
1025
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00452">PointerAnalysisImpl.cpp:452</a></div></div>
|
|
1026
1026
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a8771956f7595b66d825b3dc459d1ae49"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static PAG * pag</div><div class="ttdoc">PAG. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1027
1027
|
</div><!-- fragment -->
|
|
1028
1028
|
</div>
|
|
@@ -1066,9 +1066,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1066
1066
|
|
|
1067
1067
|
<p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#a0f712ead1f31750879948c36b2fc77cf">SVF::PointerAnalysis</a>.</p>
|
|
1068
1068
|
|
|
1069
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1070
|
-
<div class="fragment"><div class="line"><a name="
|
|
1071
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#
|
|
1069
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00470">470</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1070
|
+
<div class="fragment"><div class="line"><a name="l00471"></a><span class="lineno"> 471</span> {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">alias</a>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node1),<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node2));</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span> }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00098">PointerAnalysisImpl.h:98</a></div></div>
|
|
1071
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ad06fbd9a51499c668662b533eeb2e4ac"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ad06fbd9a51499c668662b533eeb2e4ac">SVF::BVDataPTAImpl::alias</a></div><div class="ttdeci">virtual AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Location infos. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00452">PointerAnalysisImpl.cpp:452</a></div></div>
|
|
1072
1072
|
</div><!-- fragment -->
|
|
1073
1073
|
</div>
|
|
1074
1074
|
</div>
|
|
@@ -1109,10 +1109,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1109
1109
|
<p>Interface expose to users of our pointer analysis, given two pts. </p>
|
|
1110
1110
|
<p>Return alias results based on our points-to/alias analysis </p>
|
|
1111
1111
|
|
|
1112
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1113
|
-
<div class="fragment"><div class="line"><a name="
|
|
1112
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00478">478</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1113
|
+
<div class="fragment"><div class="line"><a name="l00479"></a><span class="lineno"> 479</span> {</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span> </div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts1;</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p1,pts1);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pts2;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">expandFIObjs</a>(p2,pts2);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(pts1) || <a class="code" href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">containBlackHoleNode</a>(pts2) || pts1.<a class="code" href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">intersects</a>(pts2))</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">return</span> llvm::AliasResult::MayAlias;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">return</span> llvm::AliasResult::NoAlias;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span> }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a56368369bc37e37b13f19e5eb1890063"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a56368369bc37e37b13f19e5eb1890063">SVF::PointerAnalysis::containBlackHoleNode</a></div><div class="ttdeci">bool containBlackHoleNode(const PointsTo &pts)</div><div class="ttdoc">Determine whether a points-to contains a black hole or constant node. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00308">PointerAnalysis.h:308</a></div></div>
|
|
1114
1114
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ad78e4109c839914c4f7e37ca78046f1d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad78e4109c839914c4f7e37ca78046f1d">SVF::PointsTo::intersects</a></div><div class="ttdeci">bool intersects(const PointsTo &rhs) const</div><div class="ttdoc">Returns true if this set and rhs share any elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00180">PointsTo.cpp:180</a></div></div>
|
|
1115
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a798c84d5e861de2b61bcb1a86385f721"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">SVF::BVDataPTAImpl::expandFIObjs</a></div><div class="ttdeci">virtual void expandFIObjs(const PointsTo &pts, PointsTo &expandedPts)</div><div class="ttdoc">Expand FI objects. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#
|
|
1115
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a798c84d5e861de2b61bcb1a86385f721"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a798c84d5e861de2b61bcb1a86385f721">SVF::BVDataPTAImpl::expandFIObjs</a></div><div class="ttdeci">virtual void expandFIObjs(const PointsTo &pts, PointsTo &expandedPts)</div><div class="ttdoc">Expand FI objects. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00082">PointerAnalysisImpl.cpp:82</a></div></div>
|
|
1116
1116
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
1117
1117
|
</div><!-- fragment -->
|
|
1118
1118
|
</div>
|
|
@@ -1173,7 +1173,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1173
1173
|
|
|
1174
1174
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00138">138</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1175
1175
|
<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#ad45879017d8fdeedc987ce35c4eba1a5">clear</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div><div class="ttc" id="classSVF_1_1PTData_html_ad45879017d8fdeedc987ce35c4eba1a5"><div class="ttname"><a href="classSVF_1_1PTData.html#ad45879017d8fdeedc987ce35c4eba1a5">SVF::PTData::clear</a></div><div class="ttdeci">virtual void clear()=0</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div></div>
|
|
1176
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1176
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1177
1177
|
</div><!-- fragment -->
|
|
1178
1178
|
</div>
|
|
1179
1179
|
</div>
|
|
@@ -1205,7 +1205,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1205
1205
|
|
|
1206
1206
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00115">115</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1207
1207
|
<div class="fragment"><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#a877888f12d9f8048002cc0e6b83d45ac">clearFullPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  }</div><div class="ttc" id="classSVF_1_1PTData_html_a877888f12d9f8048002cc0e6b83d45ac"><div class="ttname"><a href="classSVF_1_1PTData.html#a877888f12d9f8048002cc0e6b83d45ac">SVF::PTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &var)=0</div><div class="ttdoc">Fully clears the points-to set of var. </div></div>
|
|
1208
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1208
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1209
1209
|
</div><!-- fragment -->
|
|
1210
1210
|
</div>
|
|
1211
1211
|
</div>
|
|
@@ -1247,7 +1247,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1247
1247
|
|
|
1248
1248
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00109">109</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1249
1249
|
<div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#a03c783b9a1faac0aee3e22361df594ce">clearPts</a>(<span class="keywordtype">id</span>, element);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div><div class="ttc" id="classSVF_1_1PTData_html_a03c783b9a1faac0aee3e22361df594ce"><div class="ttname"><a href="classSVF_1_1PTData.html#a03c783b9a1faac0aee3e22361df594ce">SVF::PTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &var, const Data &element)=0</div><div class="ttdoc">Clears element from the points-to set of var. </div></div>
|
|
1250
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1250
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1251
1251
|
</div><!-- fragment -->
|
|
1252
1252
|
</div>
|
|
1253
1253
|
</div>
|
|
@@ -1277,7 +1277,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1277
1277
|
<p>Release memory. </p>
|
|
1278
1278
|
|
|
1279
1279
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00090">90</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1280
|
-
<div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1280
|
+
<div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1281
1281
|
</div><!-- fragment -->
|
|
1282
1282
|
</div>
|
|
1283
1283
|
</div>
|
|
@@ -1307,8 +1307,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1307
1307
|
|
|
1308
1308
|
<p>Reimplemented from <a class="el" href="classSVF_1_1PointerAnalysis.html#a861554c2fdeaa406131c2c920b4c7908">SVF::PointerAnalysis</a>.</p>
|
|
1309
1309
|
|
|
1310
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1311
|
-
<div class="fragment"><div class="line"><a name="
|
|
1310
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00358">358</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1311
|
+
<div class="fragment"><div class="line"><a name="l00359"></a><span class="lineno"> 359</span> {</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a> pagNodes;</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PAG::iterator</a> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; it++)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  pagNodes.insert(it->first);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</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>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n : pagNodes)</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"----------------------------------------------\n"</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">dumpPts</a>(n, this-><a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(n));</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"----------------------------------------------\n"</span>;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1312
1312
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1313
1313
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a1a6cee7e690ccb3e53cdc4c3e67b386d"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a1a6cee7e690ccb3e53cdc4c3e67b386d">SVF::PointerAnalysis::dumpPts</a></div><div class="ttdeci">virtual void dumpPts(NodeID ptr, const PointsTo &pts)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00316">PointerAnalysis.cpp:316</a></div></div>
|
|
1314
1314
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
@@ -1347,8 +1347,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1347
1347
|
|
|
1348
1348
|
<p>Reimplemented from <a class="el" href="classSVF_1_1PointerAnalysis.html#ad409cbf61271743394b9e5868f3fd197">SVF::PointerAnalysis</a>.</p>
|
|
1349
1349
|
|
|
1350
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#
|
|
1351
|
-
<div class="fragment"><div class="line"><a name="
|
|
1350
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00235">235</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1351
|
+
<div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#a91b898e3547eecfbf1ab155d183734bf">dumpPTData</a>();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1352
1352
|
<div class="ttc" id="classSVF_1_1PTData_html_a91b898e3547eecfbf1ab155d183734bf"><div class="ttname"><a href="classSVF_1_1PTData.html#a91b898e3547eecfbf1ab155d183734bf">SVF::PTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData()=0</div><div class="ttdoc">Dump stored keys and points-to sets. </div></div>
|
|
1353
1353
|
</div><!-- fragment -->
|
|
1354
1354
|
</div>
|
|
@@ -1381,8 +1381,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1381
1381
|
|
|
1382
1382
|
<p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#a43858bd242c7f2c5f33c3c0f6445376a">SVF::Andersen</a>.</p>
|
|
1383
1383
|
|
|
1384
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1385
|
-
<div class="fragment"><div class="line"><a name="
|
|
1384
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00325">325</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1385
|
+
<div class="fragment"><div class="line"><a name="l00326"></a><span class="lineno"> 326</span> {</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="keywordflow">for</span> (OrderedNodeSet::iterator nIter = this-><a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().begin();</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  nIter != this-><a class="code" href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">getAllValidPtrs</a>().end(); ++nIter)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PointerAnalysis.html#aaf6b41f44da3a4caea1fa395e41edf71">getPAG</a>()-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(*nIter);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#aaf6b41f44da3a4caea1fa395e41edf71">getPAG</a>()->isValidTopLevelPtr(node))</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& pts = this-><a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\nNodeID "</span> << node-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() << <span class="stringliteral">" "</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>  <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>())</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\t\tPointsTo: {empty}\n\n"</span>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  {</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\t\tPointsTo: { "</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> it = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  it != eit; ++it)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << *it << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"}\n\n"</span>;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span> </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>().flush();</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span> }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a60b111647e000cc983aa52513f90afbc"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a60b111647e000cc983aa52513f90afbc">SVF::PointerAnalysis::getAllValidPtrs</a></div><div class="ttdeci">OrderedNodeSet & getAllValidPtrs()</div><div class="ttdoc">Get all Valid Pointers for resolution. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00222">PointerAnalysis.h:222</a></div></div>
|
|
1386
1386
|
<div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
|
|
1387
1387
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_aaf6b41f44da3a4caea1fa395e41edf71"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#aaf6b41f44da3a4caea1fa395e41edf71">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">PAG * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00205">PointerAnalysis.h:205</a></div></div>
|
|
1388
1388
|
<div class="ttc" id="classSVF_1_1PointsTo_html_aa53962e561399bf493d1f2b9137356f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00127">PointsTo.h:127</a></div></div>
|
|
@@ -1436,8 +1436,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1436
1436
|
|
|
1437
1437
|
<p>Reimplemented in <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a3af0297eb75ac4009433be44bb286d30">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1438
1438
|
|
|
1439
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1440
|
-
<div class="fragment"><div class="line"><a name="
|
|
1439
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00082">82</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1440
|
+
<div class="fragment"><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  expandedPts = pts;;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> pit = pts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), epit = pts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>(); pit!=epit; ++pit)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(*pit) == *pit || <a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(*pit))</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>  expandedPts |= <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">getAllFieldsObjNode</a>(*pit);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00174">PointsTo.h:174</a></div></div>
|
|
1441
1441
|
<div class="ttc" id="classSVF_1_1PAG_html_a049069cb76eada008e65b71e08ccdf46"><div class="ttname"><a href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">SVF::PAG::getAllFieldsObjNode</a></div><div class="ttdeci">NodeBS & getAllFieldsObjNode(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00778">PAG.cpp:778</a></div></div>
|
|
1442
1442
|
<div class="ttc" id="classSVF_1_1PointsTo_html_aa53962e561399bf493d1f2b9137356f6"><div class="ttname"><a href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin(void) const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00127">PointsTo.h:127</a></div></div>
|
|
1443
1443
|
<div class="ttc" id="classSVF_1_1PAG_html_ae1e22e620954e3e9ede3f2bf0ac90c36"><div class="ttname"><a href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">SVF::PAG::getBaseObjNode</a></div><div class="ttdeci">NodeID getBaseObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00717">PAG.h:717</a></div></div>
|
|
@@ -1483,8 +1483,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1483
1483
|
|
|
1484
1484
|
<p>TODO: remove repetition. </p>
|
|
1485
1485
|
|
|
1486
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1487
|
-
<div class="fragment"><div class="line"><a name="
|
|
1486
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00094">94</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1487
|
+
<div class="fragment"><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>  expandedPts = pts;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts)</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(o) == o || <a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(o))</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  expandedPts |= <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">getAllFieldsObjNode</a>(o);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> }</div><div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1488
1488
|
<div class="ttc" id="classSVF_1_1PAG_html_a049069cb76eada008e65b71e08ccdf46"><div class="ttname"><a href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">SVF::PAG::getAllFieldsObjNode</a></div><div class="ttdeci">NodeBS & getAllFieldsObjNode(const MemObj *obj)</div><div class="ttdoc">Get all fields of an object. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00778">PAG.cpp:778</a></div></div>
|
|
1489
1489
|
<div class="ttc" id="classSVF_1_1PAG_html_ae1e22e620954e3e9ede3f2bf0ac90c36"><div class="ttname"><a href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">SVF::PAG::getBaseObjNode</a></div><div class="ttdeci">NodeID getBaseObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00717">PAG.h:717</a></div></div>
|
|
1490
1490
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00370">PointerAnalysis.h:370</a></div></div>
|
|
@@ -1492,8 +1492,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1492
1492
|
</div><!-- fragment -->
|
|
1493
1493
|
</div>
|
|
1494
1494
|
</div>
|
|
1495
|
-
<a id="
|
|
1496
|
-
<h2 class="memtitle"><span class="permalink"><a href="#
|
|
1495
|
+
<a id="a57ff2bf45ede7a730a8adaba8e61179d"></a>
|
|
1496
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a57ff2bf45ede7a730a8adaba8e61179d">◆ </a></span>finalize()</h2>
|
|
1497
1497
|
|
|
1498
1498
|
<div class="memitem">
|
|
1499
1499
|
<div class="memproto">
|
|
@@ -1502,7 +1502,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1502
1502
|
<td class="mlabels-left">
|
|
1503
1503
|
<table class="memname">
|
|
1504
1504
|
<tr>
|
|
1505
|
-
<td class="memname">
|
|
1505
|
+
<td class="memname">void BVDataPTAImpl::finalize </td>
|
|
1506
1506
|
<td>(</td>
|
|
1507
1507
|
<td class="paramtype">void </td>
|
|
1508
1508
|
<td class="paramname"></td><td>)</td>
|
|
@@ -1511,7 +1511,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1511
1511
|
</table>
|
|
1512
1512
|
</td>
|
|
1513
1513
|
<td class="mlabels-right">
|
|
1514
|
-
<span class="mlabels"><span class="mlabel">
|
|
1514
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
1515
1515
|
</tr>
|
|
1516
1516
|
</table>
|
|
1517
1517
|
</div><div class="memdoc">
|
|
@@ -1522,9 +1522,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1522
1522
|
|
|
1523
1523
|
<p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#ad90c8cf193bd81870ce8dd88c9580e2c">SVF::Andersen</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#afed358369102f01f6fe88b1433e704c3">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">SVF::AndersenBase</a>, <a class="el" href="classSVF_1_1FlowDDA.html#a5abae08577ab24684653421dc712431a">SVF::FlowDDA</a>, <a class="el" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">SVF::TypeAnalysis</a>, <a class="el" href="classSVF_1_1VersionedFlowSensitive.html#ad955fda89f4f749151a1bd14562b03f6">SVF::VersionedFlowSensitive</a>, and <a class="el" href="classSVF_1_1FlowSensitiveTBHC.html#a3564d6ad7e12e0a833b4cea203a809e4">SVF::FlowSensitiveTBHC</a>.</p>
|
|
1524
1524
|
|
|
1525
|
-
<p class="definition">Definition at line <a class="el" href="
|
|
1526
|
-
<div class="fragment"><div class="line"><a name="
|
|
1527
|
-
<div class="ttc" id="
|
|
1525
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00072">72</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1526
|
+
<div class="fragment"><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">normalizePointsTo</a>();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">PointerAnalysis::finalize</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">Options::ptDataBacking</a> == PTBackingType::Persistent && <a class="code" href="classSVF_1_1Options.html#a498a1a05a08be1ffd845aefeb0672bcb">Options::PStat</a>) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>.printStats(<span class="stringliteral">"bv-finalize"</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> }</div><div class="ttc" id="classSVF_1_1Options_html_a498a1a05a08be1ffd845aefeb0672bcb"><div class="ttname"><a href="classSVF_1_1Options.html#a498a1a05a08be1ffd845aefeb0672bcb">SVF::Options::PStat</a></div><div class="ttdeci">static const llvm::cl::opt< bool > PStat</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00131">Options.h:131</a></div></div>
|
|
1527
|
+
<div class="ttc" id="classSVF_1_1Options_html_a9ec1d22e20b655e364fea03ba7d923a2"><div class="ttname"><a href="classSVF_1_1Options.html#a9ec1d22e20b655e364fea03ba7d923a2">SVF::Options::ptDataBacking</a></div><div class="ttdeci">static const llvm::cl::opt< BVDataPTAImpl::PTBackingType > ptDataBacking</div><div class="ttdoc">PTData type. </div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00068">Options.h:68</a></div></div>
|
|
1528
|
+
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a118dabc50024b5cd91095814ade47166"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a118dabc50024b5cd91095814ade47166">SVF::PointerAnalysis::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalization of a pointer analysis, including checking alias correctness. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8cpp_source.html#l00222">PointerAnalysis.cpp:222</a></div></div>
|
|
1529
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a2026cffd7043208333083ed1a6603e7b"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a2026cffd7043208333083ed1a6603e7b">SVF::BVDataPTAImpl::normalizePointsTo</a></div><div class="ttdeci">virtual void normalizePointsTo()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00402">PointerAnalysisImpl.cpp:402</a></div></div>
|
|
1530
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a94acf249e50ad56f966ddad6843c18f8"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">SVF::BVDataPTAImpl::ptCache</a></div><div class="ttdeci">PersistentPointsToCache< PointsTo > ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00216">PointerAnalysisImpl.h:216</a></div></div>
|
|
1528
1531
|
</div><!-- fragment -->
|
|
1529
1532
|
</div>
|
|
1530
1533
|
</div>
|
|
@@ -1551,10 +1554,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1551
1554
|
</table>
|
|
1552
1555
|
</div><div class="memdoc">
|
|
1553
1556
|
|
|
1554
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#
|
|
1555
|
-
<div class="fragment"><div class="line"><a name="
|
|
1557
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00184">184</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1558
|
+
<div class="fragment"><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">DFPTDataTy</a>* df = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">DFPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(df && <span class="stringliteral">"BVDataPTAImpl::getDFPTDataTy: not a DFPTDataTy!"</span>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> df;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1556
1559
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a5c2288519153467142e74c8dd4e77180"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a5c2288519153467142e74c8dd4e77180">SVF::BVDataPTAImpl::DFPTDataTy</a></div><div class="ttdeci">DFPTData< NodeID, NodeSet, NodeID, PointsTo > DFPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00048">PointerAnalysisImpl.h:48</a></div></div>
|
|
1557
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1560
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1558
1561
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1559
1562
|
</div><!-- fragment -->
|
|
1560
1563
|
</div>
|
|
@@ -1582,9 +1585,9 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1582
1585
|
</table>
|
|
1583
1586
|
</div><div class="memdoc">
|
|
1584
1587
|
|
|
1585
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#
|
|
1586
|
-
<div class="fragment"><div class="line"><a name="
|
|
1587
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1588
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00177">177</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1589
|
+
<div class="fragment"><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">DiffPTDataTy</a>* diff = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">DiffPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(diff && <span class="stringliteral">"BVDataPTAImpl::getDiffPTDataTy: not a DiffPTDataTy!"</span>);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span> diff;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1590
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1588
1591
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1589
1592
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_abd8bb73e9beac5e39667091b1e211bd3"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#abd8bb73e9beac5e39667091b1e211bd3">SVF::BVDataPTAImpl::DiffPTDataTy</a></div><div class="ttdeci">DiffPTData< NodeID, NodeSet, NodeID, PointsTo > DiffPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00047">PointerAnalysisImpl.h:47</a></div></div>
|
|
1590
1593
|
</div><!-- fragment -->
|
|
@@ -1613,10 +1616,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1613
1616
|
</table>
|
|
1614
1617
|
</div><div class="memdoc">
|
|
1615
1618
|
|
|
1616
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#
|
|
1617
|
-
<div class="fragment"><div class="line"><a name="
|
|
1619
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00191">191</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1620
|
+
<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>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">MutDFPTDataTy</a>* mdf = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">MutDFPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(mdf && <span class="stringliteral">"BVDataPTAImpl::getMutDFPTDataTy: not a MutDFPTDataTy!"</span>);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">return</span> mdf;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1618
1621
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ac130bf326911b8e5396f57daa78566e7"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ac130bf326911b8e5396f57daa78566e7">SVF::BVDataPTAImpl::MutDFPTDataTy</a></div><div class="ttdeci">MutableDFPTData< NodeID, NodeSet, NodeID, PointsTo > MutDFPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00053">PointerAnalysisImpl.h:53</a></div></div>
|
|
1619
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1622
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1620
1623
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1621
1624
|
</div><!-- fragment -->
|
|
1622
1625
|
</div>
|
|
@@ -1646,7 +1649,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1646
1649
|
</div><div class="memdoc">
|
|
1647
1650
|
|
|
1648
1651
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00079">79</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1649
|
-
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a94acf249e50ad56f966ddad6843c18f8"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">SVF::BVDataPTAImpl::ptCache</a></div><div class="ttdeci">PersistentPointsToCache< PointsTo > ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1652
|
+
<div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">ptCache</a>;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a94acf249e50ad56f966ddad6843c18f8"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a94acf249e50ad56f966ddad6843c18f8">SVF::BVDataPTAImpl::ptCache</a></div><div class="ttdeci">PersistentPointsToCache< PointsTo > ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00216">PointerAnalysisImpl.h:216</a></div></div>
|
|
1650
1653
|
</div><!-- fragment -->
|
|
1651
1654
|
</div>
|
|
1652
1655
|
</div>
|
|
@@ -1676,7 +1679,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1676
1679
|
<p>Get points-to data structure. </p>
|
|
1677
1680
|
|
|
1678
1681
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00161">161</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1679
|
-
<div class="fragment"><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1682
|
+
<div class="fragment"><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1680
1683
|
</div><!-- fragment -->
|
|
1681
1684
|
</div>
|
|
1682
1685
|
</div>
|
|
@@ -1711,7 +1714,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1711
1714
|
|
|
1712
1715
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00098">98</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1713
1716
|
<div class="fragment"><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  }</div><div class="ttc" id="classSVF_1_1PTData_html_a9ae6037637d8b9acb323333f491f4a7d"><div class="ttname"><a href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">SVF::PTData::getPts</a></div><div class="ttdeci">virtual const DataSet & getPts(const Key &var)=0</div><div class="ttdoc">Get points-to set of var. </div></div>
|
|
1714
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1717
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1715
1718
|
</div><!-- fragment -->
|
|
1716
1719
|
</div>
|
|
1717
1720
|
</div>
|
|
@@ -1743,7 +1746,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1743
1746
|
<p>Implements <a class="el" href="classSVF_1_1PointerAnalysis.html#ad9af9655a13f3faeaf265ba370d1f280">SVF::PointerAnalysis</a>.</p>
|
|
1744
1747
|
|
|
1745
1748
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00102">102</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1746
|
-
<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#ab6146f5582946c08568f3a8d45e57b03">getRevPts</a>(nodeId);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1749
|
+
<div class="fragment"><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#ab6146f5582946c08568f3a8d45e57b03">getRevPts</a>(nodeId);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1747
1750
|
<div class="ttc" id="classSVF_1_1PTData_html_ab6146f5582946c08568f3a8d45e57b03"><div class="ttname"><a href="classSVF_1_1PTData.html#ab6146f5582946c08568f3a8d45e57b03">SVF::PTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet & getRevPts(const Data &datum)=0</div><div class="ttdoc">Get reverse points-to set of a datum. </div></div>
|
|
1748
1751
|
</div><!-- fragment -->
|
|
1749
1752
|
</div>
|
|
@@ -1771,10 +1774,10 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1771
1774
|
</table>
|
|
1772
1775
|
</div><div class="memdoc">
|
|
1773
1776
|
|
|
1774
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#
|
|
1775
|
-
<div class="fragment"><div class="line"><a name="
|
|
1777
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00198">198</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
1778
|
+
<div class="fragment"><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a8bc5e039958280b18e5a00a56e0bdc94">VersionedPTDataTy</a>* v = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1BVDataPTAImpl.html#a8bc5e039958280b18e5a00a56e0bdc94">VersionedPTDataTy</a>>(<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(v && <span class="stringliteral">"BVDataPTAImpl::getVersionedPTDataTy: not a VersionedPTDataTy!"</span>);</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> v;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a8bc5e039958280b18e5a00a56e0bdc94"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a8bc5e039958280b18e5a00a56e0bdc94">SVF::BVDataPTAImpl::VersionedPTDataTy</a></div><div class="ttdeci">VersionedPTData< NodeID, NodeSet, NodeID, PointsTo, VersionedVar, Set< VersionedVar > > VersionedPTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00049">PointerAnalysisImpl.h:49</a></div></div>
|
|
1776
1779
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1777
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1780
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1778
1781
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if<!is_simple_type< Y >::value, typename cast_retty< X, const Y >::ret_type >::type dyn_cast(const Y &Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
|
|
1779
1782
|
</div><!-- fragment -->
|
|
1780
1783
|
</div>
|
|
@@ -1806,8 +1809,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1806
1809
|
|
|
1807
1810
|
<p>Reimplemented in <a class="el" href="classSVF_1_1AndersenBase.html#af37392229dab0a1f2f807a12186c3b39">SVF::AndersenBase</a>.</p>
|
|
1808
1811
|
|
|
1809
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1810
|
-
<div class="fragment"><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  {</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <a class="code" href="classSVF_1_1PAG.html#a49da7e7d6273a0d8798166f95ce6bb16">PAG::MemObjToFieldsMap</a> &memToFieldsMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#af47bff6b90ad3ff83e2b4bb16c2d39b1">getMemToFieldsMap</a>();</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <a class="code" href="classSVF_1_1PAG.html#a80b31ccc3263c7d5d93aa1247eea0853">PAG::NodeLocationSetMap</a> &GepObjNodeMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a4a25c75954a4c68104a7ebcaf35cb466">getGepObjNodeMap</a>();</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> </div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="comment">// collect each gep node whose base node has been set as field-insensitive</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> dropNodes;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: memToFieldsMap){</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = t.first;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* memObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a2b288fce8efa1b0b1b620efec2c96eb6">getObject</a>(base);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(memObj && <span class="stringliteral">"Invalid memobj in memToFieldsMap"</span>);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span> (memObj-><a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>()) {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> : t.second) {</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GepObjPN>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<span class="keywordtype">id</span>))) {</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  dropNodes.set(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keywordtype">id</span> == base && <span class="stringliteral">"Not a GepObj Node or a baseObj Node?"</span>);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  }</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> </div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="comment">// remove the collected redundant gep nodes in each pointers's pts</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PAG::iterator</a> nIter = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter) {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = nIter->first;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> </div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &tmpPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(n);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj : tmpPts) {</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">if</span> (!dropNodes.test(obj))</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> baseObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(obj);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a">clearPts</a>(n, obj);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(n, baseObj);</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  }</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// clear GepObjNodeMap and memToFieldsMap for redundant gepnodes</span></div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// and remove those nodes from pag</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n: dropNodes) {</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(n);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a> *gepNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a>>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(n));</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls = gepNode-><a class="code" href="classSVF_1_1GepObjPN.html#aeb05e3a512e89c7af36c675e0efeec7e">getLocationSet</a>();</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  GepObjNodeMap.erase(std::make_pair(base, ls));</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  memToFieldsMap[base].reset(n);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">removeGNode</a>(gepNode);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1812
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00402">402</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1813
|
+
<div class="fragment"><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <a class="code" href="classSVF_1_1PAG.html#a49da7e7d6273a0d8798166f95ce6bb16">PAG::MemObjToFieldsMap</a> &memToFieldsMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#af47bff6b90ad3ff83e2b4bb16c2d39b1">getMemToFieldsMap</a>();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <a class="code" href="classSVF_1_1PAG.html#a80b31ccc3263c7d5d93aa1247eea0853">PAG::NodeLocationSetMap</a> &GepObjNodeMap = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a4a25c75954a4c68104a7ebcaf35cb466">getGepObjNodeMap</a>();</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span> </div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="comment">// collect each gep node whose base node has been set as field-insensitive</span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> dropNodes;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: memToFieldsMap){</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = t.first;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* memObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a2b288fce8efa1b0b1b620efec2c96eb6">getObject</a>(base);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(memObj && <span class="stringliteral">"Invalid memobj in memToFieldsMap"</span>);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">if</span> (memObj-><a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>()) {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span> : t.second) {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GepObjPN>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<span class="keywordtype">id</span>))) {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  dropNodes.set(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  } <span class="keywordflow">else</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keywordtype">id</span> == base && <span class="stringliteral">"Not a GepObj Node or a baseObj Node?"</span>);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// remove the collected redundant gep nodes in each pointers's pts</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">PAG::iterator</a> nIter = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); nIter != <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); ++nIter) {</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = nIter->first;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span> </div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &tmpPts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(n);</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj : tmpPts) {</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span> (!dropNodes.test(obj))</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> baseObj = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(obj);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a3f78f60e1947a6d6fbcd3a0ee11e262a">clearPts</a>(n, obj);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(n, baseObj);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  }</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="comment">// clear GepObjNodeMap and memToFieldsMap for redundant gepnodes</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="comment">// and remove those nodes from pag</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n: dropNodes) {</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(n);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a> *gepNode = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a>>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(n));</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls = gepNode-><a class="code" href="classSVF_1_1GepObjPN.html#aeb05e3a512e89c7af36c675e0efeec7e">getLocationSet</a>();</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  GepObjNodeMap.erase(std::make_pair(base, ls));</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  memToFieldsMap[base].reset(n);</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span> </div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a1817b65e76052f11e36a67d6b9efd915">removeGNode</a>(gepNode);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
1811
1814
|
<div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00284">MemModel.h:284</a></div></div>
|
|
1812
1815
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1813
1816
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
@@ -1872,8 +1875,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1872
1875
|
<p>On the fly call graph construction. </p>
|
|
1873
1876
|
<p>On the fly call graph construction callsites is candidate indirect callsites need to be analyzed based on points-to results newEdges is the new indirect call edges discovered </p>
|
|
1874
1877
|
|
|
1875
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1876
|
-
<div class="fragment"><div class="line"><a name="
|
|
1878
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00381">381</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1879
|
+
<div class="fragment"><div class="line"><a name="l00382"></a><span class="lineno"> 382</span> {</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs = iter->first;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>())))</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *vtbl = <a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVFUtil::getLLVMCallSite</a>(cs-><a class="code" href="classSVF_1_1CallBlockNode.html#ad3d50024efcfa94b1246c982b43aff2f">getCallSite</a>()));</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae3cdf8c2139ba043595b420624f25427">hasValueNode</a>(vtbl));</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vtblId = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(vtbl);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac9f54859eabff4c1e1f5785d57a0c818">resolveCPPIndCalls</a>(cs, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(vtblId), newEdges);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a40738643202ca6301671f51da3fc1137">resolveIndCalls</a>(iter->first,<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(iter->second),newEdges);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span> }</div><div class="ttc" id="classSVF_1_1PAG_html_a5f49b7da110a626ed6605d1f108dfa25"><div class="ttname"><a href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">SVF::PAG::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get PAG Node according to LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00547">PAG.h:547</a></div></div>
|
|
1877
1880
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_aca6465c72effcaddeb34f55da4555754"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00256">CPPUtil.cpp:256</a></div></div>
|
|
1878
1881
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1879
1882
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
@@ -1915,11 +1918,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1915
1918
|
</div><div class="memdoc">
|
|
1916
1919
|
<p>Load pointer analysis result form a file. It populates <a class="el" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> with the points-to data, and updates <a class="el" href="classSVF_1_1PAG.html">PAG</a> with the <a class="el" href="classSVF_1_1PAG.html">PAG</a> offset nodes created during <a class="el" href="classSVF_1_1Andersen.html">Andersen</a>'s solving stage. </p>
|
|
1917
1920
|
|
|
1918
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1919
|
-
<div class="fragment"><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>  <span class="comment">// If the module annotations are available, read from there instead</span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keyword">auto</span> mainModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">if</span> (mainModule->getNamedMetadata(<span class="stringliteral">"PAG-Annotated"</span>) != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a857cdacfc8cafdeb1431bdfa077ef9b5">readFromModule</a>();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"Loading pointer analysis results from '"</span> << filename << <span class="stringliteral">"'..."</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>  ifstream F(filename.c_str());</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span> (!F.is_open())</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" error opening file for reading!\n"</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  }</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="comment">// Read analysis results from file</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#acfdb43f20bbcababc928cc4df93a8483">PTDataTy</a> *<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordtype">string</span> line;</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="comment">// Read points-to sets</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordtype">string</span> delimiter1 = <span class="stringliteral">" -> { "</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordtype">string</span> delimiter2 = <span class="stringliteral">" }"</span>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  map<NodeID, string> nodePtsMap;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  map<string, PointsTo> strPtsMap;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span> </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">while</span> (F.good())</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="comment">// Parse a single line in the form of "var -> { obj1 obj2 obj3 }"</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  getline(F, line);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordtype">size_t</span> pos = line.find(delimiter1);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span> (pos == string::npos) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">if</span> (line.back() != <span class="charliteral">'}'</span>) <span class="keywordflow">break</span>;</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>  <span class="comment">// var</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = atoi(line.substr(0, pos).c_str());</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="comment">// objs</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  pos = pos + delimiter1.length();</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordtype">size_t</span> len = line.length() - pos - delimiter2.length();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordtype">string</span> objs = line.substr(pos, len);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> dstPts;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span> </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span> (!objs.empty())</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>  <span class="comment">// map the variable ID to its unique string pointer set</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  nodePtsMap[var] = objs;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">if</span> (strPtsMap.count(objs)) <span class="keywordflow">continue</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>  istringstream ss(objs);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">while</span> (ss.good())</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  ss >> obj;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  dstPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(obj);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">// map the string pointer set to the parsed PointsTo set</span></div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  strPtsMap[objs] = dstPts;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">// map the variable ID to its pointer set</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: nodePtsMap)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  ptD->unionPts(t.first, strPtsMap[t.second]);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="comment">// Read PAG offset nodes</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keywordflow">while</span> (F.good())</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keywordflow">if</span> (line == <span class="stringliteral">"------"</span>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// Parse a single line in the form of "ID baseNodeID offset"</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  istringstream ss(line);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordtype">size_t</span> offset;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  ss >> <span class="keywordtype">id</span> >> base >> offset;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span> </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">getGepObjNode</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a2b288fce8efa1b0b1b620efec2c96eb6">getObject</a>(base), <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset));</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keywordtype">id</span> == n && <span class="stringliteral">"Error adding GepObjNode into PAG!"</span>);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  getline(F, line);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// Read BaseNode insensitivity</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">while</span> (F.good())</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  getline(F, line);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">// Parse a single line in the form of "baseNodeID insensitive"</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  istringstream ss(line);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">bool</span> insensitive;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  ss >> base >> insensitive;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span> </div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="keywordflow">if</span> (insensitive)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(base);</div><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">// Update callgraph</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a6a468180bff1e8f6143587546a2e7742">getIndirectCallsites</a>());</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  F.close();</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</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="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae94cea78b71fb75837ee2a17b5ed0e81"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">SVF::BVDataPTAImpl::getPTDataTy</a></div><div class="ttdeci">PTDataTy * getPTDataTy() const</div><div class="ttdoc">Get points-to data structure. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00161">PointerAnalysisImpl.h:161</a></div></div>
|
|
1921
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00190">190</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1922
|
+
<div class="fragment"><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">// If the module annotations are available, read from there instead</span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="keyword">auto</span> mainModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (mainModule->getNamedMetadata(<span class="stringliteral">"PAG-Annotated"</span>) != <span class="keyword">nullptr</span>)</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="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a857cdacfc8cafdeb1431bdfa077ef9b5">readFromModule</a>();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"Loading pointer analysis results from '"</span> << filename << <span class="stringliteral">"'..."</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  ifstream F(filename.c_str());</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">if</span> (!F.is_open())</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" error opening file for reading!\n"</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="comment">// Read analysis results from file</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#acfdb43f20bbcababc928cc4df93a8483">PTDataTy</a> *<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a> = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keywordtype">string</span> line;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// Read points-to sets</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">string</span> delimiter1 = <span class="stringliteral">" -> { "</span>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordtype">string</span> delimiter2 = <span class="stringliteral">" }"</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  map<NodeID, string> nodePtsMap;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  map<string, PointsTo> strPtsMap;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> </div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">while</span> (F.good())</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>  <span class="comment">// Parse a single line in the form of "var -> { obj1 obj2 obj3 }"</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  getline(F, line);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordtype">size_t</span> pos = line.find(delimiter1);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span> (pos == string::npos) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (line.back() != <span class="charliteral">'}'</span>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// var</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = atoi(line.substr(0, pos).c_str());</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span> </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="comment">// objs</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  pos = pos + delimiter1.length();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordtype">size_t</span> len = line.length() - pos - delimiter2.length();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordtype">string</span> objs = line.substr(pos, len);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> dstPts;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span> </div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keywordflow">if</span> (!objs.empty())</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// map the variable ID to its unique string pointer set</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  nodePtsMap[var] = objs;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">if</span> (strPtsMap.count(objs)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span> </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  istringstream ss(objs);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> obj;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">while</span> (ss.good())</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  ss >> obj;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  dstPts.<a class="code" href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">set</a>(obj);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="comment">// map the string pointer set to the parsed PointsTo set</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  strPtsMap[objs] = dstPts;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// map the variable ID to its pointer set</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> t: nodePtsMap)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  ptD->unionPts(t.first, strPtsMap[t.second]);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="comment">// Read PAG offset nodes</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">while</span> (F.good())</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span> (line == <span class="stringliteral">"------"</span>) <span class="keywordflow">break</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">// Parse a single line in the form of "ID baseNodeID offset"</span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  istringstream ss(line);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> id;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordtype">size_t</span> offset;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  ss >> <span class="keywordtype">id</span> >> base >> offset;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">getGepObjNode</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a2b288fce8efa1b0b1b620efec2c96eb6">getObject</a>(base), <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(offset));</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keywordtype">id</span> == n && <span class="stringliteral">"Error adding GepObjNode into PAG!"</span>);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  getline(F, line);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="comment">// Read BaseNode insensitivity</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">while</span> (F.good())</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  {</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  getline(F, line);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">// Parse a single line in the form of "baseNodeID insensitive"</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  istringstream ss(line);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordtype">bool</span> insensitive;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  ss >> base >> insensitive;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (insensitive)</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#ac5683fe2e24b393ccc5cb6d8bc92cf2b">setObjFieldInsensitive</a>(base);</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> </div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">// Update callgraph</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">updateCallGraph</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#a6a468180bff1e8f6143587546a2e7742">getIndirectCallsites</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>  F.close();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</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="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span> }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae94cea78b71fb75837ee2a17b5ed0e81"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">SVF::BVDataPTAImpl::getPTDataTy</a></div><div class="ttdeci">PTDataTy * getPTDataTy() const</div><div class="ttdoc">Get points-to data structure. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00161">PointerAnalysisImpl.h:161</a></div></div>
|
|
1920
1923
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
1921
1924
|
<div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
1922
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a857cdacfc8cafdeb1431bdfa077ef9b5"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a857cdacfc8cafdeb1431bdfa077ef9b5">SVF::BVDataPTAImpl::readFromModule</a></div><div class="ttdeci">virtual bool readFromModule()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#
|
|
1925
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_a857cdacfc8cafdeb1431bdfa077ef9b5"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#a857cdacfc8cafdeb1431bdfa077ef9b5">SVF::BVDataPTAImpl::readFromModule</a></div><div class="ttdeci">virtual bool readFromModule()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00315">PointerAnalysisImpl.cpp:315</a></div></div>
|
|
1923
1926
|
<div class="ttc" id="classSVF_1_1PAG_html_a2b288fce8efa1b0b1b620efec2c96eb6"><div class="ttname"><a href="classSVF_1_1PAG.html#a2b288fce8efa1b0b1b620efec2c96eb6">SVF::PAG::getObject</a></div><div class="ttdeci">const MemObj * getObject(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00589">PAG.h:589</a></div></div>
|
|
1924
1927
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00193">LLVMModule.h:193</a></div></div>
|
|
1925
1928
|
<div class="ttc" id="classSVF_1_1PAG_html_aad5fc74d2a9baf3630ba6546a74053e7"><div class="ttname"><a href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">SVF::PAG::getGepObjNode</a></div><div class="ttdeci">NodeID getGepObjNode(const MemObj *obj, const LocationSet &ls)</div><div class="ttdoc">Get a field PAG Object node according to base mem obj and offset. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00673">PAG.cpp:673</a></div></div>
|
|
@@ -1927,12 +1930,12 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1927
1930
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ab196d86cfb48d1c5d27a0c03c7497afa"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ab196d86cfb48d1c5d27a0c03c7497afa">SVF::PointsTo::set</a></div><div class="ttdeci">void set(u32_t n)</div><div class="ttdoc">Inserts n in the set. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00149">PointsTo.cpp:149</a></div></div>
|
|
1928
1931
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
|
|
1929
1932
|
<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#l00069">LLVMModule.h:69</a></div></div>
|
|
1930
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1933
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
1931
1934
|
<div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00093">LocationSet.h:93</a></div></div>
|
|
1932
1935
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_acfdb43f20bbcababc928cc4df93a8483"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#acfdb43f20bbcababc928cc4df93a8483">SVF::BVDataPTAImpl::PTDataTy</a></div><div class="ttdeci">PTData< NodeID, NodeSet, NodeID, PointsTo > PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00046">PointerAnalysisImpl.h:46</a></div></div>
|
|
1933
1936
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
|
|
1934
1937
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a8771956f7595b66d825b3dc459d1ae49"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static PAG * pag</div><div class="ttdoc">PAG. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1935
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aa534e475fa34fa322c567bc376a3da70"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">SVF::BVDataPTAImpl::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &)</div><div class="ttdoc">Update callgraph. This should be implemented by its subclass. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
1938
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aa534e475fa34fa322c567bc376a3da70"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aa534e475fa34fa322c567bc376a3da70">SVF::BVDataPTAImpl::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &)</div><div class="ttdoc">Update callgraph. This should be implemented by its subclass. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00171">PointerAnalysisImpl.h:171</a></div></div>
|
|
1936
1939
|
<div class="ttc" id="classSVF_1_1PAG_html_a6a468180bff1e8f6143587546a2e7742"><div class="ttname"><a href="classSVF_1_1PAG.html#a6a468180bff1e8f6143587546a2e7742">SVF::PAG::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap & getIndirectCallsites() const</div><div class="ttdoc">Add/get indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00484">PAG.h:484</a></div></div>
|
|
1937
1940
|
</div><!-- fragment -->
|
|
1938
1941
|
</div>
|
|
@@ -1961,8 +1964,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1961
1964
|
</div><div class="memdoc">
|
|
1962
1965
|
<p>Load pointer analysis result from the metadata in the module. It populates <a class="el" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a> with the points-to data, and updates <a class="el" href="classSVF_1_1PAG.html">PAG</a> with the <a class="el" href="classSVF_1_1PAG.html">PAG</a> offset nodes created during <a class="el" href="classSVF_1_1Andersen.html">Andersen</a>'s solving stage. </p>
|
|
1963
1966
|
|
|
1964
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1965
|
-
<div class="fragment"><div class="line"><a name="
|
|
1967
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00315">315</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1968
|
+
<div class="fragment"><div class="line"><a name="l00316"></a><span class="lineno"> 316</span> {</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keyword">auto</span> irAnnotator = std::make_unique<IRAnnotator>();</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  irAnnotator->processAndersenResults(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>, <span class="keyword">this</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span> }</div><div class="ttc" id="classSVF_1_1PointerAnalysis_html_a8771956f7595b66d825b3dc459d1ae49"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static PAG * pag</div><div class="ttdoc">PAG. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
1966
1969
|
</div><!-- fragment -->
|
|
1967
1970
|
</div>
|
|
1968
1971
|
</div>
|
|
@@ -1984,8 +1987,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
1984
1987
|
|
|
1985
1988
|
<p>Remap all points-to sets to use the current mapping. </p>
|
|
1986
1989
|
|
|
1987
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
1988
|
-
<div class="fragment"><div class="line"><a name="
|
|
1990
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00106">106</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
1991
|
+
<div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-><a class="code" href="classSVF_1_1PTData.html#af2f176027169e18730848c7a583aed93">remapAllPts</a>();</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ae94cea78b71fb75837ee2a17b5ed0e81"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">SVF::BVDataPTAImpl::getPTDataTy</a></div><div class="ttdeci">PTDataTy * getPTDataTy() const</div><div class="ttdoc">Get points-to data structure. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00161">PointerAnalysisImpl.h:161</a></div></div>
|
|
1989
1992
|
<div class="ttc" id="classSVF_1_1PTData_html_af2f176027169e18730848c7a583aed93"><div class="ttname"><a href="classSVF_1_1PTData.html#af2f176027169e18730848c7a583aed93">SVF::PTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void)=0</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div></div>
|
|
1990
1993
|
</div><!-- fragment -->
|
|
1991
1994
|
</div>
|
|
@@ -2029,7 +2032,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2029
2032
|
|
|
2030
2033
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00123">123</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
2031
2034
|
<div class="fragment"><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>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keywordtype">id</span>, target);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  }</div><div class="ttc" id="classSVF_1_1PTData_html_af7aa22f11558c12ff16612174e2221dd"><div class="ttname"><a href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">SVF::PTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &dstVar, const Key &srcVar)=0</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div></div>
|
|
2032
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
2035
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
2033
2036
|
</div><!-- fragment -->
|
|
2034
2037
|
</div>
|
|
2035
2038
|
</div>
|
|
@@ -2071,7 +2074,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2071
2074
|
|
|
2072
2075
|
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00127">127</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
2073
2076
|
<div class="fragment"><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="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">ptD</a>-><a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keywordtype">id</span>,ptd);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div><div class="ttc" id="classSVF_1_1PTData_html_af7aa22f11558c12ff16612174e2221dd"><div class="ttname"><a href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">SVF::PTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &dstVar, const Key &srcVar)=0</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div></div>
|
|
2074
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
2077
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee07488c4d53551826439d79b28e2e6d"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee07488c4d53551826439d79b28e2e6d">SVF::BVDataPTAImpl::ptD</a></div><div class="ttdeci">PTDataTy * ptD</div><div class="ttdoc">Points-to data. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00214">PointerAnalysisImpl.h:214</a></div></div>
|
|
2075
2078
|
</div><!-- fragment -->
|
|
2076
2079
|
</div>
|
|
2077
2080
|
</div>
|
|
@@ -2103,8 +2106,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2103
2106
|
|
|
2104
2107
|
<p>Reimplemented in <a class="el" href="classSVF_1_1Andersen.html#a6c60b761ddf3d6bf08c8a9c3f6fd9f0b">SVF::Andersen</a>, <a class="el" href="classSVF_1_1FlowSensitive.html#a9d81537ec20196315a9a2541477ec5bf">SVF::FlowSensitive</a>, <a class="el" href="classSVF_1_1AndersenSCD.html#a512c636bdaafe6a3ac8f0cc29392c573">SVF::AndersenSCD</a>, and <a class="el" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">SVF::AndersenBase</a>.</p>
|
|
2105
2108
|
|
|
2106
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#
|
|
2107
|
-
<div class="fragment"><div class="line"><a name="
|
|
2109
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00171">171</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
2110
|
+
<div class="fragment"><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"Virtual function not implemented!"</span>);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
|
|
2108
2111
|
</div><!-- fragment -->
|
|
2109
2112
|
</div>
|
|
2110
2113
|
</div>
|
|
@@ -2135,14 +2138,14 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2135
2138
|
<p>Interface for analysis result storage on filesystem. </p>
|
|
2136
2139
|
<p>Store pointer analysis result into a file. It includes the points-to relations, and all <a class="el" href="classSVF_1_1PAG.html">PAG</a> nodes including those created when solving <a class="el" href="classSVF_1_1Andersen.html">Andersen</a>'s constraints. </p>
|
|
2137
2140
|
|
|
2138
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
2139
|
-
<div class="fragment"><div class="line"><a name="l00110"></a><span class="lineno"> 110</span> {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aa0ca07204a31004fb876c6e18d1ac1ca">writeToModule</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"Storing pointer analysis results to '"</span> << filename << <span class="stringliteral">"'..."</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  error_code err;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">ToolOutputFile</a> F(filename.c_str(), err, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" error opening file for writing!\n"</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  F.os().clear_error();</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  }</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// Write analysis results to file</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it) {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = it->first;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &pts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(var);</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>  stringstream ss;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  F.os() << var << <span class="stringliteral">" -> { "</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>()) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  F.os() << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n: pts) {</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  F.os() << n << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  F.os() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="comment">// Write GepPAGNodes to file</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* pagNode = it->second;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a> *gepObjPN = SVFUtil::dyn_cast<GepObjPN>(pagNode))</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>  F.os() << it->first << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  F.os() << <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(it->first) << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  F.os() << gepObjPN->getLocationSet().getOffset() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</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>  F.os() << <span class="stringliteral">"------\n"</span>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// Write BaseNodes insensitivity to file</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> NodeIDs;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* pagNode = it->second;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span> (!isa<ObjPN>(pagNode)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(it->first);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (NodeIDs.test(n)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  F.os() << n << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  F.os() << <a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(n) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  NodeIDs.set(n);</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> </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// Job finish and close file</span></div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  F.os().close();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (!F.os().has_error())</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  F.keep();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
2141
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00116">116</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
2142
|
+
<div class="fragment"><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aa0ca07204a31004fb876c6e18d1ac1ca">writeToModule</a>();</div><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>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"Storing pointer analysis results to '"</span> << filename << <span class="stringliteral">"'..."</span>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  error_code err;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">ToolOutputFile</a> F(filename.c_str(), err, llvm::sys::fs::OF_None);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span> (err)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">" error opening file for writing!\n"</span>;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  F.os().clear_error();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// Write analysis results to file</span></div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it) {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> var = it->first;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &pts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(var);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  stringstream ss;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  F.os() << var << <span class="stringliteral">" -> { "</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span> (pts.<a class="code" href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">empty</a>()) {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  F.os() << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n: pts) {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  F.os() << n << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  F.os() << <span class="stringliteral">"}\n"</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</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> </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="comment">// Write GepPAGNodes to file</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* pagNode = it->second;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a> *gepObjPN = SVFUtil::dyn_cast<GepObjPN>(pagNode))</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>  F.os() << it->first << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  F.os() << <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(it->first) << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  F.os() << gepObjPN->getLocationSet().getOffset() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  }</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span> </div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  F.os() << <span class="stringliteral">"------\n"</span>;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// Write BaseNodes insensitivity to file</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> NodeIDs;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), ie = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != ie; ++it)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* pagNode = it->second;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">if</span> (!isa<ObjPN>(pagNode)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> n = <a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>-><a class="code" href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">getBaseObjNode</a>(it->first);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (NodeIDs.test(n)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  F.os() << n << <span class="stringliteral">" "</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  F.os() << <a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(n) << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  NodeIDs.set(n);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// Job finish and close file</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  F.os().close();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> (!F.os().has_error())</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  F.keep();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> }</div><div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
|
|
2140
2143
|
<div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
|
|
2141
2144
|
<div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
|
|
2142
2145
|
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aee289e298e421448caaa604b7eb34fcb"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">SVF::BVDataPTAImpl::getPts</a></div><div class="ttdeci">virtual const PointsTo & getPts(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00098">PointerAnalysisImpl.h:98</a></div></div>
|
|
2143
2146
|
<div class="ttc" id="classSVF_1_1PointsTo_html_ac4688413177b49b37dbbfd3ed188d59b"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ac4688413177b49b37dbbfd3ed188d59b">SVF::PointsTo::empty</a></div><div class="ttdeci">bool empty(void) const</div><div class="ttdoc">Returns true if set is empty. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00094">PointsTo.cpp:94</a></div></div>
|
|
2144
2147
|
<div class="ttc" id="namespaceSVF_html_acde6a1d496f1b655088ccbe023820277"><div class="ttname"><a href="namespaceSVF.html#acde6a1d496f1b655088ccbe023820277">SVF::ToolOutputFile</a></div><div class="ttdeci">llvm::ToolOutputFile ToolOutputFile</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
2145
|
-
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aa0ca07204a31004fb876c6e18d1ac1ca"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aa0ca07204a31004fb876c6e18d1ac1ca">SVF::BVDataPTAImpl::writeToModule</a></div><div class="ttdeci">virtual void writeToModule()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#
|
|
2148
|
+
<div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_aa0ca07204a31004fb876c6e18d1ac1ca"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#aa0ca07204a31004fb876c6e18d1ac1ca">SVF::BVDataPTAImpl::writeToModule</a></div><div class="ttdeci">virtual void writeToModule()</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8cpp_source.html#l00302">PointerAnalysisImpl.cpp:302</a></div></div>
|
|
2146
2149
|
<div class="ttc" id="classSVF_1_1PAG_html_ae1e22e620954e3e9ede3f2bf0ac90c36"><div class="ttname"><a href="classSVF_1_1PAG.html#ae1e22e620954e3e9ede3f2bf0ac90c36">SVF::PAG::getBaseObjNode</a></div><div class="ttdeci">NodeID getBaseObjNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00717">PAG.h:717</a></div></div>
|
|
2147
2150
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a85ab6b592fefc45a0674d3295e01638f"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">SVF::SVFUtil::outs</a></div><div class="ttdeci">raw_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>
|
|
2148
2151
|
<div class="ttc" id="classSVF_1_1PAGNode_html"><div class="ttname"><a href="classSVF_1_1PAGNode.html">SVF::PAGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00046">PAGNode.h:46</a></div></div>
|
|
@@ -2178,8 +2181,8 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2178
2181
|
</div><div class="memdoc">
|
|
2179
2182
|
<p>Store pointer analysis result into the current LLVM module as metadata. It includes the points-to relations, and all <a class="el" href="classSVF_1_1PAG.html">PAG</a> nodes including those created when solving <a class="el" href="classSVF_1_1Andersen.html">Andersen</a>'s constraints. </p>
|
|
2180
2183
|
|
|
2181
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#
|
|
2182
|
-
<div class="fragment"><div class="line"><a name="
|
|
2184
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8cpp_source.html#l00302">302</a> of file <a class="el" href="PointerAnalysisImpl_8cpp_source.html">PointerAnalysisImpl.cpp</a>.</p>
|
|
2185
|
+
<div class="fragment"><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">auto</span> irAnnotator = std::make_unique<IRAnnotator>();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keyword">auto</span> mainModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">getMainLLVMModule</a>();</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>  irAnnotator->processAndersenResults(<a class="code" href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">pag</a>, <span class="keyword">this</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> }</div><div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a9fe3fa15a6a0ec25864cb8439a45596e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a9fe3fa15a6a0ec25864cb8439a45596e">SVF::LLVMModuleSet::getMainLLVMModule</a></div><div class="ttdeci">Module * getMainLLVMModule() const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00193">LLVMModule.h:193</a></div></div>
|
|
2183
2186
|
<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#l00069">LLVMModule.h:69</a></div></div>
|
|
2184
2187
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a8771956f7595b66d825b3dc459d1ae49"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a8771956f7595b66d825b3dc459d1ae49">SVF::PointerAnalysis::pag</a></div><div class="ttdeci">static PAG * pag</div><div class="ttdoc">PAG. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00147">PointerAnalysis.h:147</a></div></div>
|
|
2185
2188
|
</div><!-- fragment -->
|
|
@@ -2206,7 +2209,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2206
2209
|
</table>
|
|
2207
2210
|
</div><div class="memdoc">
|
|
2208
2211
|
|
|
2209
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#
|
|
2212
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00216">216</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
2210
2213
|
|
|
2211
2214
|
</div>
|
|
2212
2215
|
</div>
|
|
@@ -2232,7 +2235,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
2232
2235
|
|
|
2233
2236
|
<p>Points-to data. </p>
|
|
2234
2237
|
|
|
2235
|
-
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#
|
|
2238
|
+
<p class="definition">Definition at line <a class="el" href="PointerAnalysisImpl_8h_source.html#l00214">214</a> of file <a class="el" href="PointerAnalysisImpl_8h_source.html">PointerAnalysisImpl.h</a>.</p>
|
|
2236
2239
|
|
|
2237
2240
|
</div>
|
|
2238
2241
|
</div>
|