svf-tools 1.0.310 → 1.0.314
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/AndersenHCD_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +6 -6
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +21 -21
- package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/Andersen_8cpp.html +1 -0
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +58 -56
- package/SVF-doxygen/html/html/Andersen_8h_source.html +118 -118
- package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +49 -50
- package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +17 -16
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +16 -16
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/ConsG_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +10 -10
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
- package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +3 -3
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +5 -5
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +82 -81
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/ICFG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +4 -4
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemModelBuilder_8cpp.html +90 -0
- package/SVF-doxygen/html/html/MemModelBuilder_8cpp_source.html +205 -0
- package/SVF-doxygen/html/html/MemModelBuilder_8h.html +97 -0
- package/SVF-doxygen/html/html/MemModelBuilder_8h_source.html +105 -0
- package/SVF-doxygen/html/html/MemModel_8cpp_source.html +9 -53
- package/SVF-doxygen/html/html/MemModel_8h_source.html +44 -44
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +12 -12
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -2
- package/SVF-doxygen/html/html/Options_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +25 -25
- package/SVF-doxygen/html/html/PAGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PAGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PAGNode_8h_source.html +11 -11
- package/SVF-doxygen/html/html/PAG_8cpp_source.html +34 -34
- package/SVF-doxygen/html/html/PAG_8h_source.html +41 -41
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +24 -24
- package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +34 -33
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +7 -7
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +66 -66
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFG_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SVFModule_8cpp.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +6 -5
- package/SVF-doxygen/html/html/SVFModule_8h.html +3 -0
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +53 -46
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +5 -55
- package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +0 -4
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +88 -101
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +135 -136
- 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_1ActualParmVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +228 -228
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +60 -58
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +38 -38
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +73 -72
- 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-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +123 -120
- package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjPN.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_1ConstraintGraph.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +5 -5
- 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_1FunptrDDAClient.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +58 -57
- package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
- 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 +1 -1
- 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 +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocObjTypeInfo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LocSymTableInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MemModelBuilder-members.html +95 -0
- package/SVF-doxygen/html/html/classSVF_1_1MemModelBuilder.html +711 -0
- package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +7 -10
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +92 -199
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +8 -10
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +68 -168
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PAG.html +67 -67
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +41 -41
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PAGEdge.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PAGNode.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +39 -38
- package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +153 -116
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule-members.html +1 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +113 -80
- package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +49 -55
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +300 -587
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.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 +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +11 -11
- package/SVF-doxygen/html/html/classes.html +91 -91
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/dir_5840dc76920ee0f379cd88b55fa041fd.html +1 -1
- package/SVF-doxygen/html/html/dir_770a542efe75a1b68c109cb4e4290224.html +1 -1
- package/SVF-doxygen/html/html/files.html +2 -2
- package/SVF-doxygen/html/html/functions_0x7e.html +5 -8
- package/SVF-doxygen/html/html/functions_a.html +13 -10
- package/SVF-doxygen/html/html/functions_b.html +1 -1
- package/SVF-doxygen/html/html/functions_c.html +38 -36
- package/SVF-doxygen/html/html/functions_e.html +1 -1
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +12 -9
- package/SVF-doxygen/html/html/functions_func_0x7e.html +5 -8
- package/SVF-doxygen/html/html/functions_func_b.html +1 -1
- package/SVF-doxygen/html/html/functions_func_c.html +28 -26
- package/SVF-doxygen/html/html/functions_func_e.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +11 -13
- package/SVF-doxygen/html/html/functions_func_h.html +3 -3
- package/SVF-doxygen/html/html/functions_func_i.html +8 -7
- package/SVF-doxygen/html/html/functions_func_l.html +2 -8
- package/SVF-doxygen/html/html/functions_func_m.html +4 -1
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_func_s.html +8 -5
- package/SVF-doxygen/html/html/functions_func_v.html +0 -3
- package/SVF-doxygen/html/html/functions_g.html +6 -8
- package/SVF-doxygen/html/html/functions_h.html +3 -3
- package/SVF-doxygen/html/html/functions_i.html +15 -14
- package/SVF-doxygen/html/html/functions_l.html +6 -10
- package/SVF-doxygen/html/html/functions_m.html +5 -1
- package/SVF-doxygen/html/html/functions_n.html +4 -4
- package/SVF-doxygen/html/html/functions_o.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +13 -9
- package/SVF-doxygen/html/html/functions_r.html +1 -1
- package/SVF-doxygen/html/html/functions_rela.html +3 -0
- package/SVF-doxygen/html/html/functions_s.html +20 -14
- package/SVF-doxygen/html/html/functions_t.html +4 -4
- package/SVF-doxygen/html/html/functions_u.html +3 -3
- package/SVF-doxygen/html/html/functions_v.html +2 -5
- package/SVF-doxygen/html/html/functions_vars_l.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_s.html +2 -1
- package/SVF-doxygen/html/html/functions_w.html +3 -1
- package/SVF-doxygen/html/html/hierarchy.html +127 -128
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +1 -3
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +40 -39
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +3 -2
- package/SVF-doxygen/html/html/search/all_10.js +9 -9
- package/SVF-doxygen/html/html/search/all_12.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +9 -8
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_15.js +2 -2
- package/SVF-doxygen/html/html/search/all_16.js +0 -1
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1b.js +3 -4
- package/SVF-doxygen/html/html/search/all_2.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +11 -10
- package/SVF-doxygen/html/html/search/all_5.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_7.js +2 -2
- package/SVF-doxygen/html/html/search/all_8.js +3 -3
- package/SVF-doxygen/html/html/search/all_9.js +4 -3
- package/SVF-doxygen/html/html/search/all_c.js +4 -7
- package/SVF-doxygen/html/html/search/all_d.js +4 -1
- package/SVF-doxygen/html/html/search/all_e.js +2 -2
- package/SVF-doxygen/html/html/search/all_f.js +1 -1
- package/SVF-doxygen/html/html/search/classes_9.js +1 -3
- package/SVF-doxygen/html/html/search/classes_a.js +1 -0
- package/SVF-doxygen/html/html/search/files_8.js +1 -3
- package/SVF-doxygen/html/html/search/files_9.js +2 -0
- package/SVF-doxygen/html/html/search/functions_0.js +3 -2
- package/SVF-doxygen/html/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +1 -0
- package/SVF-doxygen/html/html/search/functions_13.js +0 -1
- package/SVF-doxygen/html/html/search/functions_16.js +3 -4
- package/SVF-doxygen/html/html/search/functions_2.js +10 -9
- package/SVF-doxygen/html/html/search/functions_4.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +2 -2
- package/SVF-doxygen/html/html/search/functions_7.js +3 -3
- package/SVF-doxygen/html/html/search/functions_8.js +2 -1
- package/SVF-doxygen/html/html/search/functions_a.js +1 -3
- package/SVF-doxygen/html/html/search/functions_b.js +2 -1
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/related_3.js +1 -0
- package/SVF-doxygen/html/html/search/variables_13.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +12 -12
- 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_01OfflineConsG_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html +17 -17
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +14 -14
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +20 -20
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +8 -7
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +6 -5
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/Graphs/GenericGraph.h +5 -8
- package/include/MemoryModel/MemModel.h +5 -21
- package/include/MemoryModel/PersistentPointsToCache.h +13 -7
- package/include/MemoryModel/PointerAnalysisImpl.h +1 -0
- package/include/SVF-FE/CHG.h +1 -1
- package/include/SVF-FE/MemModelBuilder.h +102 -0
- package/include/SVF-FE/SymbolTableInfo.h +12 -79
- package/include/Util/NodeIDAllocator.h +1 -1
- package/include/Util/SVFModule.h +16 -0
- package/include/WPA/Andersen.h +2 -7
- package/lib/Graphs/PAG.cpp +3 -10
- package/lib/MemoryModel/MemModel.cpp +10 -436
- package/lib/SVF-FE/CHG.cpp +0 -6
- package/lib/SVF-FE/CPPUtil.cpp +2 -0
- package/lib/SVF-FE/MemModelBuilder.cpp +616 -0
- package/lib/SVF-FE/SymbolTableInfo.cpp +10 -453
- package/lib/Util/NodeIDAllocator.cpp +2 -1
- package/lib/Util/Options.cpp +2 -10
- package/lib/Util/SVFModule.cpp +3 -2
- package/lib/WPA/Andersen.cpp +13 -1
- package/package.json +1 -1
- package/tools/Example/svf-ex.cpp +6 -3
- package/include/SVF-FE/LocMemModel.h +0 -35
- package/lib/SVF-FE/LocMemModel.cpp +0 -31
|
@@ -66,7 +66,7 @@ $(function() {
|
|
|
66
66
|
<div class="title">DDAPass.cpp</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="DDAPass_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * @file: DDAPass.cpp</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * @author: Yulei Sui</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * @date: 01/07/2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "<a class="code" href="DDAPass_8h.html">DDA/DDAPass.h</a>"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="FlowDDA_8h.html">DDA/FlowDDA.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "<a class="code" href="ContextDDA_8h.html">DDA/ContextDDA.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "<a class="code" href="DDAClient_8h.html">DDA/DDAClient.h</a>"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "<a class="code" href="PAGBuilder_8h.html">SVF-FE/PAGBuilder.h</a>"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <limits.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keywordtype">char</span> <a class="code" href="classSVF_1_1DDAPass.html#adb39fc24e3d45e558ac36f37b5dc3565">DDAPass::ID</a> = 0;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">static</span> llvm::RegisterPass<DDAPass> <a class="code" href="DDAPass_8cpp.html#ac357f2ea0af7849dfa394f4bf2be3d9a">DDAPA</a>(<span class="stringliteral">"dda"</span>, <span class="stringliteral">"Demand-driven Pointer Analysis Pass"</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#adc8e3d685a1fbb9731040a8ceb4f4202"> 26</a></span> <a class="code" href="classSVF_1_1DDAPass.html#adc8e3d685a1fbb9731040a8ceb4f4202">DDAPass::~DDAPass</a>()</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="comment">// _pta->dumpStat();</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span> (_client != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">delete</span> _client;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#af196994d6ec7f5cead72212407842103"> 34</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#af196994d6ec7f5cead72212407842103">DDAPass::runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">//InitializeAliasAnalysis(this, SymbolTableInfo::getDataLayout(&module));</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  selectClient(module);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">PointerAnalysis::FlowS_DDA</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  i < <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">PointerAnalysis::Default_PTA</a>; i++)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a2203f622ab539b3a38488575c9eec33b">Options::DDASelected</a>.isSet(i))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  runPointerAnalysis(module, i);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a7bc2c9a62b7d97b8e19bee0c4625aea3"> 49</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAPass.html#af196994d6ec7f5cead72212407842103">DDAPass::runOnModule</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& module)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae919327019b5014f64b754dbdeb07f75">buildSVFModule</a>(module);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  runOnModule(svfModule);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842"> 57</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842">DDAPass::selectClient</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a>.<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>())</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a> == <span class="stringliteral">"funptr"</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  _client = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FunptrDDAClient.html">FunptrDDAClient</a>(module);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a> == <span class="stringliteral">"alias"</span>)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  _client = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AliasDDAClient.html">AliasDDAClient</a>(module);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  _client = <span class="keyword">new</span> <a class="code" href="classSVF_1_1DDAClient.html">DDAClient</a>(module);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a> != <span class="stringliteral">"all"</span>)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> buf; <span class="comment">// Have a buffer</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  stringstream ss(<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a>); <span class="comment">// Insert the user input string into a stream</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">while</span> (ss >> buf)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  _client->setQuery(buf);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"Please specify query options!"</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  _client->initialise(module);</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="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a13ff3107a0e4f8749b166fa9b8165167"> 93</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#a13ff3107a0e4f8749b166fa9b8165167">DDAPass::runPointerAnalysis</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> kind)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1PAGBuilder.html">PAGBuilder</a> builder;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = builder.<a class="code" href="classSVF_1_1PAGBuilder.html#a757ab2c9481467842e1ad4c46a1f6291">build</a>(module);</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>  <a class="code" href="classSVF_1_1ContextCond.html#a084679a423e78217ca10794775c25b1d">ContextCond::setMaxPathLen</a>(<a class="code" href="classSVF_1_1Options.html#a32ef95b3bd06b50337b3129b74ffb45c">Options::MaxPathLen</a>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="classSVF_1_1ContextCond.html#a92e89bbae0f31bb9eb971ab3edcc8071">ContextCond::setMaxCxtLen</a>(<a class="code" href="classSVF_1_1Options.html#a2e53156bd075d7802d390672f129c6a8">Options::MaxContextLen</a>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">switch</span> (kind)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">PointerAnalysis::Cxt_DDA</a>:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  _pta = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ContextDDA.html">ContextDDA</a>(pag, _client);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">PointerAnalysis::FlowS_DDA</a>:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  _pta = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowDDA.html">FlowDDA</a>(pag, _client);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">break</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"This pointer analysis has not been implemented yet.\n"</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">break</span>;</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> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a0865038c4738fcc8f47106faad03d98a">Options::WPANum</a>)</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>  _client->collectWPANum(module);</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="keywordflow">else</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  _pta->initialize();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  _client->answerQueries(_pta);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  _pta->finalize();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aee5e47ee3ca9bacb514f9dfbcb3abf24">Options::PrintCPts</a>)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  _pta->dumpCPts();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span> (_pta->printStat())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  _client->performStat(_pta);</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>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#aabfcfcd67df527cdf587aff5ecc26a10">Options::PrintQueryPts</a>)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  printQueryPTS();</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> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#add44aee75c9a59327b4eb46774551e2b"> 147</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#add44aee75c9a59327b4eb46774551e2b">DDAPass::initCxtInsensitiveEdges</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* svfg,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SCCDetection.html">SVFGSCC</a>* svfgSCC, <a class="code" href="classSVF_1_1DDAPass.html#acc81a1f7ad572fa27648999334479f56">SVFGEdgeSet</a>& insensitveEdges)</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="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aa1a3b9293dffeef1bb16a2a7b3a007dd">Options::InsenRecur</a>)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  collectCxtInsenEdgeForRecur(pta,svfg,insensitveEdges);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a35cfe6add81dc82983e0c53c36c6e667">Options::InsenCycle</a>)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  collectCxtInsenEdgeForVFCycle(pta,svfg,svfgSCC,insensitveEdges);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a3810708c5e2695d2a0e36084b589e432"> 158</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAPass.html#a3810708c5e2695d2a0e36084b589e432">DDAPass::edgeInSVFGSCC</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SCCDetection.html">SVFGSCC</a>* svfgSCC,<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</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>  <span class="keywordflow">return</span> (svfgSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) == svfgSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#aab60429398a89ec1c8663a305130376f"> 166</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAPass.html#aab60429398a89ec1c8663a305130376f">DDAPass::edgeInCallGraphSCC</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta,<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</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="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(srcFun && dstFun)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#ae58c2b25494ec51e714c83c6cfd5dd67">inSameCallGraphSCC</a>(srcFun,dstFun);</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> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>() == <span class="keyword">false</span> && <span class="stringliteral">"should not be an inter-procedural return edge"</span> );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#af8bc7f84e7dc8c7032eec6162a837ba6"> 184</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#af8bc7f84e7dc8c7032eec6162a837ba6">DDAPass::collectCxtInsenEdgeForRecur</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* svfg,<a class="code" href="classSVF_1_1DDAPass.html#acc81a1f7ad572fa27648999334479f56">SVFGEdgeSet</a>& insensitveEdges)</div><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> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">for</span> (SVFG::SVFGNodeIDToNodeMapTy::const_iterator it = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),eit = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *edgeIt;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() || edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(edgeInCallGraphSCC(pta,edge))</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  insensitveEdges.insert(edge);</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>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#af03661604ba924d1c3fd34a231ba87a6"> 207</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#af03661604ba924d1c3fd34a231ba87a6">DDAPass::collectCxtInsenEdgeForVFCycle</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* svfg,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SCCDetection.html">SVFGSCC</a>* svfgSCC, <a class="code" href="classSVF_1_1DDAPass.html#acc81a1f7ad572fa27648999334479f56">SVFGEdgeSet</a>& insensitveEdges)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<NodePair></a> insensitvefunPairs;</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="keywordflow">for</span> (SVFG::SVFGNodeIDToNodeMapTy::const_iterator it = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),eit = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</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="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *edgeIt;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() || edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(this->edgeInSVFGSCC(svfgSCC,edge))</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getICFGNode()->getFun();</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>(srcFun && dstFun)</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>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(srcFun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(dstFun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  insensitvefunPairs.insert(std::make_pair(src,dst));</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  insensitvefunPairs.insert(std::make_pair(dst,src));</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">else</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>() == <span class="keyword">false</span> && <span class="stringliteral">"should not be an inter-procedural return edge"</span> );</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">for</span>(SVFG::SVFGNodeIDToNodeMapTy::const_iterator it = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),eit = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != eit; ++it)</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>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</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="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *edgeIt;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() || edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</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>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>(srcFun && dstFun)</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>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(srcFun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(dstFun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>(insensitvefunPairs.find(std::make_pair(src,dst))!=insensitvefunPairs.end())</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  insensitveEdges.insert(edge);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(insensitvefunPairs.find(std::make_pair(dst,src))!=insensitvefunPairs.end())</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  insensitveEdges.insert(edge);</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>  }</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> }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a96de481dd2af7b39428aff38158c1d4e"> 269</a></span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1DDAPass.html#a0a39a0f3e530a97a38dbfe0d9f04ec33">DDAPass::alias</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node2)</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>  <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = _pta-><a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">getPAG</a>();</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>  <span class="keywordflow">if</span>(pag-><a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">isValidTopLevelPtr</a>(pag-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(node1)))</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  _pta->computeDDAPts(node1);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(pag-><a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">isValidTopLevelPtr</a>(pag-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(node2)))</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  _pta->computeDDAPts(node2);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> _pta->alias(node1,node2);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a242575c5bd8a8f17fdc802e5ba80e7b0"> 285</a></span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1DDAPass.html#a0a39a0f3e530a97a38dbfe0d9f04ec33">DDAPass::alias</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2)</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>  <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = _pta-><a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">getPAG</a>();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (pag-><a class="code" href="classSVF_1_1PAG.html#ae3cdf8c2139ba043595b420624f25427">hasValueNode</a>(V1) && pag-><a class="code" href="classSVF_1_1PAG.html#ae3cdf8c2139ba043595b420624f25427">hasValueNode</a>(V2))</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node1 = pag-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(pag-><a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(V1));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span>(pag-><a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">isValidTopLevelPtr</a>(node1))</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  _pta->computeDDAPts(node1-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node2 = pag-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(pag-><a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(V2));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span>(pag-><a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">isValidTopLevelPtr</a>(node2))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  _pta->computeDDAPts(node2-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> _pta->alias(V1,V2);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> llvm::AliasResult::MayAlias;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#afc700bd3abb5d9199621741b9bd04f0f"> 313</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#afc700bd3abb5d9199621741b9bd04f0f">DDAPass::printQueryPTS</a>()</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a>& candidates = _client->getCandidateQueries();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">for</span> (OrderedNodeSet::const_iterator it = candidates.begin(), eit = candidates.end(); it != eit; ++it)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& pts = _pta->getPts(*it);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  _pta->dumpPts(*it,pts);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</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>
|
|
69
|
+
<a href="DDAPass_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * @file: DDAPass.cpp</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * @author: Yulei Sui</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * @date: 01/07/2014</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include "<a class="code" href="DDAPass_8h.html">DDA/DDAPass.h</a>"</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include "<a class="code" href="FlowDDA_8h.html">DDA/FlowDDA.h</a>"</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "<a class="code" href="ContextDDA_8h.html">DDA/ContextDDA.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include "<a class="code" href="DDAClient_8h.html">DDA/DDAClient.h</a>"</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "<a class="code" href="PAGBuilder_8h.html">SVF-FE/PAGBuilder.h</a>"</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <sstream></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include <limits.h></span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keywordtype">char</span> <a class="code" href="classSVF_1_1DDAPass.html#adb39fc24e3d45e558ac36f37b5dc3565">DDAPass::ID</a> = 0;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">static</span> llvm::RegisterPass<DDAPass> <a class="code" href="DDAPass_8cpp.html#ac357f2ea0af7849dfa394f4bf2be3d9a">DDAPA</a>(<span class="stringliteral">"dda"</span>, <span class="stringliteral">"Demand-driven Pointer Analysis Pass"</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#adc8e3d685a1fbb9731040a8ceb4f4202"> 26</a></span> <a class="code" href="classSVF_1_1DDAPass.html#adc8e3d685a1fbb9731040a8ceb4f4202">DDAPass::~DDAPass</a>()</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="comment">// _pta->dumpStat();</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">if</span> (_client != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keyword">delete</span> _client;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> }</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#af196994d6ec7f5cead72212407842103"> 34</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#af196994d6ec7f5cead72212407842103">DDAPass::runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">//InitializeAliasAnalysis(this, SymbolTableInfo::getDataLayout(&module));</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  selectClient(module);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">PointerAnalysis::FlowS_DDA</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  i < <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">PointerAnalysis::Default_PTA</a>; i++)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a2203f622ab539b3a38488575c9eec33b">Options::DDASelected</a>.isSet(i))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  runPointerAnalysis(module, i);</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a7bc2c9a62b7d97b8e19bee0c4625aea3"> 49</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAPass.html#af196994d6ec7f5cead72212407842103">DDAPass::runOnModule</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>& module)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> {</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae919327019b5014f64b754dbdeb07f75">buildSVFModule</a>(module);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  runOnModule(svfModule);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842"> 57</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#aa33694e0b5f30c451c229e92877e4842">DDAPass::selectClient</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a>.<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>())</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a> == <span class="stringliteral">"funptr"</span>)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  _client = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FunptrDDAClient.html">FunptrDDAClient</a>(module);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a> == <span class="stringliteral">"alias"</span>)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  _client = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AliasDDAClient.html">AliasDDAClient</a>(module);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  _client = <span class="keyword">new</span> <a class="code" href="classSVF_1_1DDAClient.html">DDAClient</a>(module);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a> != <span class="stringliteral">"all"</span>)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> buf; <span class="comment">// Have a buffer</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  stringstream ss(<a class="code" href="classSVF_1_1Options.html#a3c3d704c209c4e6eed1a771caf8214ce">Options::UserInputQuery</a>); <span class="comment">// Insert the user input string into a stream</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">while</span> (ss >> buf)</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  _client->setQuery(buf);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  }</div><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>  <span class="keywordflow">else</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> && <span class="stringliteral">"Please specify query options!"</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  _client->initialise(module);</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="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a13ff3107a0e4f8749b166fa9b8165167"> 93</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#a13ff3107a0e4f8749b166fa9b8165167">DDAPass::runPointerAnalysis</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> kind)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> {</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <a class="code" href="classSVF_1_1PAGBuilder.html">PAGBuilder</a> builder;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = builder.<a class="code" href="classSVF_1_1PAGBuilder.html#a757ab2c9481467842e1ad4c46a1f6291">build</a>(module);</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>  <a class="code" href="classSVF_1_1ContextCond.html#a084679a423e78217ca10794775c25b1d">ContextCond::setMaxPathLen</a>(<a class="code" href="classSVF_1_1Options.html#a32ef95b3bd06b50337b3129b74ffb45c">Options::MaxPathLen</a>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="classSVF_1_1ContextCond.html#a92e89bbae0f31bb9eb971ab3edcc8071">ContextCond::setMaxCxtLen</a>(<a class="code" href="classSVF_1_1Options.html#a2e53156bd075d7802d390672f129c6a8">Options::MaxContextLen</a>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">switch</span> (kind)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a0ab6564c48897595c9d23382a026e0a8">PointerAnalysis::Cxt_DDA</a>:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  _pta = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ContextDDA.html">ContextDDA</a>(pag, _client);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85aa43c83e2f0df003c158d4b1325b50b18">PointerAnalysis::FlowS_DDA</a>:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  _pta = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowDDA.html">FlowDDA</a>(pag, _client);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">break</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>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() << <span class="stringliteral">"This pointer analysis has not been implemented yet.\n"</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keywordflow">break</span>;</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> </div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a0865038c4738fcc8f47106faad03d98a">Options::WPANum</a>)</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>  _client->collectWPANum(module);</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="keywordflow">else</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  _pta->initialize();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  _client->answerQueries(_pta);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  _pta->finalize();</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aee5e47ee3ca9bacb514f9dfbcb3abf24">Options::PrintCPts</a>)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  _pta->dumpCPts();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span> (_pta->printStat())</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  _client->performStat(_pta);</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>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#aabfcfcd67df527cdf587aff5ecc26a10">Options::PrintQueryPts</a>)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  printQueryPTS();</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> </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#add44aee75c9a59327b4eb46774551e2b"> 147</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#add44aee75c9a59327b4eb46774551e2b">DDAPass::initCxtInsensitiveEdges</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* svfg,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SCCDetection.html">SVFGSCC</a>* svfgSCC, <a class="code" href="classSVF_1_1DDAPass.html#acc81a1f7ad572fa27648999334479f56">SVFGEdgeSet</a>& insensitveEdges)</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="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#aa1a3b9293dffeef1bb16a2a7b3a007dd">Options::InsenRecur</a>)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  collectCxtInsenEdgeForRecur(pta,svfg,insensitveEdges);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#a35cfe6add81dc82983e0c53c36c6e667">Options::InsenCycle</a>)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  collectCxtInsenEdgeForVFCycle(pta,svfg,svfgSCC,insensitveEdges);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span> }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a3810708c5e2695d2a0e36084b589e432"> 158</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAPass.html#a3810708c5e2695d2a0e36084b589e432">DDAPass::edgeInSVFGSCC</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SCCDetection.html">SVFGSCC</a>* svfgSCC,<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</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>  <span class="keywordflow">return</span> (svfgSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) == svfgSCC-><a class="code" href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">repNode</a>(edge-><a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()));</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span> </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#aab60429398a89ec1c8663a305130376f"> 166</a></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1DDAPass.html#aab60429398a89ec1c8663a305130376f">DDAPass::edgeInCallGraphSCC</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta,<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge)</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="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span>(srcFun && dstFun)</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">return</span> pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#ae58c2b25494ec51e714c83c6cfd5dd67">inSameCallGraphSCC</a>(srcFun,dstFun);</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> </div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>() == <span class="keyword">false</span> && <span class="stringliteral">"should not be an inter-procedural return edge"</span> );</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span> </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#af8bc7f84e7dc8c7032eec6162a837ba6"> 184</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#af8bc7f84e7dc8c7032eec6162a837ba6">DDAPass::collectCxtInsenEdgeForRecur</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* svfg,<a class="code" href="classSVF_1_1DDAPass.html#acc81a1f7ad572fa27648999334479f56">SVFGEdgeSet</a>& insensitveEdges)</div><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> </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">for</span> (SVFG::SVFGNodeIDToNodeMapTy::const_iterator it = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),eit = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *edgeIt;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() || edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span>(edgeInCallGraphSCC(pta,edge))</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  insensitveEdges.insert(edge);</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>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span> }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#af03661604ba924d1c3fd34a231ba87a6"> 207</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#af03661604ba924d1c3fd34a231ba87a6">DDAPass::collectCxtInsenEdgeForVFCycle</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* svfg,<span class="keyword">const</span> <a class="code" href="classSVF_1_1SCCDetection.html">SVFGSCC</a>* svfgSCC, <a class="code" href="classSVF_1_1DDAPass.html#acc81a1f7ad572fa27648999334479f56">SVFGEdgeSet</a>& insensitveEdges)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet<NodePair></a> insensitvefunPairs;</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="keywordflow">for</span> (SVFG::SVFGNodeIDToNodeMapTy::const_iterator it = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),eit = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != eit; ++it)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span> </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</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="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *edgeIt;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() || edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span>(this->edgeInSVFGSCC(svfgSCC,edge))</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getICFGNode()->getFun();</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>(srcFun && dstFun)</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>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(srcFun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(dstFun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  insensitvefunPairs.insert(std::make_pair(src,dst));</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  insensitvefunPairs.insert(std::make_pair(dst,src));</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">else</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>() == <span class="keyword">false</span> && <span class="stringliteral">"should not be an inter-procedural return edge"</span> );</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">for</span>(SVFG::SVFGNodeIDToNodeMapTy::const_iterator it = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(),eit = svfg-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it != eit; ++it)</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>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeIt = it->second->InEdgeBegin();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  SVFGEdge::SVFGEdgeSetTy::const_iterator edgeEit = it->second->InEdgeEnd();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">for</span> (; edgeIt != edgeEit; ++edgeIt)</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="keyword">const</span> <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge = *edgeIt;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span> </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">if</span>(edge-><a class="code" href="classSVF_1_1VFGEdge.html#a4352297ef44c4eff1efe2f348cce6fe9">isCallVFGEdge</a>() || edge-><a class="code" href="classSVF_1_1VFGEdge.html#a3937eef974c3953f1d1e7d64c5a24ff3">isRetVFGEdge</a>())</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>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* srcFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* dstFun = edge-><a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getICFGNode()->getFun();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">if</span>(srcFun && dstFun)</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>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(srcFun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst = pta-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#aaab54c670518d9d6790707f76ea76aa1">getCallGraphNode</a>(dstFun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span>(insensitvefunPairs.find(std::make_pair(src,dst))!=insensitvefunPairs.end())</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  insensitveEdges.insert(edge);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(insensitvefunPairs.find(std::make_pair(dst,src))!=insensitvefunPairs.end())</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  insensitveEdges.insert(edge);</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>  }</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> }</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span> </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a96de481dd2af7b39428aff38158c1d4e"> 269</a></span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1DDAPass.html#a0a39a0f3e530a97a38dbfe0d9f04ec33">DDAPass::alias</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node1, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node2)</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>  <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = _pta-><a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">getPAG</a>();</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>  <span class="keywordflow">if</span>(pag-><a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">isValidTopLevelPtr</a>(pag-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(node1)))</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  _pta->computeDDAPts(node1);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(pag-><a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">isValidTopLevelPtr</a>(pag-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(node2)))</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  _pta->computeDDAPts(node2);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> </div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> _pta->alias(node1,node2);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#a242575c5bd8a8f17fdc802e5ba80e7b0"> 285</a></span> <a class="code" href="namespaceSVF.html#ae941b2925716d8ebe14bf190aa8dfd06">AliasResult</a> <a class="code" href="classSVF_1_1DDAPass.html#a0a39a0f3e530a97a38dbfe0d9f04ec33">DDAPass::alias</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2)</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>  <a class="code" href="classSVF_1_1PAG.html">PAG</a>* pag = _pta-><a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">getPAG</a>();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span> </div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (pag-><a class="code" href="classSVF_1_1PAG.html#ae3cdf8c2139ba043595b420624f25427">hasValueNode</a>(V1) && pag-><a class="code" href="classSVF_1_1PAG.html#ae3cdf8c2139ba043595b420624f25427">hasValueNode</a>(V2))</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node1 = pag-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(pag-><a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(V1));</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span>(pag-><a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">isValidTopLevelPtr</a>(node1))</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  _pta->computeDDAPts(node1-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span> </div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node2 = pag-><a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(pag-><a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(V2));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span>(pag-><a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">isValidTopLevelPtr</a>(node2))</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  _pta->computeDDAPts(node2-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span> </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> _pta->alias(V1,V2);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordflow">return</span> llvm::AliasResult::MayAlias;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1DDAPass.html#afc700bd3abb5d9199621741b9bd04f0f"> 313</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1DDAPass.html#afc700bd3abb5d9199621741b9bd04f0f">DDAPass::printQueryPTS</a>()</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">OrderedNodeSet</a>& candidates = _client->getCandidateQueries();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordflow">for</span> (OrderedNodeSet::const_iterator it = candidates.begin(), eit = candidates.end(); it != eit; ++it)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>& pts = _pta->getPts(*it);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  _pta->dumpPts(*it,pts);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</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#l00361">GenericGraph.h:361</a></div></div>
|
|
70
70
|
<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>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1DDAPass_html_af03661604ba924d1c3fd34a231ba87a6"><div class="ttname"><a href="classSVF_1_1DDAPass.html#af03661604ba924d1c3fd34a231ba87a6">SVF::DDAPass::collectCxtInsenEdgeForVFCycle</a></div><div class="ttdeci">void collectCxtInsenEdgeForVFCycle(PointerAnalysis *pta, const SVFG *svfg, const SVFGSCC *svfgSCC, SVFGEdgeSet &insensitveEdges)</div><div class="ttdef"><b>Definition:</b> <a href="DDAPass_8cpp_source.html#l00207">DDAPass.cpp:207</a></div></div>
|
|
72
72
|
<div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
|
|
@@ -88,7 +88,7 @@ $(function() {
|
|
|
88
88
|
<div class="ttc" id="cuddInt_8c_html_a5beb39637a978181c7c17714ac96672e"><div class="ttname"><a href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a></div><div class="ttdeci">static DdNode * empty</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l28567">cuddInt.c:28567</a></div></div>
|
|
89
89
|
<div class="ttc" id="classSVF_1_1PAG_html"><div class="ttname"><a href="classSVF_1_1PAG.html">SVF::PAG</a></div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00047">PAG.h:47</a></div></div>
|
|
90
90
|
<div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae919327019b5014f64b754dbdeb07f75"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae919327019b5014f64b754dbdeb07f75">SVF::LLVMModuleSet::buildSVFModule</a></div><div class="ttdeci">SVFModule * buildSVFModule(Module &mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00060">LLVMModule.cpp:60</a></div></div>
|
|
91
|
-
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#
|
|
91
|
+
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
92
92
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
|
|
93
93
|
<div class="ttc" id="classSVF_1_1DDAPass_html_add44aee75c9a59327b4eb46774551e2b"><div class="ttname"><a href="classSVF_1_1DDAPass.html#add44aee75c9a59327b4eb46774551e2b">SVF::DDAPass::initCxtInsensitiveEdges</a></div><div class="ttdeci">void initCxtInsensitiveEdges(PointerAnalysis *pta, const SVFG *svfg, const SVFGSCC *svfgSCC, SVFGEdgeSet &insensitveEdges)</div><div class="ttdoc">Context insensitive Edge for DDA. </div><div class="ttdef"><b>Definition:</b> <a href="DDAPass_8cpp_source.html#l00147">DDAPass.cpp:147</a></div></div>
|
|
94
94
|
<div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
|
|
@@ -99,7 +99,7 @@ $(function() {
|
|
|
99
99
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">SVF::PointerAnalysis::Default_PTA</a></div><div class="ttdoc">default pta without any analysis </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00094">PointerAnalysis.h:94</a></div></div>
|
|
100
100
|
<div class="ttc" id="classSVF_1_1PAG_html_ac8910c7330638bdf31c23d4cc03ba9c5"><div class="ttname"><a href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">SVF::PAG::getPAG</a></div><div class="ttdeci">static PAG * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00162">PAG.h:162</a></div></div>
|
|
101
101
|
<div class="ttc" id="ContextDDA_8h_html"><div class="ttname"><a href="ContextDDA_8h.html">ContextDDA.h</a></div></div>
|
|
102
|
-
<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#
|
|
102
|
+
<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#l00365">GenericGraph.h:365</a></div></div>
|
|
103
103
|
<div class="ttc" id="classSVF_1_1SCCDetection_html_a3a5fdc9330a657240f77199f5aee602d"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a3a5fdc9330a657240f77199f5aee602d">SVF::SCCDetection::repNode</a></div><div class="ttdeci">NodeID repNode(NodeID n) const</div><div class="ttdoc">get the rep node if not found return itself </div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00139">SCC.h:139</a></div></div>
|
|
104
104
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00178">PointerAnalysis.h:178</a></div></div>
|
|
105
105
|
<div class="ttc" id="classSVF_1_1PAG_html_a3aa1c92eb8a6fab72996964de80f19ac"><div class="ttname"><a href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">SVF::PAG::getPAGNode</a></div><div class="ttdeci">PAGNode * getPAGNode(NodeID id) const</div><div class="ttdoc">Get PAGNode ID. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00539">PAG.h:539</a></div></div>
|
|
@@ -135,9 +135,9 @@ $(function() {
|
|
|
135
135
|
<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>
|
|
136
136
|
<div class="ttc" id="classSVF_1_1Options_html_a35cfe6add81dc82983e0c53c36c6e667"><div class="ttname"><a href="classSVF_1_1Options.html#a35cfe6add81dc82983e0c53c36c6e667">SVF::Options::InsenCycle</a></div><div class="ttdeci">static const llvm::cl::opt< bool > InsenCycle</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00099">Options.h:99</a></div></div>
|
|
137
137
|
<div class="ttc" id="classSVF_1_1SVFG_html"><div class="ttname"><a href="classSVF_1_1SVFG.html">SVF::SVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00065">SVFG.h:65</a></div></div>
|
|
138
|
-
<div class="ttc" id="classSVF_1_1PAG_html_a107c329c9524b2c029ff3fd8088dab67"><div class="ttname"><a href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">SVF::PAG::isValidTopLevelPtr</a></div><div class="ttdeci">bool isValidTopLevelPtr(const PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#
|
|
138
|
+
<div class="ttc" id="classSVF_1_1PAG_html_a107c329c9524b2c029ff3fd8088dab67"><div class="ttname"><a href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">SVF::PAG::isValidTopLevelPtr</a></div><div class="ttdeci">bool isValidTopLevelPtr(const PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00979">PAG.cpp:979</a></div></div>
|
|
139
139
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
|
|
140
|
-
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
140
|
+
<div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00165">GenericGraph.h:165</a></div></div>
|
|
141
141
|
<div class="ttc" id="namespaceSVF_html_a3c2bd95727ec0d9c55c631b6617026c8"><div class="ttname"><a href="namespaceSVF.html#a3c2bd95727ec0d9c55c631b6617026c8">SVF::OrderedNodeSet</a></div><div class="ttdeci">OrderedSet< NodeID > OrderedNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00113">SVFBasicTypes.h:113</a></div></div>
|
|
142
142
|
<div class="ttc" id="classSVF_1_1ContextDDA_html"><div class="ttname"><a href="classSVF_1_1ContextDDA.html">SVF::ContextDDA</a></div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00026">ContextDDA.h:26</a></div></div>
|
|
143
143
|
<div class="ttc" id="classSVF_1_1DDAPass_html_a13ff3107a0e4f8749b166fa9b8165167"><div class="ttname"><a href="classSVF_1_1DDAPass.html#a13ff3107a0e4f8749b166fa9b8165167">SVF::DDAPass::runPointerAnalysis</a></div><div class="ttdeci">void runPointerAnalysis(SVFModule *module, u32_t kind)</div><div class="ttdoc">Create pointer analysis according to specified kind and analyze the module. </div><div class="ttdef"><b>Definition:</b> <a href="DDAPass_8cpp_source.html#l00093">DDAPass.cpp:93</a></div></div>
|
|
@@ -75,7 +75,7 @@ $(function() {
|
|
|
75
75
|
<div class="ttc" id="classSVF_1_1DDAPass_html_aab60429398a89ec1c8663a305130376f"><div class="ttname"><a href="classSVF_1_1DDAPass.html#aab60429398a89ec1c8663a305130376f">SVF::DDAPass::edgeInCallGraphSCC</a></div><div class="ttdeci">bool edgeInCallGraphSCC(PointerAnalysis *pta, const SVFGEdge *edge)</div><div class="ttdoc">Return TRUE if this edge is inside a SVFG SCC, i.e., src node and dst node are in the same SCC on the...</div><div class="ttdef"><b>Definition:</b> <a href="DDAPass_8cpp_source.html#l00166">DDAPass.cpp:166</a></div></div>
|
|
76
76
|
<div class="ttc" id="namespaceSVF_html_a339bbddac9d9dffd5ef602200d34c403"><div class="ttname"><a href="namespaceSVF.html#a339bbddac9d9dffd5ef602200d34c403">SVF::MemoryLocation</a></div><div class="ttdeci">llvm::MemoryLocation MemoryLocation</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00119">BasicTypes.h:119</a></div></div>
|
|
77
77
|
<div class="ttc" id="SCC_8h_html"><div class="ttname"><a href="SCC_8h.html">SCC.h</a></div></div>
|
|
78
|
-
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#
|
|
78
|
+
<div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
79
79
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
|
|
80
80
|
<div class="ttc" id="classSVF_1_1DDAPass_html_add44aee75c9a59327b4eb46774551e2b"><div class="ttname"><a href="classSVF_1_1DDAPass.html#add44aee75c9a59327b4eb46774551e2b">SVF::DDAPass::initCxtInsensitiveEdges</a></div><div class="ttdeci">void initCxtInsensitiveEdges(PointerAnalysis *pta, const SVFG *svfg, const SVFGSCC *svfgSCC, SVFGEdgeSet &insensitveEdges)</div><div class="ttdoc">Context insensitive Edge for DDA. </div><div class="ttdef"><b>Definition:</b> <a href="DDAPass_8cpp_source.html#l00147">DDAPass.cpp:147</a></div></div>
|
|
81
81
|
<div class="ttc" id="classSVF_1_1DDAPass_html_a5e51ac666db439865846b835bcea9d21"><div class="ttname"><a href="classSVF_1_1DDAPass.html#a5e51ac666db439865846b835bcea9d21">SVF::DDAPass::SVFGSCC</a></div><div class="ttdeci">SCCDetection< SVFG * > SVFGSCC</div><div class="ttdef"><b>Definition:</b> <a href="DDAPass_8h_source.html#l00030">DDAPass.h:30</a></div></div>
|
|
@@ -90,8 +90,8 @@ $(function() {
|
|
|
90
90
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_afa7d9f6209904acd7893ae583e28dafd"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#afa7d9f6209904acd7893ae583e28dafd">SVF::PointerAnalysis::containConstantNode</a></div><div class="ttdeci">bool containConstantNode(const PointsTo &pts)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00312">PointerAnalysis.h:312</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1SVFGStat_html_a87d5e8ec0e13416cff36a18644a5b94f"><div class="ttname"><a href="classSVF_1_1SVFGStat.html#a87d5e8ec0e13416cff36a18644a5b94f">SVF::SVFGStat::performSCCStat</a></div><div class="ttdeci">virtual void performSCCStat(SVFGEdgeSet insensitiveCalRetEdges)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGStat_8cpp_source.html#l00370">SVFGStat.cpp:370</a></div></div>
|
|
92
92
|
<div class="ttc" id="classSVF_1_1DDAStat_html_a1afb47b898f646f71d00c666373281e0"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a1afb47b898f646f71d00c666373281e0">SVF::DDAStat::_TotalPtsSize</a></div><div class="ttdeci">u32_t _TotalPtsSize</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00086">DDAStat.h:86</a></div></div>
|
|
93
|
-
<div class="ttc" id="classSVF_1_1CondPTAImpl_html_a94f3e4d073b8c5bab3c46058ddba3f43"><div class="ttname"><a href="classSVF_1_1CondPTAImpl.html#a94f3e4d073b8c5bab3c46058ddba3f43">SVF::CondPTAImpl::getBVPointsTo</a></div><div class="ttdeci">virtual PointsTo getBVPointsTo(const CPtSet &cpts) const</div><div class="ttdoc">Given a conditional pts return its bit vector points-to. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
94
|
-
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph< PAGNode, PAGEdge >::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
93
|
+
<div class="ttc" id="classSVF_1_1CondPTAImpl_html_a94f3e4d073b8c5bab3c46058ddba3f43"><div class="ttname"><a href="classSVF_1_1CondPTAImpl.html#a94f3e4d073b8c5bab3c46058ddba3f43">SVF::CondPTAImpl::getBVPointsTo</a></div><div class="ttdeci">virtual PointsTo getBVPointsTo(const CPtSet &cpts) const</div><div class="ttdoc">Given a conditional pts return its bit vector points-to. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00484">PointerAnalysisImpl.h:484</a></div></div>
|
|
94
|
+
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph< PAGNode, PAGEdge >::const_iterator</a></div><div class="ttdeci">IDToNodeMapTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00339">GenericGraph.h:339</a></div></div>
|
|
95
95
|
<div class="ttc" id="classSVF_1_1DDAStat_html_acacabea1b7b875e2f60f931fe0e6f625"><div class="ttname"><a href="classSVF_1_1DDAStat.html#acacabea1b7b875e2f60f931fe0e6f625">SVF::DDAStat::printStatPerQuery</a></div><div class="ttdeci">void printStatPerQuery(NodeID ptr, const PointsTo &pts)</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8cpp_source.html#l00252">DDAStat.cpp:252</a></div></div>
|
|
96
96
|
<div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
|
|
97
97
|
<div class="ttc" id="classSVF_1_1DDAStat_html_ad53ad7a958c05b45624d2859a6a9e647"><div class="ttname"><a href="classSVF_1_1DDAStat.html#ad53ad7a958c05b45624d2859a6a9e647">SVF::DDAStat::_StrongUpdateStores</a></div><div class="ttdeci">NodeBS _StrongUpdateStores</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00044">DDAStat.h:44</a></div></div>
|
|
@@ -110,9 +110,9 @@ $(function() {
|
|
|
110
110
|
<div class="ttc" id="classSVF_1_1DDAStat_html_ac3fb8b15c5308c926209a941c7cf62e1"><div class="ttname"><a href="classSVF_1_1DDAStat.html#ac3fb8b15c5308c926209a941c7cf62e1">SVF::DDAStat::contextDDA</a></div><div class="ttdeci">ContextDDA * contextDDA</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00070">DDAStat.h:70</a></div></div>
|
|
111
111
|
<div class="ttc" id="FlowDDA_8h_html"><div class="ttname"><a href="FlowDDA_8h.html">FlowDDA.h</a></div></div>
|
|
112
112
|
<div class="ttc" id="classSVF_1_1DDAStat_html_a86e03ef25f150b98bc1f8c89bfd7fc77"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a86e03ef25f150b98bc1f8c89bfd7fc77">SVF::DDAStat::flowDDA</a></div><div class="ttdeci">FlowDDA * flowDDA</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00069">DDAStat.h:69</a></div></div>
|
|
113
|
-
<div class="ttc" id="classSVF_1_1CondPTAImpl_html_a63fa2b3a96696ffc67a119c1ba5ce748"><div class="ttname"><a href="classSVF_1_1CondPTAImpl.html#a63fa2b3a96696ffc67a119c1ba5ce748">SVF::CondPTAImpl::getPts</a></div><div class="ttdeci">virtual const CPtSet & getPts(CVar id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#
|
|
113
|
+
<div class="ttc" id="classSVF_1_1CondPTAImpl_html_a63fa2b3a96696ffc67a119c1ba5ce748"><div class="ttname"><a href="classSVF_1_1CondPTAImpl.html#a63fa2b3a96696ffc67a119c1ba5ce748">SVF::CondPTAImpl::getPts</a></div><div class="ttdeci">virtual const CPtSet & getPts(CVar id)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00319">PointerAnalysisImpl.h:319</a></div></div>
|
|
114
114
|
<div class="ttc" id="classSVF_1_1PTAStat_html_afa718535839a939e51afc0f8c1fbdac6"><div class="ttname"><a href="classSVF_1_1PTAStat.html#afa718535839a939e51afc0f8c1fbdac6">SVF::PTAStat::generalNumMap</a></div><div class="ttdeci">NUMStatMap generalNumMap</div><div class="ttdef"><b>Definition:</b> <a href="PTAStat_8h_source.html#l00147">PTAStat.h:147</a></div></div>
|
|
115
|
-
<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#
|
|
115
|
+
<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#l00099">PointerAnalysisImpl.h:99</a></div></div>
|
|
116
116
|
<div class="ttc" id="classSVF_1_1DDAStat_html_a36eafce8cdbb6492f6dd550606cfbd81"><div class="ttname"><a href="classSVF_1_1DDAStat.html#a36eafce8cdbb6492f6dd550606cfbd81">SVF::DDAStat::_AvgNumOfDPMAtSVFGNode</a></div><div class="ttdeci">double _AvgNumOfDPMAtSVFGNode</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00096">DDAStat.h:96</a></div></div>
|
|
117
117
|
<div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00106">PointsTo.cpp:106</a></div></div>
|
|
118
118
|
<div class="ttc" id="classSVF_1_1DDAStat_html_ad07ab73cc0bc650c692de9983b126348"><div class="ttname"><a href="classSVF_1_1DDAStat.html#ad07ab73cc0bc650c692de9983b126348">SVF::DDAStat::_MaxCPtsSize</a></div><div class="ttdeci">u32_t _MaxCPtsSize</div><div class="ttdef"><b>Definition:</b> <a href="DDAStat_8h_source.html#l00083">DDAStat.h:83</a></div></div>
|