svf-tools 1.0.619 → 1.0.621
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 +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/Andersen_8h_source.html +4 -3
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +9 -4
- package/SVF-doxygen/html/html/CFLAlias_8h.html +4 -0
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +19 -10
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/CFLBase_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLDataBuilder_8h.html +96 -0
- package/SVF-doxygen/html/html/CFLDataBuilder_8h_source.html +99 -0
- package/SVF-doxygen/html/html/CFLData_8h.html +106 -0
- package/SVF-doxygen/html/html/CFLData_8h_source.html +136 -0
- package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CFLSolver_8h.html +4 -0
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +22 -16
- package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CommandLine_8h.html +129 -0
- package/SVF-doxygen/html/html/CommandLine_8h_source.html +132 -0
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +20 -19
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +9 -9
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/GraphWriter_8h_source.html +2 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +21 -20
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +17 -17
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/Options_8cpp.html +1 -0
- package/SVF-doxygen/html/html/Options_8cpp_source.html +124 -119
- package/SVF-doxygen/html/html/Options_8h.html +1 -1
- package/SVF-doxygen/html/html/Options_8h_source.html +125 -120
- package/SVF-doxygen/html/html/PCG_8cpp.html +2 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +13 -12
- package/SVF-doxygen/html/html/PCG_8h_source.html +12 -12
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +4 -3
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +5 -4
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFType_8h.html +2 -2
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +10 -9
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +4 -4
- package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/annotated.html +363 -353
- package/SVF-doxygen/html/html/cfl_8cpp.html +3 -85
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +3 -5
- package/SVF-doxygen/html/html/classOption-members.html +99 -0
- package/SVF-doxygen/html/html/classOption.html +567 -0
- package/SVF-doxygen/html/html/classOption.png +0 -0
- package/SVF-doxygen/html/html/classOptionBase-members.html +95 -0
- package/SVF-doxygen/html/html/classOptionBase.html +823 -0
- package/SVF-doxygen/html/html/classOptionBase.png +0 -0
- package/SVF-doxygen/html/html/classOptionMap-members.html +97 -0
- package/SVF-doxygen/html/html/classOptionMap.html +428 -0
- package/SVF-doxygen/html/html/classOptionMap.png +0 -0
- package/SVF-doxygen/html/html/classOptionMultiple-members.html +97 -0
- package/SVF-doxygen/html/html/classOptionMultiple.html +460 -0
- package/SVF-doxygen/html/html/classOptionMultiple.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +16 -15
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -6
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +33 -30
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +9 -8
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLData-members.html +110 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLData.html +1126 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder-members.html +88 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLDataBuilder.html +380 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +48 -39
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +72 -72
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +36 -35
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +22 -8
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +3 -2
- package/SVF-doxygen/html/html/classSVF_1_1HybridData-members.html +89 -0
- package/SVF-doxygen/html/html/classSVF_1_1HybridData.html +449 -0
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +73 -72
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +121 -120
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +641 -615
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +281 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +828 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRSolver-members.html +98 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.html +245 -0
- package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +20 -19
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +9 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +27 -26
- package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +6 -6
- package/SVF-doxygen/html/html/classes.html +110 -108
- package/SVF-doxygen/html/html/dda_8cpp.html +51 -248
- package/SVF-doxygen/html/html/dda_8cpp_source.html +9 -10
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
- package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +4 -0
- package/SVF-doxygen/html/html/files.html +27 -24
- package/SVF-doxygen/html/html/functions.html +7 -1
- package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
- package/SVF-doxygen/html/html/functions_a.html +45 -21
- package/SVF-doxygen/html/html/functions_b.html +15 -7
- package/SVF-doxygen/html/html/functions_c.html +72 -49
- package/SVF-doxygen/html/html/functions_d.html +25 -16
- package/SVF-doxygen/html/html/functions_e.html +11 -4
- package/SVF-doxygen/html/html/functions_f.html +19 -16
- package/SVF-doxygen/html/html/functions_func.html +35 -11
- package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
- package/SVF-doxygen/html/html/functions_func_b.html +11 -3
- package/SVF-doxygen/html/html/functions_func_c.html +55 -34
- package/SVF-doxygen/html/html/functions_func_e.html +5 -1
- package/SVF-doxygen/html/html/functions_func_f.html +4 -1
- package/SVF-doxygen/html/html/functions_func_g.html +26 -7
- package/SVF-doxygen/html/html/functions_func_h.html +10 -3
- package/SVF-doxygen/html/html/functions_func_i.html +25 -10
- package/SVF-doxygen/html/html/functions_func_m.html +3 -2
- package/SVF-doxygen/html/html/functions_func_n.html +4 -1
- package/SVF-doxygen/html/html/functions_func_o.html +23 -6
- package/SVF-doxygen/html/html/functions_func_p.html +15 -3
- package/SVF-doxygen/html/html/functions_func_s.html +20 -19
- package/SVF-doxygen/html/html/functions_func_t.html +3 -0
- package/SVF-doxygen/html/html/functions_func_u.html +3 -0
- package/SVF-doxygen/html/html/functions_g.html +28 -9
- package/SVF-doxygen/html/html/functions_h.html +13 -6
- package/SVF-doxygen/html/html/functions_i.html +44 -20
- package/SVF-doxygen/html/html/functions_k.html +1 -1
- package/SVF-doxygen/html/html/functions_l.html +4 -4
- package/SVF-doxygen/html/html/functions_m.html +14 -13
- package/SVF-doxygen/html/html/functions_n.html +9 -5
- package/SVF-doxygen/html/html/functions_o.html +48 -25
- package/SVF-doxygen/html/html/functions_p.html +65 -34
- package/SVF-doxygen/html/html/functions_r.html +7 -9
- package/SVF-doxygen/html/html/functions_s.html +34 -32
- package/SVF-doxygen/html/html/functions_t.html +17 -8
- package/SVF-doxygen/html/html/functions_type_c.html +2 -1
- package/SVF-doxygen/html/html/functions_type_d.html +3 -0
- package/SVF-doxygen/html/html/functions_type_i.html +2 -1
- package/SVF-doxygen/html/html/functions_type_o.html +7 -0
- package/SVF-doxygen/html/html/functions_type_p.html +6 -0
- package/SVF-doxygen/html/html/functions_type_t.html +3 -0
- package/SVF-doxygen/html/html/functions_u.html +6 -3
- package/SVF-doxygen/html/html/functions_v.html +7 -5
- package/SVF-doxygen/html/html/functions_vars.html +7 -1
- package/SVF-doxygen/html/html/functions_vars_a.html +7 -7
- package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_c.html +15 -12
- package/SVF-doxygen/html/html/functions_vars_d.html +21 -15
- package/SVF-doxygen/html/html/functions_vars_e.html +5 -2
- package/SVF-doxygen/html/html/functions_vars_f.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_g.html +2 -2
- package/SVF-doxygen/html/html/functions_vars_h.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +14 -6
- package/SVF-doxygen/html/html/functions_vars_k.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_l.html +4 -4
- package/SVF-doxygen/html/html/functions_vars_m.html +11 -11
- package/SVF-doxygen/html/html/functions_vars_n.html +3 -2
- package/SVF-doxygen/html/html/functions_vars_o.html +5 -2
- package/SVF-doxygen/html/html/functions_vars_p.html +34 -21
- package/SVF-doxygen/html/html/functions_vars_r.html +5 -5
- package/SVF-doxygen/html/html/functions_vars_s.html +13 -10
- package/SVF-doxygen/html/html/functions_vars_t.html +7 -4
- package/SVF-doxygen/html/html/functions_vars_u.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_v.html +6 -4
- package/SVF-doxygen/html/html/functions_vars_w.html +3 -3
- package/SVF-doxygen/html/html/functions_w.html +11 -7
- package/SVF-doxygen/html/html/globals_d.html +4 -4
- package/SVF-doxygen/html/html/globals_e.html +6 -6
- package/SVF-doxygen/html/html/globals_f.html +2 -2
- package/SVF-doxygen/html/html/globals_func.html +6 -58
- package/SVF-doxygen/html/html/globals_i.html +4 -12
- package/SVF-doxygen/html/html/globals_l.html +2 -2
- package/SVF-doxygen/html/html/globals_r.html +4 -4
- package/SVF-doxygen/html/html/globals_s.html +0 -4
- package/SVF-doxygen/html/html/globals_type.html +3 -0
- package/SVF-doxygen/html/html/globals_u.html +3 -0
- package/SVF-doxygen/html/html/globals_vars.html +43 -12
- package/SVF-doxygen/html/html/hierarchy.html +517 -496
- package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/menudata.js +1 -2
- package/SVF-doxygen/html/html/mta_8cpp.html +4 -47
- package/SVF-doxygen/html/html/mta_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/namespaceSVF.html +29 -0
- package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +3 -2
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_l.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_type_l.html +3 -0
- package/SVF-doxygen/html/html/saber_8cpp.html +38 -136
- package/SVF-doxygen/html/html/saber_8cpp_source.html +8 -7
- package/SVF-doxygen/html/html/search/all_0.js +2 -1
- package/SVF-doxygen/html/html/search/all_1.js +15 -8
- package/SVF-doxygen/html/html/search/all_10.js +33 -25
- package/SVF-doxygen/html/html/search/all_11.js +9 -9
- package/SVF-doxygen/html/html/search/all_12.js +22 -22
- package/SVF-doxygen/html/html/search/all_13.js +14 -11
- package/SVF-doxygen/html/html/search/all_14.js +5 -4
- package/SVF-doxygen/html/html/search/all_15.js +5 -5
- package/SVF-doxygen/html/html/search/all_16.js +4 -4
- package/SVF-doxygen/html/html/search/all_19.js +6 -0
- package/SVF-doxygen/html/html/search/all_2.js +5 -3
- package/SVF-doxygen/html/html/search/all_3.js +25 -18
- package/SVF-doxygen/html/html/search/all_4.js +20 -18
- package/SVF-doxygen/html/html/search/all_5.js +8 -6
- package/SVF-doxygen/html/html/search/all_6.js +9 -8
- package/SVF-doxygen/html/html/search/all_7.js +9 -3
- package/SVF-doxygen/html/html/search/all_8.js +5 -3
- package/SVF-doxygen/html/html/search/all_9.js +16 -11
- package/SVF-doxygen/html/html/search/all_b.js +2 -2
- package/SVF-doxygen/html/html/search/all_c.js +7 -6
- package/SVF-doxygen/html/html/search/all_d.js +13 -13
- package/SVF-doxygen/html/html/search/all_e.js +4 -3
- package/SVF-doxygen/html/html/search/all_f.js +24 -6
- package/SVF-doxygen/html/html/search/classes_10.js +1 -0
- package/SVF-doxygen/html/html/search/classes_2.js +2 -0
- package/SVF-doxygen/html/html/search/classes_7.js +2 -1
- package/SVF-doxygen/html/html/search/classes_c.js +15 -0
- package/SVF-doxygen/html/html/search/classes_d.js +2 -0
- package/SVF-doxygen/html/html/search/files_2.js +3 -0
- package/SVF-doxygen/html/html/search/functions_0.js +8 -1
- package/SVF-doxygen/html/html/search/functions_1.js +4 -2
- package/SVF-doxygen/html/html/search/functions_10.js +0 -2
- package/SVF-doxygen/html/html/search/functions_11.js +2 -3
- package/SVF-doxygen/html/html/search/functions_12.js +1 -0
- package/SVF-doxygen/html/html/search/functions_13.js +1 -0
- package/SVF-doxygen/html/html/search/functions_17.js +6 -0
- package/SVF-doxygen/html/html/search/functions_2.js +5 -1
- package/SVF-doxygen/html/html/search/functions_3.js +0 -2
- package/SVF-doxygen/html/html/search/functions_4.js +2 -4
- package/SVF-doxygen/html/html/search/functions_5.js +2 -1
- package/SVF-doxygen/html/html/search/functions_6.js +7 -1
- package/SVF-doxygen/html/html/search/functions_7.js +4 -2
- package/SVF-doxygen/html/html/search/functions_8.js +6 -3
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_c.js +1 -1
- package/SVF-doxygen/html/html/search/functions_d.js +1 -0
- package/SVF-doxygen/html/html/search/functions_e.js +7 -3
- package/SVF-doxygen/html/html/search/functions_f.js +3 -0
- package/SVF-doxygen/html/html/search/typedefs_11.js +2 -1
- package/SVF-doxygen/html/html/search/typedefs_12.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_3.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_7.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_a.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_d.js +2 -0
- package/SVF-doxygen/html/html/search/typedefs_e.js +2 -0
- package/SVF-doxygen/html/html/search/variables_0.js +2 -1
- package/SVF-doxygen/html/html/search/variables_1.js +7 -7
- package/SVF-doxygen/html/html/search/variables_10.js +25 -21
- package/SVF-doxygen/html/html/search/variables_11.js +7 -5
- package/SVF-doxygen/html/html/search/variables_12.js +11 -10
- package/SVF-doxygen/html/html/search/variables_13.js +9 -8
- package/SVF-doxygen/html/html/search/variables_14.js +3 -3
- package/SVF-doxygen/html/html/search/variables_15.js +4 -4
- package/SVF-doxygen/html/html/search/variables_16.js +3 -3
- package/SVF-doxygen/html/html/search/variables_2.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +13 -12
- package/SVF-doxygen/html/html/search/variables_4.js +19 -15
- package/SVF-doxygen/html/html/search/variables_5.js +6 -2
- package/SVF-doxygen/html/html/search/variables_6.js +7 -6
- package/SVF-doxygen/html/html/search/variables_7.js +2 -2
- package/SVF-doxygen/html/html/search/variables_8.js +1 -1
- package/SVF-doxygen/html/html/search/variables_9.js +9 -7
- package/SVF-doxygen/html/html/search/variables_b.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +5 -4
- package/SVF-doxygen/html/html/search/variables_d.js +11 -11
- package/SVF-doxygen/html/html/search/variables_e.js +2 -2
- package/SVF-doxygen/html/html/search/variables_f.js +3 -2
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +4 -4
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
- package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode-members.html +86 -0
- package/SVF-doxygen/html/html/structSVF_1_1HybridData_1_1TreeNode.html +255 -0
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +12 -55
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +4 -47
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +4 -4
- package/include/CFL/CFLAlias.h +34 -0
- package/include/CFL/CFLData.h +316 -0
- package/include/CFL/CFLDataBuilder.h +91 -0
- package/include/CFL/CFLSolver.h +21 -0
- package/include/Util/CommandLine.h +527 -0
- package/include/Util/Options.h +125 -124
- package/include/WPA/Andersen.h +5 -5
- package/lib/AbstractExecution/SVFIR2ItvExeState.cpp +2 -2
- package/lib/CFL/CFLAlias.cpp +40 -4
- package/lib/CFL/CFLBase.cpp +4 -4
- package/lib/CFL/CFLGraphBuilder.cpp +2 -2
- package/lib/CFL/CFLVF.cpp +5 -5
- package/lib/DDA/ContextDDA.cpp +1 -1
- package/lib/DDA/DDAPass.cpp +14 -13
- package/lib/DDA/FlowDDA.cpp +1 -1
- package/lib/Graphs/ConsG.cpp +10 -10
- package/lib/Graphs/ICFG.cpp +1 -1
- package/lib/Graphs/IRGraph.cpp +2 -2
- package/lib/Graphs/SVFG.cpp +5 -5
- package/lib/Graphs/SVFGOPT.cpp +5 -5
- package/lib/Graphs/VFG.cpp +1 -1
- package/lib/MSSA/MemRegion.cpp +2 -2
- package/lib/MSSA/MemSSA.cpp +4 -4
- package/lib/MSSA/SVFGBuilder.cpp +4 -4
- package/lib/MTA/FSMPTA.cpp +13 -13
- package/lib/MTA/MHP.cpp +1 -1
- package/lib/MTA/MTA.cpp +2 -2
- package/lib/MTA/MTAStat.cpp +1 -1
- package/lib/MTA/PCG.cpp +8 -2
- package/lib/MTA/TCT.cpp +2 -2
- package/lib/MemoryModel/PointerAnalysis.cpp +13 -13
- package/lib/MemoryModel/PointerAnalysisImpl.cpp +13 -13
- package/lib/MemoryModel/PointsTo.cpp +1 -1
- package/lib/SABER/DoubleFreeChecker.cpp +1 -1
- package/lib/SABER/LeakChecker.cpp +1 -1
- package/lib/SABER/SaberCondAllocator.cpp +1 -1
- package/lib/SABER/SrcSnkDDA.cpp +5 -5
- package/lib/SVF-LLVM/CHGBuilder.cpp +1 -1
- package/lib/SVF-LLVM/DCHG.cpp +1 -1
- package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +2 -2
- package/lib/SVF-LLVM/LLVMModule.cpp +10 -4
- package/lib/SVF-LLVM/SVFIRBuilder.cpp +8 -8
- package/lib/SVF-LLVM/SymbolTableBuilder.cpp +5 -5
- package/lib/SVFIR/SVFIR.cpp +4 -4
- package/lib/SVFIR/SVFStatements.cpp +16 -16
- package/lib/SVFIR/SVFVariables.cpp +5 -5
- package/lib/SVFIR/SymbolTableInfo.cpp +6 -6
- package/lib/Util/NodeIDAllocator.cpp +9 -9
- package/lib/Util/Options.cpp +431 -412
- package/lib/Util/SVFStat.cpp +5 -5
- package/lib/Util/SVFUtil.cpp +1 -1
- package/lib/Util/Z3Expr.cpp +2 -2
- package/lib/WPA/Andersen.cpp +13 -13
- package/lib/WPA/AndersenSCD.cpp +3 -3
- package/lib/WPA/FlowSensitive.cpp +8 -8
- package/lib/WPA/TypeAnalysis.cpp +1 -1
- package/lib/WPA/VersionedFlowSensitive.cpp +4 -4
- package/lib/WPA/WPAPass.cpp +10 -9
- package/package.json +1 -1
- package/tools/CFL/cfl.cpp +8 -14
- package/tools/DDA/dda.cpp +39 -29
- package/tools/Example/svf-ex.cpp +5 -8
- package/tools/MTA/LockResultValidator.cpp +2 -2
- package/tools/MTA/MTAAnnotator.cpp +5 -5
- package/tools/MTA/MTAResultValidator.cpp +8 -8
- package/tools/MTA/mta.cpp +5 -8
- package/tools/SABER/saber.cpp +23 -17
- package/tools/WPA/wpa.cpp +6 -9
|
@@ -51,37 +51,37 @@ BVDataPTAImpl::BVDataPTAImpl(SVFIR* p, PointerAnalysis::PTATY type, bool alias_c
|
|
|
51
51
|
{
|
|
52
52
|
// Only maintain reverse points-to when the analysis is field-sensitive, as objects turning
|
|
53
53
|
// field-insensitive is all it is used for.
|
|
54
|
-
bool maintainRevPts = Options::MaxFieldLimit != 0;
|
|
55
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(maintainRevPts);
|
|
56
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), maintainRevPts);
|
|
54
|
+
bool maintainRevPts = Options::MaxFieldLimit() != 0;
|
|
55
|
+
if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(maintainRevPts);
|
|
56
|
+
else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), maintainRevPts);
|
|
57
57
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
58
58
|
}
|
|
59
59
|
else if (type == Steensgaard_WPA)
|
|
60
60
|
{
|
|
61
61
|
// Steensgaard is only field-insensitive (for now?), so no reverse points-to.
|
|
62
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(false);
|
|
63
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), false);
|
|
62
|
+
if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutDiffPTDataTy>(false);
|
|
63
|
+
else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersDiffPTDataTy>(getPtCache(), false);
|
|
64
64
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
65
65
|
}
|
|
66
66
|
else if (type == FSSPARSE_WPA)
|
|
67
67
|
{
|
|
68
|
-
if (Options::INCDFPTData)
|
|
68
|
+
if (Options::INCDFPTData())
|
|
69
69
|
{
|
|
70
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutIncDFPTDataTy>(false);
|
|
71
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersIncDFPTDataTy>(getPtCache(), false);
|
|
70
|
+
if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutIncDFPTDataTy>(false);
|
|
71
|
+
else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersIncDFPTDataTy>(getPtCache(), false);
|
|
72
72
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
73
73
|
}
|
|
74
74
|
else
|
|
75
75
|
{
|
|
76
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutDFPTDataTy>(false);
|
|
77
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersDFPTDataTy>(getPtCache(), false);
|
|
76
|
+
if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutDFPTDataTy>(false);
|
|
77
|
+
else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersDFPTDataTy>(getPtCache(), false);
|
|
78
78
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
else if (type == VFS_WPA)
|
|
82
82
|
{
|
|
83
|
-
if (Options::ptDataBacking == PTBackingType::Mutable) ptD = std::make_unique<MutVersionedPTDataTy>(false);
|
|
84
|
-
else if (Options::ptDataBacking == PTBackingType::Persistent) ptD = std::make_unique<PersVersionedPTDataTy>(getPtCache(), false);
|
|
83
|
+
if (Options::ptDataBacking() == PTBackingType::Mutable) ptD = std::make_unique<MutVersionedPTDataTy>(false);
|
|
84
|
+
else if (Options::ptDataBacking() == PTBackingType::Persistent) ptD = std::make_unique<PersVersionedPTDataTy>(getPtCache(), false);
|
|
85
85
|
else assert(false && "BVDataPTAImpl::BVDataPTAImpl: unexpected points-to backing type!");
|
|
86
86
|
}
|
|
87
87
|
else assert(false && "no points-to data available");
|
|
@@ -94,7 +94,7 @@ void BVDataPTAImpl::finalize()
|
|
|
94
94
|
normalizePointsTo();
|
|
95
95
|
PointerAnalysis::finalize();
|
|
96
96
|
|
|
97
|
-
if (Options::ptDataBacking == PTBackingType::Persistent && print_stat)
|
|
97
|
+
if (Options::ptDataBacking() == PTBackingType::Persistent && print_stat)
|
|
98
98
|
{
|
|
99
99
|
std::string moduleName(pag->getModule()->getModuleIdentifier());
|
|
100
100
|
std::vector<std::string> names = SVFUtil::split(moduleName,'/');
|
|
@@ -23,7 +23,7 @@ PointsTo::MappingPtr PointsTo::currentBestNodeMapping = nullptr;
|
|
|
23
23
|
PointsTo::MappingPtr PointsTo::currentBestReverseNodeMapping = nullptr;
|
|
24
24
|
|
|
25
25
|
PointsTo::PointsTo()
|
|
26
|
-
: type(Options::PtType), nodeMapping(currentBestNodeMapping),
|
|
26
|
+
: type(Options::PtType()), nodeMapping(currentBestNodeMapping),
|
|
27
27
|
reverseNodeMapping(currentBestReverseNodeMapping)
|
|
28
28
|
{
|
|
29
29
|
if (type == SBV) new (&sbv) SparseBitVector<>();
|
|
@@ -45,7 +45,7 @@ void DoubleFreeChecker::reportBug(ProgSlice* slice)
|
|
|
45
45
|
<< cs->getCallSite()->getSourceLoc() << ")\n";
|
|
46
46
|
SVFUtil::errs() << "\t\t double free path: \n" << slice->evalFinalCond() << "\n";
|
|
47
47
|
}
|
|
48
|
-
if(Options::ValidateTests)
|
|
48
|
+
if(Options::ValidateTests())
|
|
49
49
|
testsValidation(slice);
|
|
50
50
|
}
|
|
51
51
|
|
package/lib/SABER/SrcSnkDDA.cpp
CHANGED
|
@@ -43,7 +43,7 @@ void SrcSnkDDA::initialize(SVFModule* module)
|
|
|
43
43
|
SVFIR* pag = PAG::getPAG();
|
|
44
44
|
|
|
45
45
|
AndersenWaveDiff* ander = AndersenWaveDiff::createAndersenWaveDiff(pag);
|
|
46
|
-
if(Options::SABERFULLSVFG)
|
|
46
|
+
if(Options::SABERFULLSVFG())
|
|
47
47
|
svfg = memSSA.buildFullSVFG(ander);
|
|
48
48
|
else
|
|
49
49
|
svfg = memSSA.buildPTROnlySVFG(ander);
|
|
@@ -62,7 +62,7 @@ void SrcSnkDDA::analyze(SVFModule* module)
|
|
|
62
62
|
|
|
63
63
|
initialize(module);
|
|
64
64
|
|
|
65
|
-
ContextCond::setMaxCxtLen(Options::CxtLimit);
|
|
65
|
+
ContextCond::setMaxCxtLen(Options::CxtLimit());
|
|
66
66
|
|
|
67
67
|
for (SVFGNodeSetIter iter = sourcesBegin(), eiter = sourcesEnd();
|
|
68
68
|
iter != eiter; ++iter)
|
|
@@ -94,7 +94,7 @@ void SrcSnkDDA::analyze(SVFModule* module)
|
|
|
94
94
|
|
|
95
95
|
DBOUT(DSaber, outs() << "Backward process for slice:" << (*iter)->getId() << " (size = " << getCurSlice()->getBackwardSliceSize() << ")\n");
|
|
96
96
|
|
|
97
|
-
if(Options::DumpSlice)
|
|
97
|
+
if(Options::DumpSlice())
|
|
98
98
|
annotateSlice(_curSlice);
|
|
99
99
|
|
|
100
100
|
if(_curSlice->AllPathReachableSolve())
|
|
@@ -133,7 +133,7 @@ bool SrcSnkDDA::isInAWrapper(const SVFGNode* src, CallSiteSet& csIdSet)
|
|
|
133
133
|
else
|
|
134
134
|
continue;
|
|
135
135
|
// reaching maximum steps when traversing on SVFG to identify a memory allocation wrapper
|
|
136
|
-
if (step++ > Options::MaxStepInWrapper)
|
|
136
|
+
if (step++ > Options::MaxStepInWrapper())
|
|
137
137
|
return false;
|
|
138
138
|
|
|
139
139
|
for (SVFGNode::const_iterator it = node->OutEdgeBegin(), eit =
|
|
@@ -295,7 +295,7 @@ void SrcSnkDDA::annotateSlice(ProgSlice* slice)
|
|
|
295
295
|
void SrcSnkDDA::dumpSlices()
|
|
296
296
|
{
|
|
297
297
|
|
|
298
|
-
if(Options::DumpSlice)
|
|
298
|
+
if(Options::DumpSlice())
|
|
299
299
|
const_cast<SVFG*>(getSVFG())->dump("Slice",true);
|
|
300
300
|
}
|
|
301
301
|
|
package/lib/SVF-LLVM/DCHG.cpp
CHANGED
|
@@ -111,7 +111,7 @@ void LLVMLoopAnalysis::buildSVFLoops(ICFG *icfg, std::vector<const Loop *> &llvm
|
|
|
111
111
|
nodes.insert(icfg->getICFGNode(svfInst));
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
SVFLoop *svf_loop = new SVFLoop(nodes, Options::LoopBound);
|
|
114
|
+
SVFLoop *svf_loop = new SVFLoop(nodes, Options::LoopBound());
|
|
115
115
|
for (const auto &node: nodes)
|
|
116
116
|
{
|
|
117
117
|
icfg->addNodeToSVFLoop(node, svf_loop);
|
|
@@ -168,4 +168,4 @@ void LLVMLoopAnalysis::buildSVFLoops(ICFG *icfg, std::vector<const Loop *> &llvm
|
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
|
-
}
|
|
171
|
+
}
|
|
@@ -140,7 +140,7 @@ void LLVMModuleSet::build()
|
|
|
140
140
|
buildFunToFunMap();
|
|
141
141
|
buildGlobalDefToRepMap();
|
|
142
142
|
|
|
143
|
-
if (Options::SVFMain)
|
|
143
|
+
if (Options::SVFMain())
|
|
144
144
|
addSVFMain();
|
|
145
145
|
|
|
146
146
|
createSVFDataStructure();
|
|
@@ -407,7 +407,7 @@ void LLVMModuleSet::loadModules(const std::vector<std::string> &moduleNameVec)
|
|
|
407
407
|
{
|
|
408
408
|
|
|
409
409
|
// We read SVFIR from LLVM IR
|
|
410
|
-
if(Options::Graphtxt
|
|
410
|
+
if(Options::Graphtxt().empty())
|
|
411
411
|
{
|
|
412
412
|
if(moduleNameVec.empty())
|
|
413
413
|
{
|
|
@@ -418,7 +418,7 @@ void LLVMModuleSet::loadModules(const std::vector<std::string> &moduleNameVec)
|
|
|
418
418
|
}
|
|
419
419
|
// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR
|
|
420
420
|
else
|
|
421
|
-
SVFModule::setPagFromTXT(Options::Graphtxt
|
|
421
|
+
SVFModule::setPagFromTXT(Options::Graphtxt());
|
|
422
422
|
|
|
423
423
|
//
|
|
424
424
|
// To avoid the following type bugs (t1 != t3) when parsing multiple modules,
|
|
@@ -439,6 +439,12 @@ void LLVMModuleSet::loadModules(const std::vector<std::string> &moduleNameVec)
|
|
|
439
439
|
|
|
440
440
|
for (const std::string& moduleName : moduleNameVec)
|
|
441
441
|
{
|
|
442
|
+
if (!LLVMUtil::isIRFile(moduleName))
|
|
443
|
+
{
|
|
444
|
+
SVFUtil::errs() << "not an IR file: " << moduleName << std::endl;
|
|
445
|
+
abort();
|
|
446
|
+
}
|
|
447
|
+
|
|
442
448
|
SMDiagnostic Err;
|
|
443
449
|
std::unique_ptr<Module> mod = parseIRFile(moduleName, Err, *cxts);
|
|
444
450
|
if (mod == nullptr)
|
|
@@ -1174,4 +1180,4 @@ StInfo* LLVMModuleSet::collectSimpleTypeInfo(StInfo * stinfo, const Type* ty)
|
|
|
1174
1180
|
stinfo->setNumOfFieldsAndElems(1,1);
|
|
1175
1181
|
|
|
1176
1182
|
return stinfo;
|
|
1177
|
-
}
|
|
1183
|
+
}
|
|
@@ -144,18 +144,18 @@ SVFIR* SVFIRBuilder::build()
|
|
|
144
144
|
pag->setNodeNumAfterPAGBuild(pag->getTotalNodeNum());
|
|
145
145
|
|
|
146
146
|
// dump SVFIR
|
|
147
|
-
if (Options::PAGDotGraph)
|
|
147
|
+
if (Options::PAGDotGraph())
|
|
148
148
|
pag->dump("svfir_initial");
|
|
149
149
|
|
|
150
150
|
// print to command line of the SVFIR graph
|
|
151
|
-
if (Options::PAGPrint)
|
|
151
|
+
if (Options::PAGPrint())
|
|
152
152
|
pag->print();
|
|
153
153
|
|
|
154
154
|
// dump ICFG
|
|
155
|
-
if (Options::DumpICFG)
|
|
155
|
+
if (Options::DumpICFG())
|
|
156
156
|
pag->getICFG()->dump("icfg_initial");
|
|
157
157
|
|
|
158
|
-
if (Options::LoopAnalysis)
|
|
158
|
+
if (Options::LoopAnalysis())
|
|
159
159
|
{
|
|
160
160
|
LLVMLoopAnalysis loopAnalysis;
|
|
161
161
|
loopAnalysis.build(pag->getICFG());
|
|
@@ -281,7 +281,7 @@ bool SVFIRBuilder::computeGepOffset(const User *V, LocationSet& ls)
|
|
|
281
281
|
//The int value of the current index operand
|
|
282
282
|
const ConstantInt* op = SVFUtil::dyn_cast<ConstantInt>(offsetVal);
|
|
283
283
|
|
|
284
|
-
// if Options::ModelConsts is disabled. We will treat whole array as one,
|
|
284
|
+
// if Options::ModelConsts() is disabled. We will treat whole array as one,
|
|
285
285
|
// but we can distinguish different field of an array of struct, e.g. s[1].f1 is differet from s[0].f2
|
|
286
286
|
if(const ArrayType* arrTy = SVFUtil::dyn_cast<ArrayType>(gepTy))
|
|
287
287
|
{
|
|
@@ -513,7 +513,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
|
|
|
513
513
|
}
|
|
514
514
|
else if (SVFUtil::isa<ConstantArray, ConstantStruct>(C))
|
|
515
515
|
{
|
|
516
|
-
if(cppUtil::isValVtbl(gvar) && !Options::VtableInSVFIR)
|
|
516
|
+
if(cppUtil::isValVtbl(gvar) && !Options::VtableInSVFIR())
|
|
517
517
|
return;
|
|
518
518
|
for (u32_t i = 0, e = C->getNumOperands(); i != e; i++)
|
|
519
519
|
{
|
|
@@ -523,7 +523,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
|
|
|
523
523
|
}
|
|
524
524
|
else if(ConstantData* data = SVFUtil::dyn_cast<ConstantData>(C))
|
|
525
525
|
{
|
|
526
|
-
if(Options::ModelConsts)
|
|
526
|
+
if(Options::ModelConsts())
|
|
527
527
|
{
|
|
528
528
|
if(ConstantDataSequential* seq = SVFUtil::dyn_cast<ConstantDataSequential>(data))
|
|
529
529
|
{
|
|
@@ -1540,7 +1540,7 @@ void SVFIRBuilder::updateCallGraph(PTACallGraph* callgraph)
|
|
|
1540
1540
|
}
|
|
1541
1541
|
|
|
1542
1542
|
// dump SVFIR
|
|
1543
|
-
if (Options::PAGDotGraph)
|
|
1543
|
+
if (Options::PAGDotGraph())
|
|
1544
1544
|
pag->dump("svfir_final");
|
|
1545
1545
|
}
|
|
1546
1546
|
|
|
@@ -213,7 +213,7 @@ void SymbolTableBuilder::buildMemModel(SVFModule* svfModule)
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
symInfo->totalSymNum = NodeIDAllocator::get()->endSymbolAllocation();
|
|
216
|
-
if (Options::SymTabPrint)
|
|
216
|
+
if (Options::SymTabPrint())
|
|
217
217
|
{
|
|
218
218
|
symInfo->dump();
|
|
219
219
|
}
|
|
@@ -514,7 +514,7 @@ void SymbolTableBuilder::handleGlobalInitializerCE(const Constant *C)
|
|
|
514
514
|
}
|
|
515
515
|
else if(const ConstantData* data = SVFUtil::dyn_cast<ConstantData>(C))
|
|
516
516
|
{
|
|
517
|
-
if(Options::ModelConsts)
|
|
517
|
+
if(Options::ModelConsts())
|
|
518
518
|
{
|
|
519
519
|
if(const ConstantDataSequential* seq = SVFUtil::dyn_cast<ConstantDataSequential>(data))
|
|
520
520
|
{
|
|
@@ -559,7 +559,7 @@ ObjTypeInfo* SymbolTableBuilder::createObjTypeInfo(const Value *val)
|
|
|
559
559
|
if (refTy)
|
|
560
560
|
{
|
|
561
561
|
Type* objTy = getPtrElementType(refTy);
|
|
562
|
-
ObjTypeInfo* typeInfo = new ObjTypeInfo(LLVMModuleSet::getLLVMModuleSet()->getSVFType(objTy), Options::MaxFieldLimit);
|
|
562
|
+
ObjTypeInfo* typeInfo = new ObjTypeInfo(LLVMModuleSet::getLLVMModuleSet()->getSVFType(objTy), Options::MaxFieldLimit());
|
|
563
563
|
initTypeInfo(typeInfo,val, objTy);
|
|
564
564
|
return typeInfo;
|
|
565
565
|
}
|
|
@@ -748,7 +748,7 @@ u32_t SymbolTableBuilder::getObjSize(const Type* ety)
|
|
|
748
748
|
/// Number of flattenned elements of an array or struct
|
|
749
749
|
u32_t SymbolTableBuilder::getNumOfFlattenElements(const Type* T)
|
|
750
750
|
{
|
|
751
|
-
if(Options::ModelArrays)
|
|
751
|
+
if(Options::ModelArrays())
|
|
752
752
|
return getOrAddSVFTypeInfo(T)->getNumOfFlattenElements();
|
|
753
753
|
else
|
|
754
754
|
return getOrAddSVFTypeInfo(T)->getNumOfFlattenFields();
|
|
@@ -757,4 +757,4 @@ u32_t SymbolTableBuilder::getNumOfFlattenElements(const Type* T)
|
|
|
757
757
|
StInfo* SymbolTableBuilder::getOrAddSVFTypeInfo(const Type* T)
|
|
758
758
|
{
|
|
759
759
|
return LLVMModuleSet::getLLVMModuleSet()->getSVFType(T)->getTypeInfo();
|
|
760
|
-
}
|
|
760
|
+
}
|
package/lib/SVFIR/SVFIR.cpp
CHANGED
|
@@ -276,7 +276,7 @@ RetPE* SVFIR::addRetPE(NodeID src, NodeID dst, const CallICFGNode* cs, const Fun
|
|
|
276
276
|
*/
|
|
277
277
|
SVFStmt* SVFIR::addBlackHoleAddrStmt(NodeID node)
|
|
278
278
|
{
|
|
279
|
-
if(Options::HandBlackHole)
|
|
279
|
+
if(Options::HandBlackHole())
|
|
280
280
|
return pag->addAddrStmt(pag->getBlackHoleNode(), node);
|
|
281
281
|
else
|
|
282
282
|
return pag->addCopyStmt(pag->getNullPtr(), node);
|
|
@@ -430,7 +430,7 @@ NodeID SVFIR::getGepObjVar(const MemObj* obj, const LocationSet& ls)
|
|
|
430
430
|
LocationSet newLS = pag->getSymbolInfo()->getModulusOffset(obj,ls);
|
|
431
431
|
|
|
432
432
|
// Base and first field are the same memory location.
|
|
433
|
-
if (Options::FirstFieldEqBase && newLS.accumulateConstantFieldIdx() == 0) return base;
|
|
433
|
+
if (Options::FirstFieldEqBase() && newLS.accumulateConstantFieldIdx() == 0) return base;
|
|
434
434
|
|
|
435
435
|
NodeLocationSetMap::iterator iter = GepObjVarMap.find(std::make_pair(base, newLS));
|
|
436
436
|
if (iter == GepObjVarMap.end())
|
|
@@ -450,7 +450,7 @@ NodeID SVFIR::addGepObjNode(const MemObj* obj, const LocationSet& ls)
|
|
|
450
450
|
assert(0==GepObjVarMap.count(std::make_pair(base, ls))
|
|
451
451
|
&& "this node should not be created before");
|
|
452
452
|
|
|
453
|
-
NodeID gepId = NodeIDAllocator::get()->allocateGepObjectId(base, ls.accumulateConstantFieldIdx(), Options::MaxFieldLimit);
|
|
453
|
+
NodeID gepId = NodeIDAllocator::get()->allocateGepObjectId(base, ls.accumulateConstantFieldIdx(), Options::MaxFieldLimit());
|
|
454
454
|
GepObjVarMap[std::make_pair(base, ls)] = gepId;
|
|
455
455
|
GepObjVar *node = new GepObjVar(obj, gepId, ls);
|
|
456
456
|
memToFieldsMap[base].set(gepId);
|
|
@@ -719,7 +719,7 @@ bool SVFIR::isValidTopLevelPtr(const SVFVar* node)
|
|
|
719
719
|
*/
|
|
720
720
|
void SVFIR::handleBlackHole(bool b)
|
|
721
721
|
{
|
|
722
|
-
Options::HandBlackHole
|
|
722
|
+
Options::HandBlackHole.setValue(b);
|
|
723
723
|
}
|
|
724
724
|
|
|
725
725
|
|
|
@@ -74,7 +74,7 @@ const std::string AddrStmt::toString() const
|
|
|
74
74
|
std::string str;
|
|
75
75
|
std::stringstream rawstr(str);
|
|
76
76
|
rawstr << "AddrStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
77
|
-
if (Options::ShowSVFIRValue)
|
|
77
|
+
if (Options::ShowSVFIRValue())
|
|
78
78
|
{
|
|
79
79
|
rawstr << "\n";
|
|
80
80
|
rawstr << getValue()->toString();
|
|
@@ -87,7 +87,7 @@ const std::string CopyStmt::toString() const
|
|
|
87
87
|
std::string str;
|
|
88
88
|
std::stringstream rawstr(str);
|
|
89
89
|
rawstr << "CopyStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
90
|
-
if (Options::ShowSVFIRValue)
|
|
90
|
+
if (Options::ShowSVFIRValue())
|
|
91
91
|
{
|
|
92
92
|
rawstr << "\n";
|
|
93
93
|
rawstr << getValue()->toString();
|
|
@@ -103,7 +103,7 @@ const std::string PhiStmt::toString() const
|
|
|
103
103
|
for(u32_t i = 0; i < getOpVarNum(); i++)
|
|
104
104
|
rawstr << "[Var" << getOpVar(i)->getId() << ", ICFGNode" << getOpICFGNode(i)->getId() << "],";
|
|
105
105
|
rawstr << ")]\t";
|
|
106
|
-
if (Options::ShowSVFIRValue)
|
|
106
|
+
if (Options::ShowSVFIRValue())
|
|
107
107
|
{
|
|
108
108
|
rawstr << "\n";
|
|
109
109
|
rawstr << getValue()->toString();
|
|
@@ -119,7 +119,7 @@ const std::string SelectStmt::toString() const
|
|
|
119
119
|
for(const SVFVar* op : getOpndVars())
|
|
120
120
|
rawstr << op->getId() << ",";
|
|
121
121
|
rawstr << ")]\t";
|
|
122
|
-
if (Options::ShowSVFIRValue)
|
|
122
|
+
if (Options::ShowSVFIRValue())
|
|
123
123
|
{
|
|
124
124
|
rawstr << "\n";
|
|
125
125
|
rawstr << getValue()->toString();
|
|
@@ -132,7 +132,7 @@ const std::string CmpStmt::toString() const
|
|
|
132
132
|
std::string str;
|
|
133
133
|
std::stringstream rawstr(str);
|
|
134
134
|
rawstr << "CmpStmt: [Var" << getResID() << " <-- (Var" << getOpVarID(0) << " predicate" << getPredicate() << " Var" << getOpVarID(1) << ")]\t";
|
|
135
|
-
if (Options::ShowSVFIRValue)
|
|
135
|
+
if (Options::ShowSVFIRValue())
|
|
136
136
|
{
|
|
137
137
|
rawstr << "\n";
|
|
138
138
|
rawstr << getValue()->toString();
|
|
@@ -145,7 +145,7 @@ const std::string BinaryOPStmt::toString() const
|
|
|
145
145
|
std::string str;
|
|
146
146
|
std::stringstream rawstr(str);
|
|
147
147
|
rawstr << "BinaryOPStmt: [Var" << getResID() << " <-- (Var" << getOpVarID(0) << " opcode" << getOpcode() << " Var" << getOpVarID(1) << ")]\t";
|
|
148
|
-
if (Options::ShowSVFIRValue)
|
|
148
|
+
if (Options::ShowSVFIRValue())
|
|
149
149
|
{
|
|
150
150
|
rawstr << "\n";
|
|
151
151
|
rawstr << getValue()->toString();
|
|
@@ -158,7 +158,7 @@ const std::string UnaryOPStmt::toString() const
|
|
|
158
158
|
std::string str;
|
|
159
159
|
std::stringstream rawstr(str);
|
|
160
160
|
rawstr << "UnaryOPStmt: [Var" << getResID() << " <-- " << " opcode" << getOpcode() << " Var" << getOpVarID() << "]\t";
|
|
161
|
-
if (Options::ShowSVFIRValue)
|
|
161
|
+
if (Options::ShowSVFIRValue())
|
|
162
162
|
{
|
|
163
163
|
rawstr << "\n";
|
|
164
164
|
rawstr << getValue()->toString();
|
|
@@ -178,7 +178,7 @@ const std::string BranchStmt::toString() const
|
|
|
178
178
|
for(u32_t i = 0; i < getNumSuccessors(); i++)
|
|
179
179
|
rawstr << "Successor " << i << " ICFGNode" << getSuccessor(i)->getId() << " ";
|
|
180
180
|
|
|
181
|
-
if (Options::ShowSVFIRValue)
|
|
181
|
+
if (Options::ShowSVFIRValue())
|
|
182
182
|
{
|
|
183
183
|
rawstr << "\n";
|
|
184
184
|
rawstr << getValue()->toString();
|
|
@@ -192,7 +192,7 @@ const std::string LoadStmt::toString() const
|
|
|
192
192
|
std::string str;
|
|
193
193
|
std::stringstream rawstr(str);
|
|
194
194
|
rawstr << "LoadStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
195
|
-
if (Options::ShowSVFIRValue)
|
|
195
|
+
if (Options::ShowSVFIRValue())
|
|
196
196
|
{
|
|
197
197
|
rawstr << "\n";
|
|
198
198
|
rawstr << getValue()->toString();
|
|
@@ -205,7 +205,7 @@ const std::string StoreStmt::toString() const
|
|
|
205
205
|
std::string str;
|
|
206
206
|
std::stringstream rawstr(str);
|
|
207
207
|
rawstr << "StoreStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
208
|
-
if (Options::ShowSVFIRValue)
|
|
208
|
+
if (Options::ShowSVFIRValue())
|
|
209
209
|
{
|
|
210
210
|
rawstr << "\n";
|
|
211
211
|
rawstr << getValue()->toString();
|
|
@@ -218,7 +218,7 @@ const std::string GepStmt::toString() const
|
|
|
218
218
|
std::string str;
|
|
219
219
|
std::stringstream rawstr(str);
|
|
220
220
|
rawstr << "GepStmt: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
221
|
-
if (Options::ShowSVFIRValue)
|
|
221
|
+
if (Options::ShowSVFIRValue())
|
|
222
222
|
{
|
|
223
223
|
rawstr << "\n";
|
|
224
224
|
rawstr << getValue()->toString();
|
|
@@ -231,7 +231,7 @@ const std::string CallPE::toString() const
|
|
|
231
231
|
std::string str;
|
|
232
232
|
std::stringstream rawstr(str);
|
|
233
233
|
rawstr << "CallPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
234
|
-
if (Options::ShowSVFIRValue)
|
|
234
|
+
if (Options::ShowSVFIRValue())
|
|
235
235
|
{
|
|
236
236
|
rawstr << "\n";
|
|
237
237
|
rawstr << getValue()->toString();
|
|
@@ -244,7 +244,7 @@ const std::string RetPE::toString() const
|
|
|
244
244
|
std::string str;
|
|
245
245
|
std::stringstream rawstr(str);
|
|
246
246
|
rawstr << "RetPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
247
|
-
if (Options::ShowSVFIRValue)
|
|
247
|
+
if (Options::ShowSVFIRValue())
|
|
248
248
|
{
|
|
249
249
|
rawstr << "\n";
|
|
250
250
|
rawstr << getValue()->toString();
|
|
@@ -257,7 +257,7 @@ const std::string TDForkPE::toString() const
|
|
|
257
257
|
std::string str;
|
|
258
258
|
std::stringstream rawstr(str);
|
|
259
259
|
rawstr << "TDForkPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
260
|
-
if (Options::ShowSVFIRValue)
|
|
260
|
+
if (Options::ShowSVFIRValue())
|
|
261
261
|
{
|
|
262
262
|
rawstr << "\n";
|
|
263
263
|
rawstr << getValue()->toString();
|
|
@@ -270,7 +270,7 @@ const std::string TDJoinPE::toString() const
|
|
|
270
270
|
std::string str;
|
|
271
271
|
std::stringstream rawstr(str);
|
|
272
272
|
rawstr << "TDJoinPE: [Var" << getLHSVarID() << " <-- Var" << getRHSVarID() << "]\t";
|
|
273
|
-
if (Options::ShowSVFIRValue)
|
|
273
|
+
if (Options::ShowSVFIRValue())
|
|
274
274
|
{
|
|
275
275
|
rawstr << "\n";
|
|
276
276
|
rawstr << getValue()->toString();
|
|
@@ -321,4 +321,4 @@ const SVFVar* BranchStmt::getCondition() const
|
|
|
321
321
|
{
|
|
322
322
|
//assert(isConditional() && "this is a unconditional branch");
|
|
323
323
|
return cond;
|
|
324
|
-
}
|
|
324
|
+
}
|
|
@@ -107,7 +107,7 @@ const std::string ValVar::toString() const
|
|
|
107
107
|
std::string str;
|
|
108
108
|
std::stringstream rawstr(str);
|
|
109
109
|
rawstr << "ValVar ID: " << getId();
|
|
110
|
-
if (Options::ShowSVFIRValue)
|
|
110
|
+
if (Options::ShowSVFIRValue())
|
|
111
111
|
{
|
|
112
112
|
rawstr << "\n";
|
|
113
113
|
rawstr << value->toString();
|
|
@@ -120,7 +120,7 @@ const std::string ObjVar::toString() const
|
|
|
120
120
|
std::string str;
|
|
121
121
|
std::stringstream rawstr(str);
|
|
122
122
|
rawstr << "ObjVar ID: " << getId();
|
|
123
|
-
if (Options::ShowSVFIRValue)
|
|
123
|
+
if (Options::ShowSVFIRValue())
|
|
124
124
|
{
|
|
125
125
|
rawstr << "\n";
|
|
126
126
|
rawstr << value->toString();
|
|
@@ -133,7 +133,7 @@ const std::string GepValVar::toString() const
|
|
|
133
133
|
std::string str;
|
|
134
134
|
std::stringstream rawstr(str);
|
|
135
135
|
rawstr << "GepValVar ID: " << getId() << " with offset_" + std::to_string(getConstantFieldIdx());
|
|
136
|
-
if (Options::ShowSVFIRValue)
|
|
136
|
+
if (Options::ShowSVFIRValue())
|
|
137
137
|
{
|
|
138
138
|
rawstr << "\n";
|
|
139
139
|
rawstr << value->toString();
|
|
@@ -146,7 +146,7 @@ const std::string GepObjVar::toString() const
|
|
|
146
146
|
std::string str;
|
|
147
147
|
std::stringstream rawstr(str);
|
|
148
148
|
rawstr << "GepObjVar ID: " << getId() << " with offset_" + std::to_string(ls.accumulateConstantFieldIdx());
|
|
149
|
-
if (Options::ShowSVFIRValue)
|
|
149
|
+
if (Options::ShowSVFIRValue())
|
|
150
150
|
{
|
|
151
151
|
rawstr << "\n";
|
|
152
152
|
rawstr << value->toString();
|
|
@@ -159,7 +159,7 @@ const std::string FIObjVar::toString() const
|
|
|
159
159
|
std::string str;
|
|
160
160
|
std::stringstream rawstr(str);
|
|
161
161
|
rawstr << "FIObjVar ID: " << getId() << " (base object)";
|
|
162
|
-
if (Options::ShowSVFIRValue)
|
|
162
|
+
if (Options::ShowSVFIRValue())
|
|
163
163
|
{
|
|
164
164
|
rawstr << "\n";
|
|
165
165
|
rawstr << value->toString();
|
|
@@ -66,7 +66,7 @@ const StInfo* SymbolTableInfo::getTypeInfo(const SVFType* T) const
|
|
|
66
66
|
*/
|
|
67
67
|
ObjTypeInfo* SymbolTableInfo::createObjTypeInfo(const SVFType* type)
|
|
68
68
|
{
|
|
69
|
-
ObjTypeInfo* typeInfo = new ObjTypeInfo(type, Options::MaxFieldLimit);
|
|
69
|
+
ObjTypeInfo* typeInfo = new ObjTypeInfo(type, Options::MaxFieldLimit());
|
|
70
70
|
if(type && type->isPointerTy())
|
|
71
71
|
{
|
|
72
72
|
typeInfo->setFlag(ObjTypeInfo::HEAP_OBJ);
|
|
@@ -83,7 +83,7 @@ SymbolTableInfo* SymbolTableInfo::SymbolInfo()
|
|
|
83
83
|
if (symInfo == nullptr)
|
|
84
84
|
{
|
|
85
85
|
symInfo = new SymbolTableInfo();
|
|
86
|
-
symInfo->setModelConstants(Options::ModelConsts);
|
|
86
|
+
symInfo->setModelConstants(Options::ModelConsts());
|
|
87
87
|
}
|
|
88
88
|
return symInfo;
|
|
89
89
|
}
|
|
@@ -146,7 +146,7 @@ const MemObj* SymbolTableInfo::createDummyObj(SymID symId, const SVFType* type)
|
|
|
146
146
|
/// Number of flattenned elements of an array or struct
|
|
147
147
|
u32_t SymbolTableInfo::getNumOfFlattenElements(const SVFType* T)
|
|
148
148
|
{
|
|
149
|
-
if(Options::ModelArrays)
|
|
149
|
+
if(Options::ModelArrays())
|
|
150
150
|
return getTypeInfo(T)->getNumOfFlattenElements();
|
|
151
151
|
else
|
|
152
152
|
return getTypeInfo(T)->getNumOfFlattenFields();
|
|
@@ -155,7 +155,7 @@ u32_t SymbolTableInfo::getNumOfFlattenElements(const SVFType* T)
|
|
|
155
155
|
/// Flatterned offset information of a struct or an array including its array fields
|
|
156
156
|
u32_t SymbolTableInfo::getFlattenedElemIdx(const SVFType* T, u32_t origId)
|
|
157
157
|
{
|
|
158
|
-
if(Options::ModelArrays)
|
|
158
|
+
if(Options::ModelArrays())
|
|
159
159
|
{
|
|
160
160
|
const std::vector<u32_t>& so = getTypeInfo(T)->getFlattenedElemIdxVec();
|
|
161
161
|
assert ((unsigned)origId < so.size() && !so.empty() && "element index out of bounds, can't get flattened index!");
|
|
@@ -186,7 +186,7 @@ const SVFType* SymbolTableInfo::getOriginalElemType(const SVFType* baseType, u32
|
|
|
186
186
|
/// Return the type of a flattened element given a flattened index
|
|
187
187
|
const SVFType* SymbolTableInfo::getFlatternedElemType(const SVFType* baseType, u32_t flatten_idx)
|
|
188
188
|
{
|
|
189
|
-
if(Options::ModelArrays)
|
|
189
|
+
if(Options::ModelArrays())
|
|
190
190
|
{
|
|
191
191
|
const std::vector<const SVFType*>& so = getTypeInfo(baseType)->getFlattenElementTypes();
|
|
192
192
|
assert (flatten_idx < so.size() && !so.empty() && "element index out of bounds or struct opaque type, can't get element type!");
|
|
@@ -365,7 +365,7 @@ bool ObjTypeInfo::isNonPtrFieldObj(const LocationSet& ls)
|
|
|
365
365
|
if (SVFUtil::isa<SVFStructType, SVFArrayType>(ety))
|
|
366
366
|
{
|
|
367
367
|
u32_t sz = 0;
|
|
368
|
-
if(Options::ModelArrays)
|
|
368
|
+
if(Options::ModelArrays())
|
|
369
369
|
sz = SymbolTableInfo::SymbolInfo()->getTypeInfo(ety)->getFlattenElementTypes().size();
|
|
370
370
|
else
|
|
371
371
|
sz = SymbolTableInfo::SymbolInfo()->getTypeInfo(ety)->getFlattenFieldTypes().size();
|