svf-tools 1.0.595 → 1.0.596
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/Andersen_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +4 -4
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +8 -5
- package/SVF-doxygen/html/html/CFLGraph_8h.html +1 -1
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +18 -16
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CHG_8cpp.html +1 -1
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +11 -8
- package/SVF-doxygen/html/html/CHG_8h.html +1 -1
- package/SVF-doxygen/html/html/CHG_8h_source.html +9 -7
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +18 -16
- package/SVF-doxygen/html/html/ConsG_8h.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8h_source.html +8 -6
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +15 -13
- package/SVF-doxygen/html/html/DCHG_8h.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +12 -10
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
- package/SVF-doxygen/html/html/DOTGraphTraits_8h.html +96 -0
- package/SVF-doxygen/html/html/DOTGraphTraits_8h_source.html +102 -0
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h.html +11 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +127 -114
- package/SVF-doxygen/html/html/GraphPrinter_8h.html +2 -4
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +8 -5
- package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +2 -1
- package/SVF-doxygen/html/html/GraphTraits_8h.html +117 -0
- package/SVF-doxygen/html/html/GraphTraits_8h_source.html +91 -0
- package/SVF-doxygen/html/html/GraphWriter_8cpp.html +81 -0
- package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +80 -0
- package/SVF-doxygen/html/html/GraphWriter_8h.html +137 -0
- package/SVF-doxygen/html/html/GraphWriter_8h_source.html +129 -0
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +9 -7
- package/SVF-doxygen/html/html/ICFG_8h.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8h_source.html +11 -9
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +8 -5
- package/SVF-doxygen/html/html/IRGraph_8h.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +7 -5
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +4 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp.html +4 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +31 -31
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +28 -28
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +17 -14
- package/SVF-doxygen/html/html/PTACallGraph_8h.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +15 -13
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SCC_8h_source.html +3 -1
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +10 -9
- package/SVF-doxygen/html/html/SVFG_8h_source.html +11 -10
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +10 -10
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +7 -7
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +2 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +18 -16
- package/SVF-doxygen/html/html/TCT_8h.html +1 -1
- package/SVF-doxygen/html/html/TCT_8h_source.html +19 -17
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +6 -6
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +6 -6
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +6 -6
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +10 -8
- package/SVF-doxygen/html/html/VFG_8h.html +1 -1
- package/SVF-doxygen/html/html/VFG_8h_source.html +11 -9
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +3 -2
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -1
- package/SVF-doxygen/html/html/annotated.html +55 -42
- 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 +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +30 -29
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +27 -24
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +15 -15
- 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 +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +44 -44
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +96 -97
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +16 -15
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +11 -10
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +103 -103
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +9 -9
- 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_1MTAAnnotator.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +23 -22
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +19 -18
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +32 -32
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +4 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +4 -4
- package/SVF-doxygen/html/html/classes.html +105 -102
- package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +9 -7
- package/SVF-doxygen/html/html/classllvm_1_1GraphWriter-members.html +100 -0
- package/SVF-doxygen/html/html/classllvm_1_1GraphWriter.html +882 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__adaptor__base-members.html +112 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__adaptor__base.html +633 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__adaptor__base.png +0 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base-members.html +102 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base.html +787 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base.png +0 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base_1_1ReferenceProxy-members.html +84 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__facade__base_1_1ReferenceProxy.html +229 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__range-members.html +87 -0
- package/SVF-doxygen/html/html/classllvm_1_1iterator__range.html +342 -0
- package/SVF-doxygen/html/html/classllvm_1_1mapped__iter-members.html +112 -0
- package/SVF-doxygen/html/html/classllvm_1_1mapped__iter.html +322 -0
- package/SVF-doxygen/html/html/classllvm_1_1mapped__iter.png +0 -0
- package/SVF-doxygen/html/html/classllvm_1_1pointer__iterator-members.html +113 -0
- package/SVF-doxygen/html/html/classllvm_1_1pointer__iterator.html +343 -0
- package/SVF-doxygen/html/html/classllvm_1_1pointer__iterator.png +0 -0
- package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +4 -0
- package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +6 -0
- package/SVF-doxygen/html/html/fastcluster__R__dm_8cpp_8inc_source.html +2 -1
- package/SVF-doxygen/html/html/files.html +42 -36
- package/SVF-doxygen/html/html/functions_a.html +11 -8
- package/SVF-doxygen/html/html/functions_b.html +20 -13
- package/SVF-doxygen/html/html/functions_c.html +36 -37
- package/SVF-doxygen/html/html/functions_d.html +16 -4
- package/SVF-doxygen/html/html/functions_e.html +16 -2
- package/SVF-doxygen/html/html/functions_eval_b.html +4 -4
- package/SVF-doxygen/html/html/functions_eval_i.html +6 -0
- package/SVF-doxygen/html/html/functions_f.html +21 -18
- package/SVF-doxygen/html/html/functions_func.html +13 -10
- package/SVF-doxygen/html/html/functions_func_b.html +3 -2
- package/SVF-doxygen/html/html/functions_func_d.html +7 -3
- package/SVF-doxygen/html/html/functions_func_e.html +12 -1
- package/SVF-doxygen/html/html/functions_func_g.html +54 -22
- package/SVF-doxygen/html/html/functions_func_h.html +7 -4
- package/SVF-doxygen/html/html/functions_func_i.html +22 -8
- package/SVF-doxygen/html/html/functions_func_m.html +3 -0
- package/SVF-doxygen/html/html/functions_func_n.html +3 -0
- package/SVF-doxygen/html/html/functions_func_o.html +42 -8
- package/SVF-doxygen/html/html/functions_func_p.html +7 -1
- package/SVF-doxygen/html/html/functions_func_r.html +7 -1
- package/SVF-doxygen/html/html/functions_func_w.html +21 -0
- package/SVF-doxygen/html/html/functions_g.html +60 -21
- package/SVF-doxygen/html/html/functions_h.html +8 -5
- package/SVF-doxygen/html/html/functions_i.html +50 -19
- package/SVF-doxygen/html/html/functions_l.html +3 -3
- package/SVF-doxygen/html/html/functions_m.html +4 -1
- package/SVF-doxygen/html/html/functions_n.html +9 -3
- package/SVF-doxygen/html/html/functions_o.html +53 -20
- package/SVF-doxygen/html/html/functions_p.html +31 -21
- package/SVF-doxygen/html/html/functions_r.html +13 -10
- package/SVF-doxygen/html/html/functions_rela.html +6 -3
- package/SVF-doxygen/html/html/functions_s.html +8 -10
- package/SVF-doxygen/html/html/functions_t.html +9 -9
- package/SVF-doxygen/html/html/functions_type_b.html +3 -0
- package/SVF-doxygen/html/html/functions_type_c.html +4 -3
- package/SVF-doxygen/html/html/functions_type_d.html +6 -1
- package/SVF-doxygen/html/html/functions_type_g.html +2 -1
- package/SVF-doxygen/html/html/functions_type_i.html +2 -1
- package/SVF-doxygen/html/html/functions_type_n.html +6 -3
- package/SVF-doxygen/html/html/functions_type_p.html +2 -1
- package/SVF-doxygen/html/html/functions_type_r.html +2 -1
- package/SVF-doxygen/html/html/functions_type_v.html +2 -1
- package/SVF-doxygen/html/html/functions_v.html +6 -5
- package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_d.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_f.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_g.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_i.html +10 -0
- package/SVF-doxygen/html/html/functions_vars_o.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
- package/SVF-doxygen/html/html/functions_w.html +30 -9
- package/SVF-doxygen/html/html/hierarchy.html +444 -397
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/iterator_8h.html +123 -0
- package/SVF-doxygen/html/html/iterator_8h_source.html +134 -0
- package/SVF-doxygen/html/html/iterator__range_8h.html +109 -0
- package/SVF-doxygen/html/html/iterator__range_8h_source.html +90 -0
- package/SVF-doxygen/html/html/menudata.js +17 -16
- package/SVF-doxygen/html/html/namespacellvm.html +488 -11
- package/SVF-doxygen/html/html/namespacellvm_1_1DOT.html +107 -0
- package/SVF-doxygen/html/html/namespacellvm_1_1GraphProgram.html +122 -0
- package/SVF-doxygen/html/html/namespacemembers_c.html +9 -0
- package/SVF-doxygen/html/html/namespacemembers_d.html +5 -2
- package/SVF-doxygen/html/html/namespacemembers_e.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_enum.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_eval.html +15 -0
- package/SVF-doxygen/html/html/namespacemembers_f.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_func.html +0 -495
- package/SVF-doxygen/html/html/namespacemembers_func_b.html +88 -0
- package/SVF-doxygen/html/html/namespacemembers_func_c.html +97 -0
- package/SVF-doxygen/html/html/namespacemembers_func_d.html +97 -0
- package/SVF-doxygen/html/html/namespacemembers_func_e.html +82 -0
- package/SVF-doxygen/html/html/namespacemembers_func_f.html +76 -0
- package/SVF-doxygen/html/html/namespacemembers_func_g.html +186 -0
- package/SVF-doxygen/html/html/namespacemembers_func_h.html +76 -0
- package/SVF-doxygen/html/html/namespacemembers_func_i.html +250 -0
- package/SVF-doxygen/html/html/namespacemembers_func_m.html +91 -0
- package/SVF-doxygen/html/html/namespacemembers_func_n.html +76 -0
- package/SVF-doxygen/html/html/namespacemembers_func_o.html +94 -0
- package/SVF-doxygen/html/html/namespacemembers_func_p.html +82 -0
- package/SVF-doxygen/html/html/namespacemembers_func_r.html +79 -0
- package/SVF-doxygen/html/html/namespacemembers_func_s.html +91 -0
- package/SVF-doxygen/html/html/namespacemembers_func_t.html +76 -0
- package/SVF-doxygen/html/html/namespacemembers_func_v.html +85 -0
- package/SVF-doxygen/html/html/namespacemembers_func_w.html +82 -0
- package/SVF-doxygen/html/html/namespacemembers_i.html +8 -2
- package/SVF-doxygen/html/html/namespacemembers_m.html +12 -0
- package/SVF-doxygen/html/html/namespacemembers_n.html +9 -0
- package/SVF-doxygen/html/html/namespacemembers_r.html +4 -1
- package/SVF-doxygen/html/html/namespacemembers_t.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_type_r.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_v.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_w.html +3 -0
- package/SVF-doxygen/html/html/namespaces.html +3 -1
- package/SVF-doxygen/html/html/search/all_1.js +1 -0
- package/SVF-doxygen/html/html/search/all_10.js +13 -10
- package/SVF-doxygen/html/html/search/all_11.js +5 -2
- package/SVF-doxygen/html/html/search/all_12.js +4 -4
- package/SVF-doxygen/html/html/search/all_13.js +7 -6
- package/SVF-doxygen/html/html/search/all_15.js +4 -3
- package/SVF-doxygen/html/html/search/all_16.js +9 -2
- package/SVF-doxygen/html/html/search/all_2.js +6 -4
- package/SVF-doxygen/html/html/search/all_3.js +8 -5
- package/SVF-doxygen/html/html/search/all_4.js +9 -2
- package/SVF-doxygen/html/html/search/all_5.js +7 -2
- package/SVF-doxygen/html/html/search/all_6.js +3 -1
- package/SVF-doxygen/html/html/search/all_7.js +51 -7
- package/SVF-doxygen/html/html/search/all_8.js +1 -0
- package/SVF-doxygen/html/html/search/all_9.js +24 -6
- package/SVF-doxygen/html/html/search/all_c.js +4 -2
- package/SVF-doxygen/html/html/search/all_d.js +6 -1
- package/SVF-doxygen/html/html/search/all_e.js +7 -4
- package/SVF-doxygen/html/html/search/all_f.js +17 -13
- package/SVF-doxygen/html/html/search/classes_3.js +4 -0
- package/SVF-doxygen/html/html/search/classes_6.js +33 -1
- package/SVF-doxygen/html/html/search/classes_8.js +11 -1
- package/SVF-doxygen/html/html/search/classes_a.js +1 -0
- package/SVF-doxygen/html/html/search/classes_d.js +2 -0
- package/SVF-doxygen/html/html/search/classes_e.js +1 -0
- package/SVF-doxygen/html/html/search/enums_8.js +1 -6
- package/SVF-doxygen/html/html/search/enums_9.js +6 -1
- package/SVF-doxygen/html/html/search/enums_a.js +1 -4
- package/SVF-doxygen/html/html/search/enums_b.js +4 -2
- package/SVF-doxygen/html/html/search/enums_c.js +2 -4
- package/SVF-doxygen/html/html/search/enums_d.js +4 -1
- package/SVF-doxygen/html/html/search/enums_e.html +26 -0
- package/SVF-doxygen/html/html/search/enums_e.js +4 -0
- package/SVF-doxygen/html/html/search/enumvalues_1.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_10.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_2.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_3.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_5.js +1 -0
- package/SVF-doxygen/html/html/search/enumvalues_8.js +3 -1
- package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -0
- package/SVF-doxygen/html/html/search/files_3.js +1 -0
- package/SVF-doxygen/html/html/search/files_6.js +4 -1
- package/SVF-doxygen/html/html/search/files_7.js +3 -1
- package/SVF-doxygen/html/html/search/functions_0.js +1 -0
- package/SVF-doxygen/html/html/search/functions_1.js +1 -1
- package/SVF-doxygen/html/html/search/functions_10.js +2 -0
- package/SVF-doxygen/html/html/search/functions_14.js +1 -0
- package/SVF-doxygen/html/html/search/functions_15.js +7 -0
- package/SVF-doxygen/html/html/search/functions_2.js +2 -0
- package/SVF-doxygen/html/html/search/functions_3.js +2 -1
- package/SVF-doxygen/html/html/search/functions_4.js +6 -2
- package/SVF-doxygen/html/html/search/functions_6.js +15 -6
- package/SVF-doxygen/html/html/search/functions_7.js +1 -0
- package/SVF-doxygen/html/html/search/functions_8.js +9 -3
- package/SVF-doxygen/html/html/search/functions_c.js +5 -0
- package/SVF-doxygen/html/html/search/functions_d.js +2 -0
- package/SVF-doxygen/html/html/search/functions_e.js +14 -8
- package/SVF-doxygen/html/html/search/functions_f.js +3 -1
- package/SVF-doxygen/html/html/search/namespaces_0.js +2 -0
- package/SVF-doxygen/html/html/search/related_9.js +3 -3
- package/SVF-doxygen/html/html/search/searchdata.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_1.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_3.js +2 -1
- package/SVF-doxygen/html/html/search/typedefs_6.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_7.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_c.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_e.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_f.js +2 -1
- package/SVF-doxygen/html/html/search/variables_10.js +1 -0
- package/SVF-doxygen/html/html/search/variables_13.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +1 -0
- package/SVF-doxygen/html/html/search/variables_3.js +1 -1
- package/SVF-doxygen/html/html/search/variables_4.js +1 -0
- package/SVF-doxygen/html/html/search/variables_5.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +1 -0
- package/SVF-doxygen/html/html/search/variables_7.js +2 -1
- package/SVF-doxygen/html/html/search/variables_9.js +5 -2
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_f.js +1 -0
- package/SVF-doxygen/html/html/structSVF_1_1GenericEdge_1_1equalGEdge.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +3 -3
- package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +46 -46
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits-members.html +99 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits.html +193 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +22 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +67 -10
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4-members.html +21 -3
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +65 -8
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +22 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +72 -12
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4-members.html +23 -5
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +70 -10
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +23 -5
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +68 -11
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4-members.html +23 -5
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +68 -11
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +24 -6
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +76 -15
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4-members.html +22 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +67 -10
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4-members.html +24 -6
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +73 -12
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1DefaultDOTGraphTraits-members.html +99 -0
- package/SVF-doxygen/html/html/structllvm_1_1DefaultDOTGraphTraits.html +855 -0
- package/SVF-doxygen/html/html/structllvm_1_1DefaultDOTGraphTraits.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits.html +116 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.html +106 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.png +0 -0
- 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-members.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 +33 -31
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +12 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CHNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4-members.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +46 -44
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4-members.html +1 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +38 -34
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1ICFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +10 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +5 -1
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1VFG_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1Inverse-members.html +82 -0
- package/SVF-doxygen/html/html/structllvm_1_1Inverse.html +154 -0
- package/SVF-doxygen/html/html/structllvm_1_1pointee__iterator-members.html +111 -0
- package/SVF-doxygen/html/html/structllvm_1_1pointee__iterator.html +279 -0
- package/SVF-doxygen/html/html/structllvm_1_1pointee__iterator.png +0 -0
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +8 -8
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/include/Graphs/DOTGraphTraits.h +188 -0
- package/include/Graphs/GenericGraph.h +50 -11
- package/include/Graphs/GraphPrinter.h +12 -20
- package/include/Graphs/GraphTraits.h +150 -0
- package/include/Graphs/GraphWriter.h +380 -0
- package/include/Util/iterator.h +407 -0
- package/include/Util/iterator_range.h +76 -0
- package/lib/Graphs/GraphWriter.cpp +53 -0
- package/lib/SVF-LLVM/LLVMModule.cpp +1 -0
- package/package.json +1 -1
|
@@ -70,7 +70,7 @@ $(function() {
|
|
|
70
70
|
<div class="ttc" id="cJSON_8cpp_html_a009ef1d888ab6dbe77e6b42b0b39f1ae"><div class="ttname"><a href="cJSON_8cpp.html#a009ef1d888ab6dbe77e6b42b0b39f1ae">p</a></div><div class="ttdeci">cJSON * p</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02559">cJSON.cpp:2559</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1SVFFunction_html_aaec097379a345ab0e80b6a9c50508f48"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#aaec097379a345ab0e80b6a9c50508f48">SVF::SVFFunction::const_iterator</a></div><div class="ttdeci">std::vector< const SVFBasicBlock * >::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00271">SVFValue.h:271</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00579">SVFValue.h:579</a></div></div>
|
|
73
|
-
<div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy & getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
73
|
+
<div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy & getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00187">GenericGraph.h:187</a></div></div>
|
|
74
74
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00047">LLVMUtil.h:47</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00127">SVFModule.h:127</a></div></div>
|
|
76
76
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00194">SVFUtil.h:194</a></div></div>
|
|
@@ -128,7 +128,7 @@ $(function() {
|
|
|
128
128
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ae942f7d46198207219e5ce8287497262"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ae942f7d46198207219e5ce8287497262">SVF::ThreadCallGraph::addDirectParForEdge</a></div><div class="ttdeci">void addDirectParForEdge(const CallICFGNode *cs)</div><div class="ttdoc">Add direct/indirect parallel for edges. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8cpp_source.html#l00221">ThreadCallGraph.cpp:221</a></div></div>
|
|
129
129
|
<div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
|
|
130
130
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a6d29a39440d8f6290e2e8b7322b965fb"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a6d29a39440d8f6290e2e8b7322b965fb">SVF::PTACallGraph::hasGraphEdge</a></div><div class="ttdeci">PTACallGraphEdge * hasGraphEdge(PTACallGraphNode *src, PTACallGraphNode *dst, PTACallGraphEdge::CEDGEK kind, CallSiteID csId) const</div><div class="ttdoc">Whether we have aleady created this call graph edge. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8cpp_source.html#l00136">PTACallGraph.cpp:136</a></div></div>
|
|
131
|
-
<div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
131
|
+
<div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00394">GenericGraph.h:394</a></div></div>
|
|
132
132
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a29c74634b17007e5bef6fb48e1f3839f"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a29c74634b17007e5bef6fb48e1f3839f">SVF::ThreadCallGraph::parForSitesBegin</a></div><div class="ttdeci">CallSiteSet::const_iterator parForSitesBegin() const</div><div class="ttdoc">hare_parallel_for sites iterators </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00297">ThreadCallGraph.h:297</a></div></div>
|
|
133
133
|
<div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
|
|
134
134
|
<div class="ttc" id="SVFType_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFType_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00419">SVFType.h:419</a></div></div>
|
|
@@ -69,7 +69,7 @@ $(function() {
|
|
|
69
69
|
<a href="ThreadCallGraph_8h.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">//===- ThreadCallGraph.h -- Call graph considering thread fork/join-----------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * ThreadCallGraph.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Jul 7, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Authors: Peng Di, Yulei Sui, Ding Ye</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#ifndef RCG_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define RCG_H_</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> <span class="preprocessor">#include "<a class="code" href="PTACallGraph_8h.html">Graphs/PTACallGraph.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>SVFModule;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">class </span>ThreadAPI;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadForkEdge.html"> 44</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ThreadForkEdge.html">ThreadForkEdge</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</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> <span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadForkEdge.html#ae55b3e06b3ed22780d917dbb225561c1"> 49</a></span>  <a class="code" href="classSVF_1_1ThreadForkEdge.html#ae55b3e06b3ed22780d917dbb225561c1">ThreadForkEdge</a>(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* s, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* d, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>) :</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>(s, d, <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>::<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">TDForkEdge</a>, csId)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadForkEdge.html#a8be8c59b7c254b5b3e7f05913c3df158"> 54</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ThreadForkEdge.html#a8be8c59b7c254b5b3e7f05913c3df158">~ThreadForkEdge</a>()</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</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"><a class="line" href="classSVF_1_1ThreadForkEdge.html#a4d2c3601a3fd530d178ec00ee3e1bc5d"> 60</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadForkEdge.html#a4d2c3601a3fd530d178ec00ee3e1bc5d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ThreadForkEdge.html">ThreadForkEdge</a>*)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadForkEdge.html#ae40d52a9080627661aad198adf5f411a"> 64</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadForkEdge.html#ae40d52a9080627661aad198adf5f411a">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> *edge)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  {</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7af32caf15ca19d512b5183bcf0d859cd7">PTACallGraphEdge::TDForkEdge</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadForkEdge.html#acdc2ff9ad9800847b581e9d27efd3843"> 70</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ThreadForkEdge.html#acdc2ff9ad9800847b581e9d27efd3843">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  std::stringstream rawstr(str);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  rawstr << <span class="stringliteral">"ThreadForkEdge "</span>;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  rawstr << <span class="stringliteral">"CallSite ID: "</span> << <a class="code" href="classSVF_1_1PTACallGraphEdge.html#af9ca9cfffbba3b68838d41be62c914ac">getCallSiteID</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  rawstr << <span class="stringliteral">" srcNode ID "</span> << <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() << <span class="stringliteral">" (fun: "</span> << <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">")"</span>;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  rawstr << <span class="stringliteral">" dstNode ID "</span> << <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() << <span class="stringliteral">" (fun: "</span> << <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">")"</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadForkEdge.html#ad36696915ee802989b679dd058aaab68"> 81</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode<PTACallGraphNode, ThreadForkEdge>::GEdgeSetTy</a> <a class="code" href="classSVF_1_1ThreadForkEdge.html#ad36696915ee802989b679dd058aaab68">ForkEdgeSet</a>;</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="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadJoinEdge.html"> 87</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ThreadJoinEdge.html">ThreadJoinEdge</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a></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> </div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadJoinEdge.html#abacb4b5e4badee46f9517b2d84798a3e"> 92</a></span>  <a class="code" href="classSVF_1_1ThreadJoinEdge.html#abacb4b5e4badee46f9517b2d84798a3e">ThreadJoinEdge</a>(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* s, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* d, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>) :</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>(s, d, <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>::<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5">TDJoinEdge</a>, csId)</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="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadJoinEdge.html#a0a09e2d148e6d02a5fcb31b8752a3ea5"> 97</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ThreadJoinEdge.html#a0a09e2d148e6d02a5fcb31b8752a3ea5">~ThreadJoinEdge</a>()</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>  }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadJoinEdge.html#a0fb671c87fecd2fd9c2dab4187a47d37"> 101</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadJoinEdge.html#a0fb671c87fecd2fd9c2dab4187a47d37">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ThreadJoinEdge.html">ThreadJoinEdge</a>*)</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  {</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadJoinEdge.html#ae4095b55b035bbf42d0a75afada4244d"> 105</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadJoinEdge.html#ae4095b55b035bbf42d0a75afada4244d">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> *edge)</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>  <span class="keywordflow">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a2d65840140263a0808f5b9d553a4bff5">PTACallGraphEdge::TDJoinEdge</a>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</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"><a class="line" href="classSVF_1_1ThreadJoinEdge.html#a67b68672ef76e0a4f326f7dbbd77bbf7"> 110</a></span>  <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1ThreadJoinEdge.html#a67b68672ef76e0a4f326f7dbbd77bbf7">toString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  std::stringstream rawstr(str);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  rawstr << <span class="stringliteral">"ThreadJoinEdge "</span>;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  rawstr << <span class="stringliteral">"CallSite ID: "</span> << <a class="code" href="classSVF_1_1PTACallGraphEdge.html#af9ca9cfffbba3b68838d41be62c914ac">getCallSiteID</a>();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  rawstr << <span class="stringliteral">" srcNode ID "</span> << <a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() << <span class="stringliteral">" (fun: "</span> << <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()->getFunction()->getName() << <span class="stringliteral">")"</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  rawstr << <span class="stringliteral">" dstNode ID "</span> << <a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() << <span class="stringliteral">" (fun: "</span> << <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()->getFunction()->getName() << <span class="stringliteral">")"</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">return</span> rawstr.str();</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> </div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadJoinEdge.html#acf768ce9925ee75aea865cd9306afda9"> 121</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode<PTACallGraphNode, ThreadJoinEdge>::GEdgeSetTy</a> <a class="code" href="classSVF_1_1ThreadJoinEdge.html#acf768ce9925ee75aea865cd9306afda9">JoinEdgeSet</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> };</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1HareParForEdge.html"> 127</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1HareParForEdge.html">HareParForEdge</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1HareParForEdge.html#a097ccd687d7ca511a4a453dd56b7c665"> 132</a></span>  <a class="code" href="classSVF_1_1HareParForEdge.html#a097ccd687d7ca511a4a453dd56b7c665">HareParForEdge</a>(<a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* s, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* d, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>) :</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>(s, d, <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>::<a class="code" href="classSVF_1_1HareParForEdge.html">HareParForEdge</a>, csId)</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>  }</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1HareParForEdge.html#a6496eb7d7d33d49cc174722034451b1b"> 137</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1HareParForEdge.html#a6496eb7d7d33d49cc174722034451b1b">~HareParForEdge</a>()</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</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"><a class="line" href="classSVF_1_1HareParForEdge.html#ab1dba5dff1e71bce578dc7b0009ba518"> 143</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1HareParForEdge.html#ab1dba5dff1e71bce578dc7b0009ba518">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1HareParForEdge.html">HareParForEdge</a>*)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  }</div><div class="line"><a name="l00147"></a><span class="lineno"><a class="line" href="classSVF_1_1HareParForEdge.html#af9cc260c4a767f9ebd4a454dff4f88be"> 147</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1HareParForEdge.html#af9cc260c4a767f9ebd4a454dff4f88be">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a> *edge)</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">return</span> edge-><a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a17e0d58fd42d0d493087e698d4ecd838">PTACallGraphEdge::HareParForEdge</a>;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classSVF_1_1HareParForEdge.html#ac352ec0ba628ac5fe96b1f6d74808cb2"> 153</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">GenericNode<PTACallGraphNode, HareParForEdge>::GEdgeSetTy</a> <a class="code" href="classSVF_1_1HareParForEdge.html#ac352ec0ba628ac5fe96b1f6d74808cb2">ParForEdgeSet</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> };</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> </div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00160"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html"> 160</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</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="l00163"></a><span class="lineno"> 163</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a57b69bfb5d468bd1a81a55468f845de0"> 164</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const CallICFGNode*></a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a57b69bfb5d468bd1a81a55468f845de0">InstSet</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a0d560b811f8df1a710c627e1ac100155"> 165</a></span>  <span class="keyword">typedef</span> InstSet <a class="code" href="classSVF_1_1ThreadCallGraph.html#a0d560b811f8df1a710c627e1ac100155">CallSiteSet</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#ab7159178fb88be17c0d522c9f2fc9e8f"> 166</a></span>  <span class="keyword">typedef</span> std::vector<const SVFInstruction*> <a class="code" href="classSVF_1_1ThreadCallGraph.html#ab7159178fb88be17c0d522c9f2fc9e8f">InstVector</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#add85c5647bd0423770fb0fb35426e0cb"> 167</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFInstruction*, InstSet></a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#add85c5647bd0423770fb0fb35426e0cb">CallToInstMap</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a304ba7ef48068fa019c69af5744842cc"> 168</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<CallSiteSet*></a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a304ba7ef48068fa019c69af5744842cc">CtxSet</a>;</div><div class="line"><a name="l00169"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#aa5efa630056c1db2bb0dadc868752ec8"> 169</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ThreadForkEdge.html#ad36696915ee802989b679dd058aaab68">ThreadForkEdge::ForkEdgeSet</a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#aa5efa630056c1db2bb0dadc868752ec8">ForkEdgeSet</a>;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#aec88ec07a721b120290a7dde94ae1b51"> 170</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, ForkEdgeSet></a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#aec88ec07a721b120290a7dde94ae1b51">CallInstToForkEdgesMap</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#aa9e07204488ec8f0f83f4e218b6ce6bd"> 171</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ThreadJoinEdge.html#acf768ce9925ee75aea865cd9306afda9">ThreadJoinEdge::JoinEdgeSet</a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#aa9e07204488ec8f0f83f4e218b6ce6bd">JoinEdgeSet</a>;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#ab446ddd20cf46eeb76fcd5789faef521"> 172</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, JoinEdgeSet></a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#ab446ddd20cf46eeb76fcd5789faef521">CallInstToJoinEdgesMap</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#abc4cdc5b401932bf410d26ab4d58ca33"> 173</a></span>  <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1HareParForEdge.html#ac352ec0ba628ac5fe96b1f6d74808cb2">HareParForEdge::ParForEdgeSet</a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#abc4cdc5b401932bf410d26ab4d58ca33">ParForEdgeSet</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#aba9d3e04e923cc787ab46a1f7eebb554"> 174</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const CallICFGNode*, ParForEdgeSet></a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#aba9d3e04e923cc787ab46a1f7eebb554">CallInstToParForEdgesMap</a>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> </div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a>();</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a7991ee2d70e1c9f1f8bdf5e46d56802c"> 179</a></span>  <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a7991ee2d70e1c9f1f8bdf5e46d56802c">~ThreadCallGraph</a>()</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span> </div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a4ba42f59f0a6a7ea5b059f6e8df64d89"> 185</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a4ba42f59f0a6a7ea5b059f6e8df64d89">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html">ThreadCallGraph</a> *)</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">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div><div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a5d991e4511fc909dc170a4b03e71d77e"> 189</a></span>  <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a5d991e4511fc909dc170a4b03e71d77e">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> *g)</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  {</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">return</span> g-><a class="code" href="classSVF_1_1PTACallGraph.html#ac6a294ec1c88862c8f7d54000f04e1f7">getKind</a>() == <a class="code" href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1ca4fe819bb1488afc48b04c1b7bef04bc2">PTACallGraph::ThdCallGraph</a>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="keywordtype">void</span> updateCallGraph(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordtype">void</span> updateJoinEdge(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta);</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="l00202"></a><span class="lineno"> 202</span> </div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> hasThreadForkEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">return</span> callinstToThreadForkEdgesMap.find(cs) != callinstToThreadForkEdgesMap.end();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  }</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576"> 208</a></span>  <span class="keyword">inline</span> ForkEdgeSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a8721610a39212613ad55bbd46a35c576">getForkEdgeBegin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  CallInstToForkEdgesMap::const_iterator it = callinstToThreadForkEdgesMap.find(cs);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  assert(it != callinstToThreadForkEdgesMap.end() && <span class="stringliteral">"call instruction not found"</span>);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">return</span> it->second.begin();</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1"> 214</a></span>  <span class="keyword">inline</span> ForkEdgeSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a8351e7ab445cb7faf0209d1fbc63fce1">getForkEdgeEnd</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  CallInstToForkEdgesMap::const_iterator it = callinstToThreadForkEdgesMap.find(cs);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  assert(it != callinstToThreadForkEdgesMap.end() && <span class="stringliteral">"call instruction not found"</span>);</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">return</span> it->second.end();</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span> </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> hasThreadJoinEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">return</span> callinstToThreadJoinEdgesMap.find(cs) != callinstToThreadJoinEdgesMap.end();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  }</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#af848d7cb8a9f756ff45cca45adbf3b84"> 228</a></span>  <span class="keyword">inline</span> JoinEdgeSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#af848d7cb8a9f756ff45cca45adbf3b84">getJoinEdgeBegin</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  CallInstToJoinEdgesMap::const_iterator it = callinstToThreadJoinEdgesMap.find(cs);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  assert(it != callinstToThreadJoinEdgesMap.end() && <span class="stringliteral">"call instruction does not have a valid callee"</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordflow">return</span> it->second.begin();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a811d7d13c05c71bd816621a9a8765365"> 234</a></span>  <span class="keyword">inline</span> JoinEdgeSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a811d7d13c05c71bd816621a9a8765365">getJoinEdgeEnd</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)<span class="keyword"> const</span></div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  CallInstToJoinEdgesMap::const_iterator it = callinstToThreadJoinEdgesMap.find(cs);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  assert(it != callinstToThreadJoinEdgesMap.end() && <span class="stringliteral">"call instruction does not have a valid callee"</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">return</span> it->second.end();</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#aa8be8d48d680b3f2e61b2d8af5e9eddc"> 240</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#aa8be8d48d680b3f2e61b2d8af5e9eddc">getJoinSites</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* routine, InstSet& csSet)</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>(CallInstToJoinEdgesMap::const_iterator it = callinstToThreadJoinEdgesMap.begin(), eit = callinstToThreadJoinEdgesMap.end(); 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>  <span class="keywordflow">for</span>(JoinEdgeSet::const_iterator jit = it->second.begin(), ejit = it->second.end(); jit!=ejit; ++jit)</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span>((*jit)->getDstNode() == routine)</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>  csSet.insert(it->first);</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>  }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a07d3db6ffe8d75effd6fbc3856c484fe"> 257</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a07d3db6ffe8d75effd6fbc3856c484fe">isForksite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* csInst)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> forksites.find(csInst) != forksites.end();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#ac75a38384cda8379c32b4d01d4d5d20a"> 261</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#ac75a38384cda8379c32b4d01d4d5d20a">isJoinsite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* csInst)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">return</span> joinsites.find(csInst) != joinsites.end();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  }</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#ae18f0b3245694145f6d9262ee28c6453"> 265</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#ae18f0b3245694145f6d9262ee28c6453">isParForSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* csInst)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">return</span> parForSites.find(csInst) != parForSites.end();</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e"> 273</a></span>  <span class="keyword">inline</span> CallSiteSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a37f2e076713a9aeb0e4313fb05dfb92e">forksitesBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="keywordflow">return</span> forksites.begin();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  }</div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825"> 277</a></span>  <span class="keyword">inline</span> CallSiteSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a1ebbd26c17cff1c1a1bee9caa9a8f825">forksitesEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> forksites.end();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  }</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> </div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d"> 285</a></span>  <span class="keyword">inline</span> CallSiteSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a98ecfe14be2d38d292b5919716cdd29d">joinsitesBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> joinsites.begin();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  }</div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057"> 289</a></span>  <span class="keyword">inline</span> CallSiteSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a50502f398e5eac9c6da3e26ea6052057">joinsitesEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">return</span> joinsites.end();</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span> </div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a29c74634b17007e5bef6fb48e1f3839f"> 297</a></span>  <span class="keyword">inline</span> CallSiteSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a29c74634b17007e5bef6fb48e1f3839f">parForSitesBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="keywordflow">return</span> parForSites.begin();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a506343bcd23ba71d2db915ff7c58e728"> 301</a></span>  <span class="keyword">inline</span> CallSiteSet::const_iterator <a class="code" href="classSVF_1_1ThreadCallGraph.html#a506343bcd23ba71d2db915ff7c58e728">parForSitesEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="keywordflow">return</span> parForSites.end();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#aa847760765aae18bcb93b260a881441b"> 309</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#aa847760765aae18bcb93b260a881441b">getNumOfForksite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> forksites.size();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  }</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a733bf08c7a496435ad09a41e6b0343ff"> 313</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a733bf08c7a496435ad09a41e6b0343ff">getNumOfJoinsite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">return</span> joinsites.size();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#ad883eb92aece6818a3a0a261fa3407ce"> 317</a></span>  <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1ThreadCallGraph.html#ad883eb92aece6818a3a0a261fa3407ce">getNumOfParForSite</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">return</span> parForSites.size();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span> </div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10"> 324</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* <a class="code" href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">getThreadAPI</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">return</span> tdAPI;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span> </div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div><div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91"> 331</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91">addForksite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  callinstToThreadForkEdgesMap[cs];</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keywordflow">return</span> forksites.insert(cs).second;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  }</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a795d504a098634b1725af272b37e46e7"> 336</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a795d504a098634b1725af272b37e46e7">addJoinsite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  callinstToThreadJoinEdgesMap[cs];</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">return</span> joinsites.insert(cs).second;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  }</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a69719915e8c23e3afd6766daea946ffe"> 341</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a69719915e8c23e3afd6766daea946ffe">addParForSite</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  {</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  callinstToHareParForEdgesMap[cs];</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">return</span> parForSites.insert(cs).second;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  }</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span> </div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordtype">void</span> addDirectForkEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="keywordtype">void</span> addIndirectForkEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span> </div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordtype">void</span> addDirectJoinEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs,<span class="keyword">const</span> CallSiteSet& forksite);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span> </div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordtype">void</span> addDirectParForEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordtype">void</span> addIndirectParForEdge(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div><div class="line"><a name="l00367"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300"> 367</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300">addThreadForkEdgeSetMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <a class="code" href="classSVF_1_1ThreadForkEdge.html">ThreadForkEdge</a>* edge)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  {</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">if</span>(edge!=<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  {</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  callinstToThreadForkEdgesMap[cs].insert(edge);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  callinstToCallGraphEdgesMap[cs].insert(edge);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  }</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span> </div><div class="line"><a name="l00377"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a7100a68c27a965927975e26bb06e061c"> 377</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#a7100a68c27a965927975e26bb06e061c">addThreadJoinEdgeSetMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <a class="code" href="classSVF_1_1ThreadJoinEdge.html">ThreadJoinEdge</a>* edge)</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="keywordflow">if</span>(edge!=<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  {</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  callinstToThreadJoinEdgesMap[cs].insert(edge);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  callinstToCallGraphEdgesMap[cs].insert(edge);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  }</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#aae1caa7231ab9436db98403d6a175149"> 387</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ThreadCallGraph.html#aae1caa7231ab9436db98403d6a175149">addHareParForEdgeSetMap</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs, <a class="code" href="classSVF_1_1HareParForEdge.html">HareParForEdge</a>* edge)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  {</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordflow">if</span>(edge!=<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  callinstToHareParForEdgesMap[cs].insert(edge);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  callinstToCallGraphEdgesMap[cs].insert(edge);</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span> </div><div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a98214e970762f43d0e9ad719961b4021"> 397</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ThreadJoinEdge.html">ThreadJoinEdge</a>* <a class="code" href="classSVF_1_1ThreadCallGraph.html#a98214e970762f43d0e9ad719961b4021">hasThreadJoinEdge</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* call, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* joinFunNode, <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* threadRoutineFunNode, <a class="code" href="namespaceSVF.html#a03d88a0302bcd253387690f13f693f64">CallSiteID</a> <a class="code" href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">csId</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <a class="code" href="classSVF_1_1ThreadJoinEdge.html">ThreadJoinEdge</a> joinEdge(joinFunNode,threadRoutineFunNode, csId);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  CallInstToJoinEdgesMap::const_iterator it = callinstToThreadJoinEdgesMap.find(call);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">if</span>(it != callinstToThreadJoinEdgesMap.end())</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  JoinEdgeSet::const_iterator jit = it->second.find(&joinEdge);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="keywordflow">if</span>(jit!=it->second.end())</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> *jit;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  }</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> </div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00411"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#af1146c3d8e8b8885a1c48701e5b5a27f"> 411</a></span>  <a class="code" href="classSVF_1_1ThreadAPI.html">ThreadAPI</a>* <a class="code" href="classSVF_1_1ThreadCallGraph.html#af1146c3d8e8b8885a1c48701e5b5a27f">tdAPI</a>; </div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a69b86668a04dc3e5bb85ab4f3f0fce27"> 412</a></span>  CallSiteSet <a class="code" href="classSVF_1_1ThreadCallGraph.html#a69b86668a04dc3e5bb85ab4f3f0fce27">forksites</a>; </div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#aab32b67b314b31d67d58efded50e8f45"> 413</a></span>  CallSiteSet <a class="code" href="classSVF_1_1ThreadCallGraph.html#aab32b67b314b31d67d58efded50e8f45">joinsites</a>; </div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a6c47e8d4e328bf20d676913f39d842c2"> 414</a></span>  CallSiteSet <a class="code" href="classSVF_1_1ThreadCallGraph.html#a6c47e8d4e328bf20d676913f39d842c2">parForSites</a>; </div><div class="line"><a name="l00415"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a79ba3df9d85eed3c9a55e6797fdcb9b9"> 415</a></span>  CallInstToForkEdgesMap <a class="code" href="classSVF_1_1ThreadCallGraph.html#a79ba3df9d85eed3c9a55e6797fdcb9b9">callinstToThreadForkEdgesMap</a>; </div><div class="line"><a name="l00416"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#af2009968716a3785322e664a712cbb60"> 416</a></span>  CallInstToJoinEdgesMap <a class="code" href="classSVF_1_1ThreadCallGraph.html#af2009968716a3785322e664a712cbb60">callinstToThreadJoinEdgesMap</a>; </div><div class="line"><a name="l00417"></a><span class="lineno"><a class="line" href="classSVF_1_1ThreadCallGraph.html#a42a088dba9cda7a7718685f80f52c928"> 417</a></span>  CallInstToParForEdgesMap <a class="code" href="classSVF_1_1ThreadCallGraph.html#a42a088dba9cda7a7718685f80f52c928">callinstToHareParForEdgesMap</a>; </div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span> };</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span> </div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="preprocessor">#endif </span><span class="comment">/* RCG_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1ThreadJoinEdge_html_abacb4b5e4badee46f9517b2d84798a3e"><div class="ttname"><a href="classSVF_1_1ThreadJoinEdge.html#abacb4b5e4badee46f9517b2d84798a3e">SVF::ThreadJoinEdge::ThreadJoinEdge</a></div><div class="ttdeci">ThreadJoinEdge(PTACallGraphNode *s, PTACallGraphNode *d, CallSiteID csId)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00092">ThreadCallGraph.h:92</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_aa847760765aae18bcb93b260a881441b"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#aa847760765aae18bcb93b260a881441b">SVF::ThreadCallGraph::getNumOfForksite</a></div><div class="ttdeci">u32_t getNumOfForksite() const</div><div class="ttdoc">Num of fork/join sites. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00309">ThreadCallGraph.h:309</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a506343bcd23ba71d2db915ff7c58e728"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a506343bcd23ba71d2db915ff7c58e728">SVF::ThreadCallGraph::parForSitesEnd</a></div><div class="ttdeci">CallSiteSet::const_iterator parForSitesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00301">ThreadCallGraph.h:301</a></div></div>
|
|
72
|
-
<div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
72
|
+
<div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00082">GenericGraph.h:82</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a5b1fe2b2314db947cd5e709b7285fe1ca4fe819bb1488afc48b04c1b7bef04bc2"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5b1fe2b2314db947cd5e709b7285fe1ca4fe819bb1488afc48b04c1b7bef04bc2">SVF::PTACallGraph::ThdCallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00235">PTACallGraph.h:235</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a7100a68c27a965927975e26bb06e061c"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a7100a68c27a965927975e26bb06e061c">SVF::ThreadCallGraph::addThreadJoinEdgeSetMap</a></div><div class="ttdeci">void addThreadJoinEdgeSetMap(const CallICFGNode *cs, ThreadJoinEdge *edge)</div><div class="ttdoc">map call instruction to its CallGraphEdge map </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00377">ThreadCallGraph.h:377</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ab7159178fb88be17c0d522c9f2fc9e8f"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ab7159178fb88be17c0d522c9f2fc9e8f">SVF::ThreadCallGraph::InstVector</a></div><div class="ttdeci">std::vector< const SVFInstruction * > InstVector</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00166">ThreadCallGraph.h:166</a></div></div>
|
|
@@ -79,7 +79,7 @@ $(function() {
|
|
|
79
79
|
<div class="ttc" id="classSVF_1_1HareParForEdge_html"><div class="ttname"><a href="classSVF_1_1HareParForEdge.html">SVF::HareParForEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00127">ThreadCallGraph.h:127</a></div></div>
|
|
80
80
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_af9ca9cfffbba3b68838d41be62c914ac"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#af9ca9cfffbba3b68838d41be62c914ac">SVF::PTACallGraphEdge::getCallSiteID</a></div><div class="ttdeci">CallSiteID getCallSiteID() const</div><div class="ttdoc">Get direct and indirect calls. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00083">PTACallGraph.h:83</a></div></div>
|
|
81
81
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ae18f0b3245694145f6d9262ee28c6453"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ae18f0b3245694145f6d9262ee28c6453">SVF::ThreadCallGraph::isParForSite</a></div><div class="ttdeci">bool isParForSite(const CallICFGNode *csInst)</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00265">ThreadCallGraph.h:265</a></div></div>
|
|
82
|
-
<div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
82
|
+
<div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00078">GenericGraph.h:78</a></div></div>
|
|
83
83
|
<div class="ttc" id="PTACallGraph_8h_html"><div class="ttname"><a href="PTACallGraph_8h.html">PTACallGraph.h</a></div></div>
|
|
84
84
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a98214e970762f43d0e9ad719961b4021"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a98214e970762f43d0e9ad719961b4021">SVF::ThreadCallGraph::hasThreadJoinEdge</a></div><div class="ttdeci">ThreadJoinEdge * hasThreadJoinEdge(const CallICFGNode *call, PTACallGraphNode *joinFunNode, PTACallGraphNode *threadRoutineFunNode, CallSiteID csId) const</div><div class="ttdoc">has thread join edge </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00397">ThreadCallGraph.h:397</a></div></div>
|
|
85
85
|
<div class="ttc" id="classSVF_1_1ThreadForkEdge_html_a4d2c3601a3fd530d178ec00ee3e1bc5d"><div class="ttname"><a href="classSVF_1_1ThreadForkEdge.html#a4d2c3601a3fd530d178ec00ee3e1bc5d">SVF::ThreadForkEdge::classof</a></div><div class="ttdeci">static bool classof(const ThreadForkEdge *)</div><div class="ttdoc">ClassOf. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00060">ThreadCallGraph.h:60</a></div></div>
|
|
@@ -87,7 +87,7 @@ $(function() {
|
|
|
87
87
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a9738544725458bb022b8d5f2dbd281f7a17e0d58fd42d0d493087e698d4ecd838"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a9738544725458bb022b8d5f2dbd281f7a17e0d58fd42d0d493087e698d4ecd838">SVF::PTACallGraphEdge::HareParForEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00058">PTACallGraph.h:58</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a563ebb1ece0adb4bafe5e14b2a024a91"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a563ebb1ece0adb4bafe5e14b2a024a91">SVF::ThreadCallGraph::addForksite</a></div><div class="ttdeci">bool addForksite(const CallICFGNode *cs)</div><div class="ttdoc">Add fork sites which directly or indirectly create a thread. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00331">ThreadCallGraph.h:331</a></div></div>
|
|
89
89
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a811d7d13c05c71bd816621a9a8765365"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a811d7d13c05c71bd816621a9a8765365">SVF::ThreadCallGraph::getJoinEdgeEnd</a></div><div class="ttdeci">JoinEdgeSet::const_iterator getJoinEdgeEnd(const CallICFGNode *cs) const</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00234">ThreadCallGraph.h:234</a></div></div>
|
|
90
|
-
<div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
90
|
+
<div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00074">GenericGraph.h:74</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00266">SVFValue.h:266</a></div></div>
|
|
92
92
|
<div class="ttc" id="classSVF_1_1ThreadForkEdge_html_ae40d52a9080627661aad198adf5f411a"><div class="ttname"><a href="classSVF_1_1ThreadForkEdge.html#ae40d52a9080627661aad198adf5f411a">SVF::ThreadForkEdge::classof</a></div><div class="ttdeci">static bool classof(const PTACallGraphEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00064">ThreadCallGraph.h:64</a></div></div>
|
|
93
93
|
<div class="ttc" id="classSVF_1_1ThreadForkEdge_html_a8be8c59b7c254b5b3e7f05913c3df158"><div class="ttname"><a href="classSVF_1_1ThreadForkEdge.html#a8be8c59b7c254b5b3e7f05913c3df158">SVF::ThreadForkEdge::~ThreadForkEdge</a></div><div class="ttdeci">virtual ~ThreadForkEdge()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00054">ThreadCallGraph.h:54</a></div></div>
|
|
@@ -107,8 +107,8 @@ $(function() {
|
|
|
107
107
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ab20211a66583387f0da4769bee65e300"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ab20211a66583387f0da4769bee65e300">SVF::ThreadCallGraph::addThreadForkEdgeSetMap</a></div><div class="ttdeci">void addThreadForkEdgeSetMap(const CallICFGNode *cs, ThreadForkEdge *edge)</div><div class="ttdoc">map call instruction to its CallGraphEdge map </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00367">ThreadCallGraph.h:367</a></div></div>
|
|
108
108
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_adcad8524a53baf256cd45503ec568c10"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#adcad8524a53baf256cd45503ec568c10">SVF::ThreadCallGraph::getThreadAPI</a></div><div class="ttdeci">ThreadAPI * getThreadAPI() const</div><div class="ttdoc">Thread API. </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00324">ThreadCallGraph.h:324</a></div></div>
|
|
109
109
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a6c47e8d4e328bf20d676913f39d842c2"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a6c47e8d4e328bf20d676913f39d842c2">SVF::ThreadCallGraph::parForSites</a></div><div class="ttdeci">CallSiteSet parForSites</div><div class="ttdoc">all parallel for sites </div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00414">ThreadCallGraph.h:414</a></div></div>
|
|
110
|
-
<div class="ttc" id="classSVF_1_1GenericNode_html_a03c6da4a73c47f84f5c5b47252bc339a"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">SVF::GenericNode::GEdgeSetTy</a></div><div class="ttdeci">OrderedSet< EdgeType *, typename EdgeType::equalGEdge > GEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
111
|
-
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
110
|
+
<div class="ttc" id="classSVF_1_1GenericNode_html_a03c6da4a73c47f84f5c5b47252bc339a"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a03c6da4a73c47f84f5c5b47252bc339a">SVF::GenericNode::GEdgeSetTy</a></div><div class="ttdeci">OrderedSet< EdgeType *, typename EdgeType::equalGEdge > GEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00141">GenericGraph.h:141</a></div></div>
|
|
111
|
+
<div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00094">GenericGraph.h:94</a></div></div>
|
|
112
112
|
<div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00094">SVFType.h:94</a></div></div>
|
|
113
113
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a5d991e4511fc909dc170a4b03e71d77e"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a5d991e4511fc909dc170a4b03e71d77e">SVF::ThreadCallGraph::classof</a></div><div class="ttdeci">static bool classof(const PTACallGraph *g)</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00189">ThreadCallGraph.h:189</a></div></div>
|
|
114
114
|
<div class="ttc" id="classSVF_1_1HareParForEdge_html_ac352ec0ba628ac5fe96b1f6d74808cb2"><div class="ttname"><a href="classSVF_1_1HareParForEdge.html#ac352ec0ba628ac5fe96b1f6d74808cb2">SVF::HareParForEdge::ParForEdgeSet</a></div><div class="ttdeci">GenericNode< PTACallGraphNode, HareParForEdge >::GEdgeSetTy ParForEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00153">ThreadCallGraph.h:153</a></div></div>
|
|
@@ -127,7 +127,7 @@ $(function() {
|
|
|
127
127
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_add85c5647bd0423770fb0fb35426e0cb"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#add85c5647bd0423770fb0fb35426e0cb">SVF::ThreadCallGraph::CallToInstMap</a></div><div class="ttdeci">Map< const SVFInstruction *, InstSet > CallToInstMap</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00167">ThreadCallGraph.h:167</a></div></div>
|
|
128
128
|
<div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a7488c5125d55e56ec427ef0d8ee88999"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a7488c5125d55e56ec427ef0d8ee88999">SVF::PTACallGraphEdge::csId</a></div><div class="ttdeci">CallSiteID csId</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00065">PTACallGraph.h:65</a></div></div>
|
|
129
129
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_a304ba7ef48068fa019c69af5744842cc"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#a304ba7ef48068fa019c69af5744842cc">SVF::ThreadCallGraph::CtxSet</a></div><div class="ttdeci">Set< CallSiteSet * > CtxSet</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00168">ThreadCallGraph.h:168</a></div></div>
|
|
130
|
-
<div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
130
|
+
<div class="ttc" id="classSVF_1_1GenericEdge_html_ab47ca533c415841ef75456cbad439589"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">SVF::GenericEdge::getSrcNode</a></div><div class="ttdeci">NodeType * getSrcNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00090">GenericGraph.h:90</a></div></div>
|
|
131
131
|
<div class="ttc" id="PointerAnalysisImpl_8h_html"><div class="ttname"><a href="PointerAnalysisImpl_8h.html">PointerAnalysisImpl.h</a></div></div>
|
|
132
132
|
<div class="ttc" id="classSVF_1_1ThreadCallGraph_html_ac75a38384cda8379c32b4d01d4d5d20a"><div class="ttname"><a href="classSVF_1_1ThreadCallGraph.html#ac75a38384cda8379c32b4d01d4d5d20a">SVF::ThreadCallGraph::isJoinsite</a></div><div class="ttdeci">bool isJoinsite(const CallICFGNode *csInst)</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00261">ThreadCallGraph.h:261</a></div></div>
|
|
133
133
|
<div class="ttc" id="classSVF_1_1ThreadJoinEdge_html_acf768ce9925ee75aea865cd9306afda9"><div class="ttname"><a href="classSVF_1_1ThreadJoinEdge.html#acf768ce9925ee75aea865cd9306afda9">SVF::ThreadJoinEdge::JoinEdgeSet</a></div><div class="ttdeci">GenericNode< PTACallGraphNode, ThreadJoinEdge >::GEdgeSetTy JoinEdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="ThreadCallGraph_8h_source.html#l00121">ThreadCallGraph.h:121</a></div></div>
|
|
@@ -67,10 +67,10 @@ $(function() {
|
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
69
|
<a href="TypeAnalysis_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">//===- TypeAnalysis.cpp -- Fast type-based analysis without pointer analysis------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * TypeAnalysis.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: 7 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="Options_8h.html">Util/Options.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="CHG_8h.html">Graphs/CHG.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="preprocessor">#include "<a class="code" href="TypeAnalysis_8h.html">WPA/TypeAnalysis.h</a>"</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="PTAStat_8h.html">Util/PTAStat.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="ICFGStat_8h.html">Graphs/ICFGStat.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="VFG_8h.html">Graphs/VFG.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">using namespace </span><a class="code" href="namespacecppUtil.html">cppUtil</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985"> 44</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a34177236a41f7a2b432243062f829985">TypeAnalysis::initialize</a>()</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">AndersenBase::initialize</a>();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#aea29a835c54fab800117e57de00e0b1e">Options::DumpICFG</a>)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  icfg = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-><a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  icfg-><a class="code" href="classSVF_1_1ICFG.html#a999956500bbd605326531480546db9ba">dump</a>(<span class="stringliteral">"icfg_initial"</span>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  icfg->dump(<span class="stringliteral">"vfg_initial"</span>);</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span> (print_stat)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <a class="code" href="classSVF_1_1ICFGStat.html">ICFGStat</a> stat(icfg);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  stat.<a class="code" href="classSVF_1_1ICFGStat.html#aabe0779dc44ddc4e06300ea912cca39f">performStat</a>();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6"> 61</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a8efef079c8b33e2215f92ac3629789e6">TypeAnalysis::finalize</a>()</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> {</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">AndersenBase::finalize</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span> (print_stat)</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  dumpCHAStats();</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> </div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef"> 68</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">TypeAnalysis::analyze</a>()</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  initialize();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a> newEdges;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  callGraphSolveBasedOnCHA(getIndirectCallsites(), newEdges);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  finalize();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db"> 76</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#aec579b7854aa6a994632d3f7c5d621db">TypeAnalysis::callGraphSolveBasedOnCHA</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>& callsites, <a class="code" href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">CallEdgeMap</a>& newEdges)</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">for</span>(CallSiteToFunPtrMap::const_iterator iter = callsites.begin(), eiter = callsites.end(); iter!=eiter; ++iter)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = iter->first;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(cbn-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span> (cs.<a class="code" href="classSVF_1_1CallSite.html#a100235069232bd9940783a31acfd1169">isVirtualCall</a>())</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="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* vtbl = cs.<a class="code" href="classSVF_1_1CallSite.html#a9b04a0f24be915a6e124106060225a3d">getVtablePtr</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  (void)vtbl; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  assert(pag->hasValueNode(vtbl));</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1PointerAnalysis.html#aa7f15c74eb438be78fcc028534477478">VFunSet</a> vfns;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  getVFnsFromCHA(cbn, vfns);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  connectVCallToVFns(cbn, vfns, newEdges);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2"> 95</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">TypeAnalysis::dumpCHAStats</a>()</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> </div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a> *chgraph = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a><<a class="code" href="classSVF_1_1CHGraph.html">CHGraph</a>>(getCHGraph());</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span> (chgraph == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"dumpCHAStats only implemented for standard CHGraph.\n"</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> pure_abstract_class_num = 0,</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  multi_inheritance_class_num = 0;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  it != eit; ++it)</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>  <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it->second;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"class "</span> << node-><a class="code" href="classSVF_1_1CHNode.html#af6e71c1a932464b1b615fc177f5af089">getName</a>() << <span class="stringliteral">"\n"</span>;</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  pure_abstract_class_num++;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">isMultiInheritance</a>())</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  multi_inheritance_class_num++;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"class_num:\t"</span> << chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">getTotalNodeNum</a>() << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"pure_abstract_class_num:\t"</span> << pure_abstract_class_num << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"multi_inheritance_class_num:\t"</span> << multi_inheritance_class_num << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">/*</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment"> * count the following info:</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="comment"> * vtblnum</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="comment"> * total vfunction</span></div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment"> * vtbl max vfunction</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment"> * pure abstract class</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment"> */</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vtblnum = 0,</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  vfunc_total = 0,</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  vtbl_max = 0,</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  pure_abstract = 0;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  set<const SVFFunction*> allVirtualFunctions;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">CHGraph::const_iterator</a> it = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = chgraph-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  it != eit; ++it)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="classSVF_1_1CHNode.html">CHNode</a> *node = it->second;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span> (node-><a class="code" href="classSVF_1_1CHNode.html#a268ccdfb486cc2efa8581ee7a3b5af39">isPureAbstract</a>())</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  pure_abstract++;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vfuncs_size = 0;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> vector<CHNode::FuncVector>& vecs = node-><a class="code" href="classSVF_1_1CHNode.html#a5df1cf4d51bf3406d188c96bc9aae0af">getVirtualFunctionVectors</a>();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">for</span> (vector<CHNode::FuncVector>::const_iterator vit = vecs.begin(),</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  veit = vecs.end(); vit != veit; ++vit)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  vfuncs_size += (*vit).size();</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">for</span> (vector<const SVFFunction*>::const_iterator fit = (*vit).begin(),</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  feit = (*vit).end(); fit != feit; ++fit)</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="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = *fit;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  allVirtualFunctions.insert(func);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">if</span> (vfuncs_size > 0)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  vtblnum++;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">if</span> (vfuncs_size > vtbl_max)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  vtbl_max = vfuncs_size;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  }</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  vfunc_total = allVirtualFunctions.size();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtblnum:\t"</span> << vtblnum << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtbl_average:\t"</span> << (double)(vfunc_total)/vtblnum << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"vtbl_max:\t"</span> << vtbl_max << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() << <span class="stringliteral">"pure_abstract:\t"</span> << pure_abstract << <span class="charliteral">'\n'</span>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span> </div><div class="ttc" id="TypeAnalysis_8h_html"><div class="ttname"><a href="TypeAnalysis_8h.html">TypeAnalysis.h</a></div></div>
|
|
70
|
-
<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#
|
|
70
|
+
<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#l00368">GenericGraph.h:368</a></div></div>
|
|
71
71
|
<div class="ttc" id="CHG_8h_html"><div class="ttname"><a href="CHG_8h.html">CHG.h</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1AndersenBase_html_a891816407a4c6346f56bc01a67b78aac"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">SVF::AndersenBase::initialize</a></div><div class="ttdeci">virtual void initialize() override</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00073">Andersen.cpp:73</a></div></div>
|
|
73
|
-
<div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#
|
|
73
|
+
<div class="ttc" id="classSVF_1_1GenericGraph_html_a8c8d16036008f87c7811586047599858"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a8c8d16036008f87c7811586047599858">SVF::GenericGraph::getTotalNodeNum</a></div><div class="ttdeci">u32_t getTotalNodeNum() const</div><div class="ttdoc">Get total number of node/edge. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00421">GenericGraph.h:421</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1CHNode_html"><div class="ttname"><a href="classSVF_1_1CHNode.html">SVF::CHNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00104">CHG.h:104</a></div></div>
|
|
75
75
|
<div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00194">SVFUtil.h:194</a></div></div>
|
|
76
76
|
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a124fc67578745cde9e74bb36aced25a2"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a124fc67578745cde9e74bb36aced25a2">SVF::TypeAnalysis::dumpCHAStats</a></div><div class="ttdeci">void dumpCHAStats()</div><div class="ttdoc">Statistics of CHA and callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00095">TypeAnalysis.cpp:95</a></div></div>
|
|
@@ -78,7 +78,7 @@ $(function() {
|
|
|
78
78
|
<div class="ttc" id="VFG_8h_html"><div class="ttname"><a href="VFG_8h.html">VFG.h</a></div></div>
|
|
79
79
|
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
|
|
80
80
|
<div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * 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="SVFIR_8h_source.html#l00107">SVFIR.h:107</a></div></div>
|
|
81
|
-
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::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#
|
|
81
|
+
<div class="ttc" id="classSVF_1_1GenericGraph_html_a5dfa3f178d4abf37177d0d74ff4c6a97"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a5dfa3f178d4abf37177d0d74ff4c6a97">SVF::GenericGraph::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#l00346">GenericGraph.h:346</a></div></div>
|
|
82
82
|
<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="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
|
|
83
83
|
<div class="ttc" id="classSVF_1_1CHGraph_html"><div class="ttname"><a href="classSVF_1_1CHGraph.html">SVF::CHGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00208">CHG.h:208</a></div></div>
|
|
84
84
|
<div class="ttc" id="classSVF_1_1CHNode_html_a224a394537fae62e64cf62a0d4fdd430"><div class="ttname"><a href="classSVF_1_1CHNode.html#a224a394537fae62e64cf62a0d4fdd430">SVF::CHNode::isMultiInheritance</a></div><div class="ttdeci">bool isMultiInheritance() const</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8h_source.html#l00157">CHG.h:157</a></div></div>
|
|
@@ -86,7 +86,7 @@ $(function() {
|
|
|
86
86
|
<div class="ttc" id="classSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00147">SVFValue.h:147</a></div></div>
|
|
87
87
|
<div class="ttc" id="classSVF_1_1TypeAnalysis_html_a6073fc43443ceba8d77212ba04e483ef"><div class="ttname"><a href="classSVF_1_1TypeAnalysis.html#a6073fc43443ceba8d77212ba04e483ef">SVF::TypeAnalysis::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdoc">Type analysis. </div><div class="ttdef"><b>Definition:</b> <a href="TypeAnalysis_8cpp_source.html#l00068">TypeAnalysis.cpp:68</a></div></div>
|
|
88
88
|
<div class="ttc" id="classSVF_1_1PointerAnalysis_html_a35bd5f0fb2c146199e9f1aa6a19b4062"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a35bd5f0fb2c146199e9f1aa6a19b4062">SVF::PointerAnalysis::CallEdgeMap</a></div><div class="ttdeci">OrderedMap< const CallICFGNode *, FunctionSet > CallEdgeMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00106">PointerAnalysis.h:106</a></div></div>
|
|
89
|
-
<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#
|
|
89
|
+
<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#l00372">GenericGraph.h:372</a></div></div>
|
|
90
90
|
<div class="ttc" id="classSVF_1_1ICFGStat_html"><div class="ttname"><a href="classSVF_1_1ICFGStat.html">SVF::ICFGStat</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGStat_8h_source.html#l00039">ICFGStat.h:39</a></div></div>
|
|
91
91
|
<div class="ttc" id="classSVF_1_1CallSite_html_a9b04a0f24be915a6e124106060225a3d"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9b04a0f24be915a6e124106060225a3d">SVF::CallSite::getVtablePtr</a></div><div class="ttdeci">const SVFValue * getVtablePtr() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l01080">SVFValue.h:1080</a></div></div>
|
|
92
92
|
<div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
|