svf-tools 1.0.348 → 1.0.352
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +6 -5
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/Andersen_8h_source.html +13 -13
- package/SVF-doxygen/html/html/CHG_8h_source.html +7 -7
- package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
- package/SVF-doxygen/html/html/Conditions_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +45 -46
- package/SVF-doxygen/html/html/ConsG_8h_source.html +22 -22
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -8
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8h_source.html +4 -4
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -2
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +24 -22
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +17 -17
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +15 -14
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +25 -25
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +7 -8
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +7 -8
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +13 -6
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +12 -14
- package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -6
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +4 -5
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +9 -10
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -4
- package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +4 -4
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +2 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +53 -55
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +39 -41
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +38 -41
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +22 -24
- package/SVF-doxygen/html/html/SVFStatements_8h.html +0 -4
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +150 -160
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +101 -100
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +3 -4
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +14 -13
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +13 -13
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +50 -51
- package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/html/annotated.html +100 -102
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +46 -46
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +64 -64
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +29 -29
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +43 -42
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +30 -31
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +34 -39
- package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +30 -31
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +32 -33
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +33 -34
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +47 -48
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1CHEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1CHNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +29 -30
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +35 -36
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +32 -33
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +33 -34
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +99 -100
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +68 -68
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1DCHNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +37 -37
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +9 -8
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +134 -134
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +93 -92
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +43 -42
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +18 -16
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +148 -59
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +49 -49
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +7 -8
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +29 -30
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +120 -150
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MRVer-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRVer.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +35 -36
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +41 -42
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +11 -12
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +32 -33
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +32 -33
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +29 -30
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +35 -36
- package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +110 -111
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +152 -151
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +67 -71
- package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +26 -27
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +27 -28
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +28 -29
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +28 -29
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +28 -29
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +28 -29
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +22 -21
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +31 -32
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +39 -40
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +79 -80
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +20 -20
- package/SVF-doxygen/html/html/classes.html +95 -93
- package/SVF-doxygen/html/html/functions_a.html +19 -16
- package/SVF-doxygen/html/html/functions_c.html +22 -22
- package/SVF-doxygen/html/html/functions_eval_g.html +2 -1
- package/SVF-doxygen/html/html/functions_eval_n.html +0 -1
- package/SVF-doxygen/html/html/functions_eval_v.html +0 -1
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +20 -17
- package/SVF-doxygen/html/html/functions_func_c.html +20 -22
- package/SVF-doxygen/html/html/functions_func_f.html +1 -1
- package/SVF-doxygen/html/html/functions_func_g.html +37 -40
- package/SVF-doxygen/html/html/functions_func_i.html +8 -5
- package/SVF-doxygen/html/html/functions_func_n.html +0 -3
- package/SVF-doxygen/html/html/functions_func_o.html +5 -7
- package/SVF-doxygen/html/html/functions_func_r.html +2 -2
- package/SVF-doxygen/html/html/functions_func_s.html +1 -1
- package/SVF-doxygen/html/html/functions_func_t.html +0 -2
- package/SVF-doxygen/html/html/functions_func_v.html +1 -4
- package/SVF-doxygen/html/html/functions_g.html +30 -32
- package/SVF-doxygen/html/html/functions_i.html +13 -10
- package/SVF-doxygen/html/html/functions_l.html +4 -4
- package/SVF-doxygen/html/html/functions_m.html +3 -3
- package/SVF-doxygen/html/html/functions_n.html +23 -27
- package/SVF-doxygen/html/html/functions_o.html +6 -8
- package/SVF-doxygen/html/html/functions_p.html +7 -7
- package/SVF-doxygen/html/html/functions_r.html +2 -2
- package/SVF-doxygen/html/html/functions_s.html +7 -5
- package/SVF-doxygen/html/html/functions_t.html +4 -8
- package/SVF-doxygen/html/html/functions_type_g.html +3 -3
- package/SVF-doxygen/html/html/functions_type_n.html +1 -1
- package/SVF-doxygen/html/html/functions_type_o.html +1 -1
- package/SVF-doxygen/html/html/functions_v.html +10 -11
- package/SVF-doxygen/html/html/functions_vars_a.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_f.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_m.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_n.html +22 -22
- package/SVF-doxygen/html/html/functions_vars_t.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_v.html +5 -2
- package/SVF-doxygen/html/html/functions_w.html +5 -9
- package/SVF-doxygen/html/html/hierarchy.html +55 -57
- package/SVF-doxygen/html/html/namespaceSVF.html +22 -26
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +5 -5
- package/SVF-doxygen/html/html/namespacemembers_s.html +3 -3
- package/SVF-doxygen/html/html/namespacemembers_type_s.html +3 -3
- package/SVF-doxygen/html/html/search/all_1.js +9 -8
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_12.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +9 -9
- package/SVF-doxygen/html/html/search/all_14.js +6 -6
- package/SVF-doxygen/html/html/search/all_16.js +7 -7
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_6.js +3 -3
- package/SVF-doxygen/html/html/search/all_7.js +19 -20
- package/SVF-doxygen/html/html/search/all_9.js +4 -3
- package/SVF-doxygen/html/html/search/all_c.js +3 -3
- package/SVF-doxygen/html/html/search/all_d.js +5 -5
- package/SVF-doxygen/html/html/search/all_e.js +20 -21
- package/SVF-doxygen/html/html/search/all_f.js +4 -4
- package/SVF-doxygen/html/html/search/classes_12.js +0 -1
- package/SVF-doxygen/html/html/search/classes_b.js +0 -1
- package/SVF-doxygen/html/html/search/enumvalues_12.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_6.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_0.js +8 -7
- package/SVF-doxygen/html/html/search/functions_10.js +1 -1
- package/SVF-doxygen/html/html/search/functions_11.js +1 -1
- package/SVF-doxygen/html/html/search/functions_13.js +1 -2
- package/SVF-doxygen/html/html/search/functions_2.js +1 -1
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/functions_6.js +16 -17
- package/SVF-doxygen/html/html/search/functions_8.js +3 -2
- package/SVF-doxygen/html/html/search/functions_a.js +1 -1
- package/SVF-doxygen/html/html/search/functions_c.js +0 -1
- package/SVF-doxygen/html/html/search/functions_d.js +3 -3
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_f.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_6.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_1.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +4 -4
- package/SVF-doxygen/html/html/search/variables_16.js +3 -2
- package/SVF-doxygen/html/html/search/variables_6.js +2 -2
- package/SVF-doxygen/html/html/search/variables_d.js +3 -3
- package/SVF-doxygen/html/html/search/variables_e.js +18 -18
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +5 -5
- package/include/Graphs/CHG.h +6 -6
- package/include/Graphs/ConsG.h +2 -2
- package/include/Graphs/ConsGEdge.h +1 -1
- package/include/Graphs/ConsGNode.h +16 -16
- package/include/Graphs/GenericGraph.h +4 -4
- package/include/Graphs/IRGraph.h +5 -5
- package/include/Graphs/PTACallGraph.h +2 -2
- package/include/Graphs/VFG.h +2 -2
- package/include/MSSA/MSSAMuChi.h +1 -1
- package/include/MSSA/MemRegion.h +2 -2
- package/include/MemoryModel/LocationSet.h +10 -48
- package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
- package/include/MemoryModel/PointerAnalysis.h +1 -1
- package/include/MemoryModel/SVFIR.h +5 -5
- package/include/MemoryModel/SVFStatements.h +18 -95
- package/include/MemoryModel/SVFVariables.h +9 -6
- package/include/MemoryModel/SymbolTableInfo.h +3 -3
- package/include/SVF-FE/DCHG.h +1 -1
- package/include/SVF-FE/SVFIRBuilder.h +7 -7
- package/include/Util/IRAnnotator.h +3 -3
- package/include/Util/SVFBasicTypes.h +3 -3
- package/include/WPA/Andersen.h +11 -11
- package/include/WPA/AndersenSFR.h +1 -1
- package/include/WPA/CSC.h +1 -1
- package/include/WPA/FlowSensitive.h +13 -13
- package/include/WPA/VersionedFlowSensitive.h +2 -2
- package/lib/DDA/ContextDDA.cpp +4 -5
- package/lib/DDA/DDAClient.cpp +6 -6
- package/lib/DDA/DDAStat.cpp +1 -1
- package/lib/DDA/FlowDDA.cpp +4 -5
- package/lib/Graphs/ConsG.cpp +30 -35
- package/lib/Graphs/ICFG.cpp +1 -1
- package/lib/Graphs/SVFG.cpp +2 -2
- package/lib/Graphs/SVFGStat.cpp +2 -2
- package/lib/Graphs/VFG.cpp +36 -43
- package/lib/MSSA/MemRegion.cpp +2 -2
- package/lib/MTA/MHP.cpp +2 -2
- package/lib/MTA/MTAAnnotator.cpp +3 -3
- package/lib/MemoryModel/LocationSet.cpp +49 -9
- package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -3
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
- package/lib/MemoryModel/SVFIR.cpp +27 -35
- package/lib/MemoryModel/SVFStatements.cpp +0 -22
- package/lib/MemoryModel/SVFVariables.cpp +1 -1
- package/lib/MemoryModel/SymbolTableInfo.cpp +4 -4
- package/lib/SVF-FE/CPPUtil.cpp +6 -6
- package/lib/SVF-FE/DCHG.cpp +1 -1
- package/lib/SVF-FE/Graph2Json.cpp +24 -27
- package/lib/SVF-FE/LLVMUtil.cpp +1 -1
- package/lib/SVF-FE/SVFIRBuilder.cpp +14 -13
- package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
- package/lib/Util/Conditions.cpp +1 -1
- package/lib/Util/PTAStat.cpp +9 -9
- package/lib/Util/TypeBasedHeapCloning.cpp +6 -6
- package/lib/WPA/Andersen.cpp +13 -13
- package/lib/WPA/AndersenSFR.cpp +8 -8
- package/lib/WPA/AndersenStat.cpp +2 -2
- package/lib/WPA/CSC.cpp +6 -6
- package/lib/WPA/FlowSensitive.cpp +4 -7
- package/lib/WPA/FlowSensitiveStat.cpp +2 -2
- package/lib/WPA/FlowSensitiveTBHC.cpp +6 -9
- package/lib/WPA/TypeAnalysis.cpp +3 -3
- package/package.json +1 -1
|
@@ -39,26 +39,29 @@ using namespace SVFUtil;
|
|
|
39
39
|
/*!
|
|
40
40
|
* Add offset value to vector offsetValues
|
|
41
41
|
*/
|
|
42
|
-
bool LocationSet::addOffsetValue(const Value* offsetVal)
|
|
42
|
+
bool LocationSet::addOffsetValue(const Value* offsetVal, const Type* type)
|
|
43
43
|
{
|
|
44
|
-
|
|
45
|
-
if(val==offsetVal)
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
offsetValues.push_back(offsetVal);
|
|
44
|
+
offsetValues.push_back(std::make_pair(offsetVal,type));
|
|
49
45
|
return true;
|
|
50
46
|
}
|
|
51
47
|
|
|
52
48
|
/// Return TRUE if all offset values are constants
|
|
53
49
|
bool LocationSet::isConstantOffset() const
|
|
54
50
|
{
|
|
55
|
-
for(
|
|
56
|
-
if(SVFUtil::isa<ConstantInt>(
|
|
51
|
+
for(auto it : offsetValues){
|
|
52
|
+
if(SVFUtil::isa<ConstantInt>(it.first) == false)
|
|
57
53
|
return false;
|
|
58
54
|
}
|
|
59
55
|
return true;
|
|
60
56
|
}
|
|
61
57
|
|
|
58
|
+
/// Return accmuated constant offset
|
|
59
|
+
/// offsetValues: [(v1,t1), (v2,t2), (v3,t3)]
|
|
60
|
+
/// v1*sz(t2) + v2*sz(t3) + v3
|
|
61
|
+
s64_t LocationSet::accumulateConstantOffset() const{
|
|
62
|
+
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
62
65
|
/*!
|
|
63
66
|
* Compute all possible locations according to offset and number-stride pairs.
|
|
64
67
|
*/
|
|
@@ -69,6 +72,43 @@ NodeBS LocationSet::computeAllLocations() const
|
|
|
69
72
|
return result;
|
|
70
73
|
}
|
|
71
74
|
|
|
75
|
+
LocationSet LocationSet::operator+ (const LocationSet& rhs) const
|
|
76
|
+
{
|
|
77
|
+
LocationSet ls(rhs);
|
|
78
|
+
ls.fldIdx += accumulateConstantFieldIdx();
|
|
79
|
+
OffsetValueVec::const_iterator it = getOffsetValueVec().begin();
|
|
80
|
+
OffsetValueVec::const_iterator eit = getOffsetValueVec().end();
|
|
81
|
+
for (; it != eit; ++it)
|
|
82
|
+
ls.addOffsetValue(it->first, it->second);
|
|
83
|
+
|
|
84
|
+
return ls;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
bool LocationSet::operator< (const LocationSet& rhs) const
|
|
89
|
+
{
|
|
90
|
+
if (fldIdx != rhs.fldIdx)
|
|
91
|
+
return (fldIdx < rhs.fldIdx);
|
|
92
|
+
else
|
|
93
|
+
{
|
|
94
|
+
const OffsetValueVec& pairVec = getOffsetValueVec();
|
|
95
|
+
const OffsetValueVec& rhsPairVec = rhs.getOffsetValueVec();
|
|
96
|
+
if (pairVec.size() != rhsPairVec.size())
|
|
97
|
+
return (pairVec.size() < rhsPairVec.size());
|
|
98
|
+
else
|
|
99
|
+
{
|
|
100
|
+
OffsetValueVec::const_iterator it = pairVec.begin();
|
|
101
|
+
OffsetValueVec::const_iterator rhsIt = rhsPairVec.begin();
|
|
102
|
+
for (; it != pairVec.end() && rhsIt != rhsPairVec.end(); ++it, ++rhsIt)
|
|
103
|
+
{
|
|
104
|
+
return (*it) < (*rhsIt);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
72
112
|
SVF::LocationSet::LSRelation LocationSet::checkRelation(const LocationSet& LHS, const LocationSet& RHS)
|
|
73
113
|
{
|
|
74
114
|
NodeBS lhsLocations = LHS.computeAllLocations();
|
|
@@ -103,7 +143,7 @@ std::string LocationSet::dump() const
|
|
|
103
143
|
OffsetValueVec::const_iterator eit = vec.end();
|
|
104
144
|
for (; it != eit; ++it)
|
|
105
145
|
{
|
|
106
|
-
rawstr << " (" << value2String(
|
|
146
|
+
rawstr << " (value: " << value2String(it->first) << " type: " << it->second << ")";
|
|
107
147
|
}
|
|
108
148
|
rawstr << " }\n";
|
|
109
149
|
return rawstr.str();
|
|
@@ -67,7 +67,7 @@ SVFIR* PAGBuilderFromFile::build()
|
|
|
67
67
|
{
|
|
68
68
|
getline(myfile, line);
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
u32_t token_count = 0;
|
|
71
71
|
string tmps;
|
|
72
72
|
istringstream ss(line);
|
|
73
73
|
while (ss.good())
|
|
@@ -103,7 +103,7 @@ SVFIR* PAGBuilderFromFile::build()
|
|
|
103
103
|
{
|
|
104
104
|
NodeID nodeSrc;
|
|
105
105
|
NodeID nodeDst;
|
|
106
|
-
|
|
106
|
+
s64_t offsetOrCSId;
|
|
107
107
|
string edge;
|
|
108
108
|
istringstream ss(line);
|
|
109
109
|
ss >> nodeSrc;
|
|
@@ -144,7 +144,7 @@ SVFIR* PAGBuilderFromFile::build()
|
|
|
144
144
|
* Add SVFIR edge according to a file format
|
|
145
145
|
*/
|
|
146
146
|
void PAGBuilderFromFile::addEdge(NodeID srcID, NodeID dstID,
|
|
147
|
-
|
|
147
|
+
s64_t offsetOrCSId, std::string edge)
|
|
148
148
|
{
|
|
149
149
|
|
|
150
150
|
//check whether these two nodes available
|
|
@@ -154,7 +154,7 @@ void BVDataPTAImpl::writeToFile(const string& filename)
|
|
|
154
154
|
{
|
|
155
155
|
F.os() << it->first << " ";
|
|
156
156
|
F.os() << pag->getBaseObjVar(it->first) << " ";
|
|
157
|
-
F.os() << gepObjPN->
|
|
157
|
+
F.os() << gepObjPN->getConstantFieldIdx() << "\n";
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
|
|
@@ -312,7 +312,7 @@ GepStmt* SVFIR::addGepStmt(NodeID src, NodeID dst, const LocationSet& ls, bool c
|
|
|
312
312
|
if (!constGep || node->hasIncomingVariantGepEdge())
|
|
313
313
|
{
|
|
314
314
|
/// Since the offset from base to src is variant,
|
|
315
|
-
/// the new gep edge being created is also a
|
|
315
|
+
/// the new gep edge being created is also a Variant GepStmt edge.
|
|
316
316
|
return addVariantGepStmt(src, dst, ls);
|
|
317
317
|
}
|
|
318
318
|
else
|
|
@@ -324,16 +324,16 @@ GepStmt* SVFIR::addGepStmt(NodeID src, NodeID dst, const LocationSet& ls, bool c
|
|
|
324
324
|
/*!
|
|
325
325
|
* Add normal (Gep) edge
|
|
326
326
|
*/
|
|
327
|
-
|
|
327
|
+
GepStmt* SVFIR::addNormalGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
|
|
328
328
|
{
|
|
329
329
|
const LocationSet& baseLS = getLocationSetFromBaseNode(src);
|
|
330
330
|
SVFVar* baseNode = getGNode(getBaseValVar(src));
|
|
331
331
|
SVFVar* dstNode = getGNode(dst);
|
|
332
|
-
if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::
|
|
333
|
-
return SVFUtil::cast<
|
|
332
|
+
if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::Gep))
|
|
333
|
+
return SVFUtil::cast<GepStmt>(edge);
|
|
334
334
|
else
|
|
335
335
|
{
|
|
336
|
-
|
|
336
|
+
GepStmt* gepPE = new GepStmt(baseNode, dstNode, baseLS+ls);
|
|
337
337
|
addToStmt2TypeMap(gepPE);
|
|
338
338
|
addEdge(baseNode, dstNode, gepPE);
|
|
339
339
|
return gepPE;
|
|
@@ -344,16 +344,16 @@ NormalGepStmt* SVFIR::addNormalGepStmt(NodeID src, NodeID dst, const LocationSet
|
|
|
344
344
|
* Add variant(Gep) edge
|
|
345
345
|
* Find the base node id of src and connect base node to dst node
|
|
346
346
|
*/
|
|
347
|
-
|
|
347
|
+
GepStmt* SVFIR::addVariantGepStmt(NodeID src, NodeID dst, const LocationSet& ls)
|
|
348
348
|
{
|
|
349
349
|
const LocationSet& baseLS = getLocationSetFromBaseNode(src);
|
|
350
350
|
SVFVar* baseNode = getGNode(getBaseValVar(src));
|
|
351
351
|
SVFVar* dstNode = getGNode(dst);
|
|
352
|
-
if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::
|
|
353
|
-
return SVFUtil::cast<
|
|
352
|
+
if(SVFStmt* edge = hasNonlabeledEdge(baseNode, dstNode, SVFStmt::Gep))
|
|
353
|
+
return SVFUtil::cast<GepStmt>(edge);
|
|
354
354
|
else
|
|
355
355
|
{
|
|
356
|
-
|
|
356
|
+
GepStmt* gepPE = new GepStmt(baseNode, dstNode,baseLS+ls, true);
|
|
357
357
|
addToStmt2TypeMap(gepPE);
|
|
358
358
|
addEdge(baseNode, dstNode, gepPE);
|
|
359
359
|
return gepPE;
|
|
@@ -500,18 +500,13 @@ NodeBS SVFIR::getFieldsAfterCollapse(NodeID id)
|
|
|
500
500
|
NodeID SVFIR::getBaseValVar(NodeID nodeId)
|
|
501
501
|
{
|
|
502
502
|
SVFVar* node = getGNode(nodeId);
|
|
503
|
-
if (node->hasIncomingEdges(SVFStmt::
|
|
503
|
+
if (node->hasIncomingEdges(SVFStmt::Gep))
|
|
504
504
|
{
|
|
505
|
-
SVFStmt::SVFStmtSetTy&
|
|
506
|
-
SVFStmt::SVFStmtSetTy& vgeps = node->getIncomingEdges(SVFStmt::VariantGep);
|
|
505
|
+
SVFStmt::SVFStmtSetTy& geps = node->getIncomingEdges(SVFStmt::Gep);
|
|
507
506
|
|
|
508
|
-
assert((
|
|
507
|
+
assert((geps.size()==1) && "one node can only be connected by at most one gep edge!");
|
|
509
508
|
|
|
510
|
-
SVFVar::iterator it;
|
|
511
|
-
if(!ngeps.empty())
|
|
512
|
-
it = ngeps.begin();
|
|
513
|
-
else
|
|
514
|
-
it = vgeps.begin();
|
|
509
|
+
SVFVar::iterator it = geps.begin();
|
|
515
510
|
|
|
516
511
|
assert(SVFUtil::isa<GepStmt>(*it) && "not a gep edge??");
|
|
517
512
|
return (*it)->getSrcID();
|
|
@@ -524,22 +519,23 @@ NodeID SVFIR::getBaseValVar(NodeID nodeId)
|
|
|
524
519
|
* Get a base SVFVar given a pointer
|
|
525
520
|
* Return the source node of its connected normal gep edge
|
|
526
521
|
* Otherwise return the node id itself
|
|
527
|
-
*
|
|
522
|
+
* s64_t offset : gep offset
|
|
528
523
|
*/
|
|
529
524
|
LocationSet SVFIR::getLocationSetFromBaseNode(NodeID nodeId)
|
|
530
525
|
{
|
|
531
526
|
SVFVar* node = getGNode(nodeId);
|
|
532
|
-
SVFStmt::SVFStmtSetTy& geps = node->getIncomingEdges(SVFStmt::
|
|
527
|
+
SVFStmt::SVFStmtSetTy& geps = node->getIncomingEdges(SVFStmt::Gep);
|
|
533
528
|
/// if this node is already a base node
|
|
534
529
|
if(geps.empty())
|
|
535
530
|
return LocationSet(0);
|
|
536
531
|
|
|
537
532
|
assert(geps.size()==1 && "one node can only be connected by at most one gep edge!");
|
|
538
533
|
SVFVar::iterator it = geps.begin();
|
|
539
|
-
const
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
534
|
+
const GepStmt* gepEdge = SVFUtil::cast<GepStmt>(*it);
|
|
535
|
+
if(gepEdge->isVariantFieldGep())
|
|
536
|
+
return LocationSet(0);
|
|
537
|
+
else
|
|
538
|
+
return gepEdge->getLocationSet();
|
|
543
539
|
}
|
|
544
540
|
|
|
545
541
|
/*!
|
|
@@ -606,21 +602,17 @@ void SVFIR::print()
|
|
|
606
602
|
<< (*iter)->getDstID() << "\n";
|
|
607
603
|
}
|
|
608
604
|
|
|
609
|
-
SVFStmt::SVFStmtSetTy& ngeps = pag->getSVFStmtSet(SVFStmt::
|
|
605
|
+
SVFStmt::SVFStmtSetTy& ngeps = pag->getSVFStmtSet(SVFStmt::Gep);
|
|
610
606
|
for (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =
|
|
611
607
|
ngeps.end(); iter != eiter; ++iter)
|
|
612
608
|
{
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
SVFStmt::SVFStmtSetTy& vgeps = pag->getSVFStmtSet(SVFStmt::VariantGep);
|
|
619
|
-
for (SVFStmt::SVFStmtSetTy::iterator iter = vgeps.begin(), eiter =
|
|
620
|
-
vgeps.end(); iter != eiter; ++iter)
|
|
621
|
-
{
|
|
622
|
-
outs() << (*iter)->getSrcID() << " -- VariantGep --> "
|
|
609
|
+
GepStmt* gep = SVFUtil::cast<GepStmt>(*iter);
|
|
610
|
+
if(gep->isVariantFieldGep())
|
|
611
|
+
outs() << (*iter)->getSrcID() << " -- VariantGep --> "
|
|
623
612
|
<< (*iter)->getDstID() << "\n";
|
|
613
|
+
else
|
|
614
|
+
outs() << gep->getRHSVarID() << " -- Gep (" << gep->getConstantFieldIdx()
|
|
615
|
+
<< ") --> " << gep->getLHSVarID() << "\n";
|
|
624
616
|
}
|
|
625
617
|
|
|
626
618
|
SVFStmt::SVFStmtSetTy& loads = pag->getSVFStmtSet(SVFStmt::Load);
|
|
@@ -186,28 +186,6 @@ const std::string GepStmt::toString() const{
|
|
|
186
186
|
return rawstr.str();
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
const std::string NormalGepStmt::toString() const{
|
|
190
|
-
std::string str;
|
|
191
|
-
raw_string_ostream rawstr(str);
|
|
192
|
-
rawstr << "NormalGepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
193
|
-
if (Options::ShowSVFIRValue) {
|
|
194
|
-
rawstr << "\n";
|
|
195
|
-
rawstr << value2String(getValue());
|
|
196
|
-
}
|
|
197
|
-
return rawstr.str();
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const std::string VariantGepStmt::toString() const{
|
|
201
|
-
std::string str;
|
|
202
|
-
raw_string_ostream rawstr(str);
|
|
203
|
-
rawstr << "VariantGepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
204
|
-
if (Options::ShowSVFIRValue) {
|
|
205
|
-
rawstr << "\n";
|
|
206
|
-
rawstr << value2String(getValue());
|
|
207
|
-
}
|
|
208
|
-
return rawstr.str();
|
|
209
|
-
}
|
|
210
|
-
|
|
211
189
|
const std::string CallPE::toString() const{
|
|
212
190
|
std::string str;
|
|
213
191
|
raw_string_ostream rawstr(str);
|
|
@@ -133,7 +133,7 @@ const std::string ObjVar::toString() const {
|
|
|
133
133
|
const std::string GepValVar::toString() const {
|
|
134
134
|
std::string str;
|
|
135
135
|
raw_string_ostream rawstr(str);
|
|
136
|
-
rawstr << "GepValVar ID: " << getId() << " with offset_" + llvm::utostr(
|
|
136
|
+
rawstr << "GepValVar ID: " << getId() << " with offset_" + llvm::utostr(getConstantFieldIdx());
|
|
137
137
|
if (Options::ShowSVFIRValue) {
|
|
138
138
|
rawstr << "\n";
|
|
139
139
|
rawstr << value2String(value);
|
|
@@ -135,7 +135,7 @@ void SymbolTableInfo::collectStructInfo(const StructType *sty)
|
|
|
135
135
|
sty->element_end(); it != ie; ++it, ++field_idx)
|
|
136
136
|
{
|
|
137
137
|
const Type *et = *it;
|
|
138
|
-
/// offset with
|
|
138
|
+
/// offset with int_32 (s64_t) is large enough and will not cause overflow
|
|
139
139
|
stinfo->addFldWithType(nf, et);
|
|
140
140
|
|
|
141
141
|
if (SVFUtil::isa<StructType>(et) || SVFUtil::isa<ArrayType>(et))
|
|
@@ -195,7 +195,7 @@ LocationSet SymbolTableInfo::getModulusOffset(const MemObj* obj, const LocationS
|
|
|
195
195
|
/// of current struct. Make the offset positive so we can still get a node within current
|
|
196
196
|
/// struct to represent this obj.
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
s64_t offset = ls.accumulateConstantFieldIdx();
|
|
199
199
|
if(offset < 0)
|
|
200
200
|
{
|
|
201
201
|
writeWrnMsg("try to create a gep node with negative offset.");
|
|
@@ -582,7 +582,7 @@ bool ObjTypeInfo::isNonPtrFieldObj(const LocationSet& ls)
|
|
|
582
582
|
// as we simply return new offset by mod operation without checking its
|
|
583
583
|
// correctness in LocSymTableInfo::getModulusOffset(). So the following
|
|
584
584
|
// assertion may fail. Try to refine the new memory model.
|
|
585
|
-
//assert(ls.
|
|
585
|
+
//assert(ls.getConstantFieldIdx() == 0 && "cannot get a field from a non-struct type");
|
|
586
586
|
return (hasPtrObj() == false);
|
|
587
587
|
}
|
|
588
588
|
}
|
|
@@ -640,7 +640,7 @@ void MemObj::destroy()
|
|
|
640
640
|
}
|
|
641
641
|
|
|
642
642
|
/// Get max field offset limit
|
|
643
|
-
|
|
643
|
+
u32_t MemObj::getMaxFieldOffsetLimit() const
|
|
644
644
|
{
|
|
645
645
|
return typeInfo->getMaxFieldOffsetLimit();
|
|
646
646
|
}
|
package/lib/SVF-FE/CPPUtil.cpp
CHANGED
|
@@ -55,7 +55,7 @@ const string structName = "struct.";
|
|
|
55
55
|
|
|
56
56
|
static bool isOperOverload(const string name)
|
|
57
57
|
{
|
|
58
|
-
|
|
58
|
+
s64_t leftnum = 0, rightnum = 0;
|
|
59
59
|
string subname = name;
|
|
60
60
|
size_t leftpos, rightpos;
|
|
61
61
|
leftpos = subname.find("<");
|
|
@@ -88,7 +88,7 @@ static string getBeforeParenthesis(const string &name)
|
|
|
88
88
|
size_t lastRightParen = name.rfind(")");
|
|
89
89
|
assert(lastRightParen > 0);
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
s64_t paren_num = 1, pos;
|
|
92
92
|
for (pos = lastRightParen - 1; pos >= 0; pos--)
|
|
93
93
|
{
|
|
94
94
|
if (name[pos] == ')')
|
|
@@ -107,7 +107,7 @@ string cppUtil::getBeforeBrackets(const string &name)
|
|
|
107
107
|
{
|
|
108
108
|
return name;
|
|
109
109
|
}
|
|
110
|
-
|
|
110
|
+
s64_t bracket_num = 1, pos;
|
|
111
111
|
for (pos = name.size() - 2; pos >= 0; pos--)
|
|
112
112
|
{
|
|
113
113
|
if (name[pos] == '>')
|
|
@@ -183,7 +183,7 @@ struct cppUtil::DemangledName cppUtil::demangle(const string &name)
|
|
|
183
183
|
struct cppUtil::DemangledName dname;
|
|
184
184
|
dname.isThunkFunc = false;
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
s64_t status;
|
|
187
187
|
char *realname = abi::__cxa_demangle(name.c_str(), 0, 0, &status);
|
|
188
188
|
if (realname == nullptr)
|
|
189
189
|
{
|
|
@@ -228,7 +228,7 @@ bool cppUtil::isLoadVtblInst(const LoadInst *loadInst)
|
|
|
228
228
|
const Value *loadSrc = loadInst->getPointerOperand();
|
|
229
229
|
const Type *valTy = loadSrc->getType();
|
|
230
230
|
const Type *elemTy = valTy;
|
|
231
|
-
for (
|
|
231
|
+
for (s64_t i = 0; i < 3; ++i)
|
|
232
232
|
{
|
|
233
233
|
if (const PointerType *ptrTy = SVFUtil::dyn_cast<PointerType>(elemTy))
|
|
234
234
|
elemTy = ptrTy->getElementType();
|
|
@@ -435,7 +435,7 @@ string cppUtil::getClassNameFromVtblObj(const Value *value)
|
|
|
435
435
|
string className = "";
|
|
436
436
|
|
|
437
437
|
string vtblName = value->getName().str();
|
|
438
|
-
|
|
438
|
+
s64_t status;
|
|
439
439
|
char *realname = abi::__cxa_demangle(vtblName.c_str(), 0, 0, &status);
|
|
440
440
|
if (realname != nullptr)
|
|
441
441
|
{
|
package/lib/SVF-FE/DCHG.cpp
CHANGED
|
@@ -103,7 +103,7 @@ void DCHGraph::handleDIDerivedType(const DIDerivedType *derivedType)
|
|
|
103
103
|
assert(SVFUtil::isa<DIType>(derivedType->getScope()) && "inheriting from non-type?");
|
|
104
104
|
DCHEdge *edge = addEdge(SVFUtil::dyn_cast<DIType>(derivedType->getScope()),
|
|
105
105
|
derivedType->getBaseType(), DCHEdge::INHERITANCE);
|
|
106
|
-
// If the offset does not exist (for primary base),
|
|
106
|
+
// If the offset does not exist (for primary base), getConstantFieldIdx should return 0.
|
|
107
107
|
edge->setOffset(derivedType->getOffsetInBits());
|
|
108
108
|
break;
|
|
109
109
|
}
|
|
@@ -50,10 +50,10 @@ void ICFGPrinter::printICFGToJson(const std::string& filename)
|
|
|
50
50
|
edge_obj["Edge Type"] = getPAGEdgeKindValue(edge->getEdgeKind());
|
|
51
51
|
edge_obj["srcValueName"] = edge->getSrcNode()->getValueName();
|
|
52
52
|
edge_obj["dstValueName"] = edge->getDstNode()->getValueName();
|
|
53
|
-
if(edge->getEdgeKind()==
|
|
53
|
+
if(edge->getEdgeKind()==SVFStmt::Gep)
|
|
54
54
|
{
|
|
55
|
-
const
|
|
56
|
-
edge_obj["offset"] = gepEdge->
|
|
55
|
+
const GepStmt* gepEdge = SVFUtil::cast<GepStmt>(edge);
|
|
56
|
+
edge_obj["offset"] = gepEdge->getConstantFieldIdx();
|
|
57
57
|
}
|
|
58
58
|
llvm::json::Value edge_value = llvm::json::Object{edge_obj};
|
|
59
59
|
PAGEdge_array.push_back(edge_value);
|
|
@@ -169,31 +169,31 @@ std::string ICFGPrinter::getPAGNodeKindValue(int kind)
|
|
|
169
169
|
{
|
|
170
170
|
switch (kind)
|
|
171
171
|
{
|
|
172
|
-
case (
|
|
172
|
+
case (SVFVar::ValNode):
|
|
173
173
|
return "ValNode";
|
|
174
174
|
break;
|
|
175
|
-
case
|
|
175
|
+
case SVFVar::ObjNode:
|
|
176
176
|
return "ObjNode";
|
|
177
177
|
break;
|
|
178
|
-
case
|
|
178
|
+
case SVFVar::RetNode:
|
|
179
179
|
return "RetNode";
|
|
180
180
|
break;
|
|
181
|
-
case
|
|
181
|
+
case SVFVar::VarargNode:
|
|
182
182
|
return "VarargNode";
|
|
183
183
|
break;
|
|
184
|
-
case
|
|
184
|
+
case SVFVar::GepValNode:
|
|
185
185
|
return "GepValNode";
|
|
186
186
|
break;
|
|
187
|
-
case
|
|
187
|
+
case SVFVar::GepObjNode:
|
|
188
188
|
return "GepObjNode";
|
|
189
189
|
break;
|
|
190
|
-
case
|
|
190
|
+
case SVFVar::FIObjNode:
|
|
191
191
|
return "FIObjNode";
|
|
192
192
|
break;
|
|
193
|
-
case
|
|
193
|
+
case SVFVar::DummyValNode:
|
|
194
194
|
return "DummyValNode";
|
|
195
195
|
break;
|
|
196
|
-
case
|
|
196
|
+
case SVFVar::DummyObjNode:
|
|
197
197
|
return "DummyObjNode";
|
|
198
198
|
break;
|
|
199
199
|
}
|
|
@@ -204,43 +204,40 @@ std::string ICFGPrinter::getPAGEdgeKindValue(int kind)
|
|
|
204
204
|
{
|
|
205
205
|
switch(kind)
|
|
206
206
|
{
|
|
207
|
-
case (
|
|
207
|
+
case (SVFStmt::Addr):
|
|
208
208
|
return "Addr";
|
|
209
209
|
break;
|
|
210
|
-
case (
|
|
210
|
+
case (SVFStmt::Copy):
|
|
211
211
|
return "Copy";
|
|
212
212
|
break;
|
|
213
|
-
case (
|
|
213
|
+
case (SVFStmt::Store):
|
|
214
214
|
return "Store";
|
|
215
215
|
break;
|
|
216
|
-
case (
|
|
216
|
+
case (SVFStmt::Load):
|
|
217
217
|
return "Load";
|
|
218
218
|
break;
|
|
219
|
-
case (
|
|
219
|
+
case (SVFStmt::Call):
|
|
220
220
|
return "Call";
|
|
221
221
|
break;
|
|
222
|
-
case (
|
|
222
|
+
case (SVFStmt::Ret):
|
|
223
223
|
return "Ret";
|
|
224
224
|
break;
|
|
225
|
-
case (
|
|
225
|
+
case (SVFStmt::Gep):
|
|
226
226
|
return "NormalGep";
|
|
227
227
|
break;
|
|
228
|
-
case (
|
|
229
|
-
return "VariantGep";
|
|
230
|
-
break;
|
|
231
|
-
case (PAGEdge::ThreadFork):
|
|
228
|
+
case (SVFStmt::ThreadFork):
|
|
232
229
|
return "ThreadFork";
|
|
233
230
|
break;
|
|
234
|
-
case (
|
|
231
|
+
case (SVFStmt::ThreadJoin):
|
|
235
232
|
return "ThreadJoin";
|
|
236
233
|
break;
|
|
237
|
-
case (
|
|
234
|
+
case (SVFStmt::Cmp):
|
|
238
235
|
return "Cmp";
|
|
239
236
|
break;
|
|
240
|
-
case (
|
|
237
|
+
case (SVFStmt::BinaryOp):
|
|
241
238
|
return "BinaryOp";
|
|
242
239
|
break;
|
|
243
|
-
case (
|
|
240
|
+
case (SVFStmt::UnaryOp):
|
|
244
241
|
return "UnaryOp";
|
|
245
242
|
break;
|
|
246
243
|
}
|
package/lib/SVF-FE/LLVMUtil.cpp
CHANGED
|
@@ -370,7 +370,7 @@ void SVFUtil::processArguments(int argc, char **argv, int &arg_num, char **arg_v
|
|
|
370
370
|
std::vector<std::string> &moduleNameVec)
|
|
371
371
|
{
|
|
372
372
|
bool first_ir_file = true;
|
|
373
|
-
for (
|
|
373
|
+
for (s64_t i = 0; i < argc; ++i)
|
|
374
374
|
{
|
|
375
375
|
std::string argument(argv[i]);
|
|
376
376
|
if (SVFUtil::isIRFile(argument))
|
|
@@ -210,11 +210,12 @@ void SVFIRBuilder::initialiseNodes()
|
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
/*
|
|
213
|
+
https://github.com/SVF-tools/SVF/issues/524
|
|
213
214
|
Handling single value types, for constant index, including pointer, integer, etc
|
|
214
215
|
e.g. field_idx = getelementptr i8, %i8* %p, i64 -4
|
|
215
216
|
We can obtain the field index by inferring the byteoffset if %p is casted from a pointer to a struct
|
|
216
217
|
*/
|
|
217
|
-
u32_t SVFIRBuilder::inferFieldIdxFromByteOffset(const llvm::GEPOperator* gepOp, DataLayout *dl, LocationSet& ls,
|
|
218
|
+
u32_t SVFIRBuilder::inferFieldIdxFromByteOffset(const llvm::GEPOperator* gepOp, DataLayout *dl, LocationSet& ls, s64_t idx){
|
|
218
219
|
auto srcptr = gepOp->getOperand(0);
|
|
219
220
|
llvm::BitCastOperator* castop1 = SVFUtil::dyn_cast<llvm::BitCastOperator>(srcptr);
|
|
220
221
|
Type* sttype = nullptr;
|
|
@@ -262,23 +263,23 @@ bool SVFIRBuilder::computeGepOffset(const User *V, LocationSet& ls)
|
|
|
262
263
|
llvm::APInt byteOffset(dataLayout->getIndexSizeInBits(gepOp->getPointerAddressSpace()),0,true);
|
|
263
264
|
if(gepOp && dataLayout && gepOp->accumulateConstantOffset(*dataLayout,byteOffset))
|
|
264
265
|
{
|
|
265
|
-
|
|
266
|
+
s64_t bo = byteOffset.getSExtValue();
|
|
266
267
|
}
|
|
267
268
|
|
|
268
269
|
for (bridge_gep_iterator gi = bridge_gep_begin(*V), ge = bridge_gep_end(*V);
|
|
269
270
|
gi != ge; ++gi)
|
|
270
271
|
{
|
|
271
|
-
ls.addOffsetValue(gi.getOperand());
|
|
272
|
-
|
|
272
|
+
ls.addOffsetValue(gi.getOperand(), *gi);
|
|
273
|
+
|
|
274
|
+
//The int value of the current index operand
|
|
275
|
+
ConstantInt *op = SVFUtil::dyn_cast<ConstantInt>(gi.getOperand());
|
|
276
|
+
|
|
273
277
|
// Handling array types, skipe array handling here
|
|
274
278
|
// We treat whole array as one, but we can distinguish different field of an array of struct
|
|
275
279
|
// e.g. s[1].f1 is differet from s[0].f2
|
|
276
280
|
if(SVFUtil::isa<ArrayType>(*gi))
|
|
277
281
|
continue;
|
|
278
282
|
|
|
279
|
-
//The int value of the current index operand
|
|
280
|
-
ConstantInt *op = SVFUtil::dyn_cast<ConstantInt>(gi.getOperand());
|
|
281
|
-
|
|
282
283
|
// Handling struct here
|
|
283
284
|
if (const StructType *ST = SVFUtil::dyn_cast<StructType>(*gi) )
|
|
284
285
|
{
|
|
@@ -289,7 +290,7 @@ bool SVFIRBuilder::computeGepOffset(const User *V, LocationSet& ls)
|
|
|
289
290
|
}
|
|
290
291
|
assert(op && "non-const index in an operand in GEP");
|
|
291
292
|
//The actual index
|
|
292
|
-
|
|
293
|
+
s64_t idx = op->getSExtValue();
|
|
293
294
|
const vector<u32_t> &so = SymbolTableInfo::SymbolInfo()->getFlattenedFieldIdxVec(ST);
|
|
294
295
|
if ((unsigned)idx >= so.size())
|
|
295
296
|
{
|
|
@@ -308,7 +309,7 @@ bool SVFIRBuilder::computeGepOffset(const User *V, LocationSet& ls)
|
|
|
308
309
|
return false;
|
|
309
310
|
}
|
|
310
311
|
// The actual index
|
|
311
|
-
|
|
312
|
+
s64_t idx = op->getSExtValue();
|
|
312
313
|
|
|
313
314
|
// infer the field offset based on the byte offset
|
|
314
315
|
u32_t fieldOffset = inferFieldIdxFromByteOffset(gepOp, dataLayout, ls, idx);
|
|
@@ -623,7 +624,7 @@ void SVFIRBuilder::visitPHINode(PHINode &inst)
|
|
|
623
624
|
|
|
624
625
|
NodeID dst = getValueNode(&inst);
|
|
625
626
|
|
|
626
|
-
for (
|
|
627
|
+
for (u32_t i = 0; i < inst.getNumIncomingValues(); ++i)
|
|
627
628
|
{
|
|
628
629
|
const Value* val = inst.getIncomingValue(i);
|
|
629
630
|
const Instruction* incomingInst = SVFUtil::dyn_cast<Instruction>(val);
|
|
@@ -1172,7 +1173,7 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1172
1173
|
if(!SVFUtil::isa<PointerType>(inst->getType()))
|
|
1173
1174
|
break;
|
|
1174
1175
|
NodeID dstNode = getValueNode(inst);
|
|
1175
|
-
|
|
1176
|
+
u32_t arg_pos;
|
|
1176
1177
|
switch(tF)
|
|
1177
1178
|
{
|
|
1178
1179
|
case ExtAPI::EFT_L_A1:
|
|
@@ -1338,7 +1339,7 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1338
1339
|
// We have vArg3 points to the entry of _Rb_tree_node_base { color; parent; left; right; }.
|
|
1339
1340
|
// Now we calculate the offset from base to vArg3
|
|
1340
1341
|
NodeID vnArg3 = pag->getValueNode(vArg3);
|
|
1341
|
-
|
|
1342
|
+
s64_t offset = pag->getLocationSetFromBaseNode(vnArg3).accumulateConstantFieldIdx();
|
|
1342
1343
|
|
|
1343
1344
|
// We get all flattened fields of base
|
|
1344
1345
|
vector<LocationSet> fields;
|
|
@@ -1362,7 +1363,7 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1362
1363
|
|
|
1363
1364
|
Value *vArg = cs.getArgument(0);
|
|
1364
1365
|
NodeID vnArg = pag->getValueNode(vArg);
|
|
1365
|
-
|
|
1366
|
+
s64_t offset = pag->getLocationSetFromBaseNode(vnArg).accumulateConstantFieldIdx();
|
|
1366
1367
|
|
|
1367
1368
|
// We get all fields
|
|
1368
1369
|
vector<LocationSet> fields;
|
|
@@ -549,7 +549,7 @@ void SymbolTableBuilder::analyzeGlobalStackObjType(ObjTypeInfo* typeinfo, const
|
|
|
549
549
|
*/
|
|
550
550
|
void SymbolTableBuilder::initTypeInfo(ObjTypeInfo* typeinfo, const Value* val){
|
|
551
551
|
|
|
552
|
-
|
|
552
|
+
s64_t objSize = 1;
|
|
553
553
|
// Global variable
|
|
554
554
|
if (SVFUtil::isa<Function>(val))
|
|
555
555
|
{
|
package/lib/Util/Conditions.cpp
CHANGED
|
@@ -182,7 +182,7 @@ void CondManager::printModel()
|
|
|
182
182
|
z3::model m = sol.get_model();
|
|
183
183
|
for (u32_t i = 0; i < m.size(); i++)
|
|
184
184
|
{
|
|
185
|
-
z3::func_decl v = m[static_cast<
|
|
185
|
+
z3::func_decl v = m[static_cast<s64_t>(i)];
|
|
186
186
|
std::cout << v.name() << " = " << m.get_const_interp(v) << "\n";
|
|
187
187
|
}
|
|
188
188
|
}
|