svf-tools 1.0.811 → 1.0.813
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/AccessPath_8cpp_source.html +159 -136
- package/SVF-doxygen/html/AccessPath_8h_source.html +45 -42
- package/SVF-doxygen/html/ConsExeState_8cpp_source.html +21 -21
- package/SVF-doxygen/html/ConsExeState_8h_source.html +384 -385
- package/SVF-doxygen/html/ConsG_8cpp_source.html +8 -8
- package/SVF-doxygen/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ExeState_8cpp_source.html +24 -24
- package/SVF-doxygen/html/ExeState_8h_source.html +227 -217
- package/SVF-doxygen/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/IntervalExeState_8cpp_source.html +8 -8
- package/SVF-doxygen/html/IntervalExeState_8h_source.html +412 -408
- package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/RelationSolver_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +13 -13
- package/SVF-doxygen/html/SVFFileSystem_8h_source.html +11 -11
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +273 -272
- package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +28 -28
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +980 -973
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +169 -169
- package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +33 -33
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +11 -11
- package/SVF-doxygen/html/SVFIR_8cpp_source.html +14 -14
- package/SVF-doxygen/html/SVFIR_8h_source.html +11 -11
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +19 -19
- package/SVF-doxygen/html/SVFStatements_8h_source.html +829 -830
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +7 -7
- package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +2 -2
- package/SVF-doxygen/html/SymState_8h_source.html +1 -1
- package/SVF-doxygen/html/VFGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/VFG_8cpp_source.html +15 -15
- package/SVF-doxygen/html/VFG_8h_source.html +10 -10
- package/SVF-doxygen/html/classSVF_1_1AccessPath-members.html +18 -17
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +206 -153
- package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +68 -68
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +51 -51
- package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CallPE.html +35 -35
- package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +97 -97
- package/SVF-doxygen/html/classSVF_1_1ConsExeState-members.html +74 -74
- package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +412 -394
- package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ExeState-members.html +34 -34
- package/SVF-doxygen/html/classSVF_1_1ExeState.html +287 -272
- package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +37 -37
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1IntervalExeState-members.html +78 -78
- package/SVF-doxygen/html/classSVF_1_1IntervalExeState.html +445 -434
- package/SVF-doxygen/html/classSVF_1_1MultiOpndStmt.html +48 -48
- package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +46 -46
- package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1RetPE.html +35 -35
- package/SVF-doxygen/html/classSVF_1_1SVFIR.html +13 -13
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState-members.html +28 -28
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +296 -295
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +15 -16
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1087 -1128
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIRWriter.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +38 -38
- package/SVF-doxygen/html/classSVF_1_1SymState.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +22 -22
- package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +21 -21
- package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +44 -44
- package/SVF-doxygen/html/classSVF_1_1VFG.html +15 -15
- package/SVF-doxygen/html/functions.html +6 -6
- package/SVF-doxygen/html/functions_a.html +13 -8
- package/SVF-doxygen/html/functions_b.html +3 -3
- package/SVF-doxygen/html/functions_e.html +2 -2
- package/SVF-doxygen/html/functions_func_e.html +2 -2
- package/SVF-doxygen/html/functions_func_g.html +44 -45
- package/SVF-doxygen/html/functions_func_i.html +12 -22
- package/SVF-doxygen/html/functions_func_l.html +6 -6
- package/SVF-doxygen/html/functions_func_n.html +3 -3
- package/SVF-doxygen/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/functions_func_s.html +7 -7
- package/SVF-doxygen/html/functions_func_w.html +3 -3
- package/SVF-doxygen/html/functions_g.html +42 -43
- package/SVF-doxygen/html/functions_i.html +30 -37
- package/SVF-doxygen/html/functions_l.html +8 -8
- package/SVF-doxygen/html/functions_n.html +7 -7
- package/SVF-doxygen/html/functions_o.html +20 -21
- package/SVF-doxygen/html/functions_p.html +12 -12
- package/SVF-doxygen/html/functions_r.html +3 -1
- package/SVF-doxygen/html/functions_s.html +18 -20
- package/SVF-doxygen/html/functions_t.html +10 -10
- package/SVF-doxygen/html/functions_type.html +5 -0
- package/SVF-doxygen/html/functions_type_i.html +4 -4
- package/SVF-doxygen/html/functions_type_v.html +3 -8
- package/SVF-doxygen/html/functions_v.html +10 -13
- package/SVF-doxygen/html/functions_vars.html +6 -6
- package/SVF-doxygen/html/functions_vars_g.html +2 -2
- package/SVF-doxygen/html/functions_vars_i.html +3 -0
- package/SVF-doxygen/html/functions_vars_o.html +0 -3
- package/SVF-doxygen/html/functions_w.html +11 -11
- package/SVF-doxygen/html/search/all_0.js +4 -4
- package/SVF-doxygen/html/search/all_1.js +210 -209
- package/SVF-doxygen/html/search/all_10.js +324 -324
- package/SVF-doxygen/html/search/all_11.js +222 -222
- package/SVF-doxygen/html/search/all_12.js +544 -544
- package/SVF-doxygen/html/search/all_13.js +191 -191
- package/SVF-doxygen/html/search/all_14.js +67 -67
- package/SVF-doxygen/html/search/all_15.js +167 -169
- package/SVF-doxygen/html/search/all_16.js +63 -63
- package/SVF-doxygen/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/search/all_19.js +11 -11
- package/SVF-doxygen/html/search/all_1a.js +172 -172
- package/SVF-doxygen/html/search/all_2.js +169 -169
- package/SVF-doxygen/html/search/all_3.js +642 -642
- package/SVF-doxygen/html/search/all_4.js +233 -233
- package/SVF-doxygen/html/search/all_5.js +119 -119
- package/SVF-doxygen/html/search/all_6.js +225 -225
- package/SVF-doxygen/html/search/all_7.js +868 -868
- package/SVF-doxygen/html/search/all_8.js +197 -197
- package/SVF-doxygen/html/search/all_9.js +606 -611
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/search/all_c.js +116 -116
- package/SVF-doxygen/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/search/all_e.js +207 -207
- package/SVF-doxygen/html/search/all_f.js +115 -116
- package/SVF-doxygen/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +80 -80
- package/SVF-doxygen/html/search/classes_3.js +37 -37
- package/SVF-doxygen/html/search/classes_4.js +9 -9
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +104 -104
- package/SVF-doxygen/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +21 -21
- package/SVF-doxygen/html/search/defines_4.js +2 -2
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +55 -55
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +12 -12
- package/SVF-doxygen/html/search/functions_1.js +360 -360
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +138 -138
- package/SVF-doxygen/html/search/functions_12.js +279 -279
- package/SVF-doxygen/html/search/functions_13.js +59 -59
- package/SVF-doxygen/html/search/functions_14.js +39 -39
- package/SVF-doxygen/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/search/functions_16.js +32 -32
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +172 -172
- package/SVF-doxygen/html/search/functions_2.js +87 -87
- package/SVF-doxygen/html/search/functions_3.js +257 -257
- package/SVF-doxygen/html/search/functions_4.js +75 -75
- package/SVF-doxygen/html/search/functions_5.js +53 -53
- package/SVF-doxygen/html/search/functions_6.js +59 -59
- package/SVF-doxygen/html/search/functions_7.js +852 -852
- package/SVF-doxygen/html/search/functions_8.js +149 -149
- package/SVF-doxygen/html/search/functions_9.js +423 -428
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +26 -26
- package/SVF-doxygen/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/search/related_d.js +12 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_0.js +19 -18
- package/SVF-doxygen/html/search/typedefs_1.js +26 -26
- package/SVF-doxygen/html/search/typedefs_10.js +61 -61
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/search/typedefs_13.js +33 -34
- package/SVF-doxygen/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/search/typedefs_2.js +129 -129
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/search/typedefs_6.js +55 -55
- package/SVF-doxygen/html/search/typedefs_7.js +44 -44
- package/SVF-doxygen/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/search/typedefs_d.js +14 -14
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +151 -151
- package/SVF-doxygen/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/search/variables_11.js +44 -44
- package/SVF-doxygen/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/search/variables_2.js +38 -38
- package/SVF-doxygen/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/search/variables_5.js +37 -37
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/search/variables_9.js +78 -77
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +29 -30
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +9 -9
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1ConsExeState_01_4.html +5 -5
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +5 -5
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1IntervalExeState_01_4.html +5 -5
- package/SVF-doxygen/html/svf-ex_8cpp.html +17 -17
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +17 -17
- package/package.json +1 -1
- package/svf/include/AbstractExecution/ConsExeState.h +99 -96
- package/svf/include/AbstractExecution/ExeState.h +66 -53
- package/svf/include/AbstractExecution/IntervalExeState.h +66 -61
- package/svf/include/AbstractExecution/SVFIR2ConsExeState.h +7 -7
- package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +22 -19
- package/svf/include/MemoryModel/AccessPath.h +13 -11
- package/svf/include/SVFIR/SVFStatements.h +2 -3
- package/svf/lib/AbstractExecution/ConsExeState.cpp +13 -13
- package/svf/lib/AbstractExecution/ExeState.cpp +19 -19
- package/svf/lib/AbstractExecution/IntervalExeState.cpp +4 -4
- package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +38 -37
- package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +273 -287
- package/svf/lib/MemoryModel/AccessPath.cpp +39 -17
- package/svf/lib/SVFIR/SVFFileSystem.cpp +2 -2
|
@@ -129,7 +129,7 @@ void ConsExeState::buildGlobES(ConsExeState &globES, Set<u32_t> &vars)
|
|
|
129
129
|
SingleAbsValue &expr = globES[varId];
|
|
130
130
|
if (expr.is_numeral() && isVirtualMemAddress(expr.get_numeral_int()))
|
|
131
131
|
{
|
|
132
|
-
if (globES.
|
|
132
|
+
if (globES.inLocalLocToValTable(expr))
|
|
133
133
|
{
|
|
134
134
|
store(expr, globES.load(expr));
|
|
135
135
|
}
|
|
@@ -236,13 +236,13 @@ void ConsExeState::applySummary(const ConsExeState &summary)
|
|
|
236
236
|
{
|
|
237
237
|
_locToVal[item.first] = item.second;
|
|
238
238
|
}
|
|
239
|
-
for (const auto &item: summary.
|
|
239
|
+
for (const auto &item: summary._varToAddrs)
|
|
240
240
|
{
|
|
241
|
-
|
|
241
|
+
_varToAddrs[item.first] = item.second;
|
|
242
242
|
}
|
|
243
|
-
for (const auto &item: summary.
|
|
243
|
+
for (const auto &item: summary._locToAddrs)
|
|
244
244
|
{
|
|
245
|
-
|
|
245
|
+
_locToAddrs[item.first] = item.second;
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
|
|
@@ -445,18 +445,18 @@ std::string ConsExeState::toString() const
|
|
|
445
445
|
|
|
446
446
|
bool ConsExeState::applySelect(u32_t res, u32_t cond, u32_t top, u32_t fop)
|
|
447
447
|
{
|
|
448
|
-
if (
|
|
448
|
+
if (inVarToValTable(top) && inVarToValTable(fop) && inVarToValTable(cond))
|
|
449
449
|
{
|
|
450
450
|
SingleAbsValue &tExpr = (*this)[top], &fExpr = (*this)[fop], &condExpr = (*this)[cond];
|
|
451
451
|
|
|
452
452
|
return assign((*this)[res], ite(condExpr == 1, tExpr, fExpr));
|
|
453
453
|
}
|
|
454
|
-
else if (inVarToAddrsTable(top) && inVarToAddrsTable(fop) &&
|
|
454
|
+
else if (inVarToAddrsTable(top) && inVarToAddrsTable(fop) && inVarToValTable(cond))
|
|
455
455
|
{
|
|
456
456
|
SingleAbsValue &condExpr = (*this)[cond];
|
|
457
457
|
if (condExpr.is_numeral())
|
|
458
458
|
{
|
|
459
|
-
|
|
459
|
+
getAddrs(res) = condExpr.is_zero() ? getAddrs(fop) : getAddrs(top);
|
|
460
460
|
}
|
|
461
461
|
}
|
|
462
462
|
return false;
|
|
@@ -467,10 +467,10 @@ bool ConsExeState::applyPhi(u32_t res, std::vector<u32_t> &ops)
|
|
|
467
467
|
for (u32_t i = 0; i < ops.size(); i++)
|
|
468
468
|
{
|
|
469
469
|
NodeID curId = ops[i];
|
|
470
|
-
if (
|
|
470
|
+
if (inVarToValTable(curId))
|
|
471
471
|
{
|
|
472
472
|
const SingleAbsValue &cur = (*this)[curId];
|
|
473
|
-
if (!
|
|
473
|
+
if (!inVarToValTable(res))
|
|
474
474
|
{
|
|
475
475
|
(*this)[res] = cur;
|
|
476
476
|
}
|
|
@@ -481,14 +481,14 @@ bool ConsExeState::applyPhi(u32_t res, std::vector<u32_t> &ops)
|
|
|
481
481
|
}
|
|
482
482
|
else if (inVarToAddrsTable(curId))
|
|
483
483
|
{
|
|
484
|
-
const
|
|
484
|
+
const Addrs &cur = getAddrs(curId);
|
|
485
485
|
if (!inVarToAddrsTable(res))
|
|
486
486
|
{
|
|
487
|
-
|
|
487
|
+
getAddrs(res) = cur;
|
|
488
488
|
}
|
|
489
489
|
else
|
|
490
490
|
{
|
|
491
|
-
|
|
491
|
+
getAddrs(res).join_with(cur);
|
|
492
492
|
}
|
|
493
493
|
}
|
|
494
494
|
}
|
|
@@ -34,17 +34,17 @@ using namespace SVF;
|
|
|
34
34
|
|
|
35
35
|
bool ExeState::operator==(const ExeState &rhs) const
|
|
36
36
|
{
|
|
37
|
-
return
|
|
37
|
+
return eqVarToAddrs(_varToAddrs, rhs._varToAddrs) && eqVarToAddrs(_locToAddrs, rhs._locToAddrs);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
bool ExeState::joinWith(const ExeState &other)
|
|
41
41
|
{
|
|
42
42
|
bool changed = false;
|
|
43
|
-
for (auto it = other.
|
|
43
|
+
for (auto it = other._varToAddrs.begin(); it != other._varToAddrs.end(); ++it)
|
|
44
44
|
{
|
|
45
45
|
auto key = it->first;
|
|
46
|
-
auto oit =
|
|
47
|
-
if (oit !=
|
|
46
|
+
auto oit = _varToAddrs.find(key);
|
|
47
|
+
if (oit != _varToAddrs.end())
|
|
48
48
|
{
|
|
49
49
|
if(oit->second.join_with(it->second))
|
|
50
50
|
changed = true;
|
|
@@ -52,14 +52,14 @@ bool ExeState::joinWith(const ExeState &other)
|
|
|
52
52
|
else
|
|
53
53
|
{
|
|
54
54
|
changed = true;
|
|
55
|
-
|
|
55
|
+
_varToAddrs.emplace(key, it->second);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
for (auto it = other.
|
|
58
|
+
for (auto it = other._locToAddrs.begin(); it != other._locToAddrs.end(); ++it)
|
|
59
59
|
{
|
|
60
60
|
auto key = it->first;
|
|
61
|
-
auto oit =
|
|
62
|
-
if (oit !=
|
|
61
|
+
auto oit = _locToAddrs.find(key);
|
|
62
|
+
if (oit != _locToAddrs.end())
|
|
63
63
|
{
|
|
64
64
|
if(oit->second.join_with(it->second))
|
|
65
65
|
changed = true;
|
|
@@ -67,7 +67,7 @@ bool ExeState::joinWith(const ExeState &other)
|
|
|
67
67
|
else
|
|
68
68
|
{
|
|
69
69
|
changed = true;
|
|
70
|
-
|
|
70
|
+
_locToAddrs.emplace(key, it->second);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
return changed;
|
|
@@ -76,21 +76,21 @@ bool ExeState::joinWith(const ExeState &other)
|
|
|
76
76
|
bool ExeState::meetWith(const ExeState &other)
|
|
77
77
|
{
|
|
78
78
|
bool changed = false;
|
|
79
|
-
for (auto it = other.
|
|
79
|
+
for (auto it = other._varToAddrs.begin(); it != other._varToAddrs.end(); ++it)
|
|
80
80
|
{
|
|
81
81
|
auto key = it->first;
|
|
82
|
-
auto oit =
|
|
83
|
-
if (oit !=
|
|
82
|
+
auto oit = _varToAddrs.find(key);
|
|
83
|
+
if (oit != _varToAddrs.end())
|
|
84
84
|
{
|
|
85
85
|
if(oit->second.meet_with(it->second))
|
|
86
86
|
changed = true;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
for (auto it = other.
|
|
89
|
+
for (auto it = other._locToAddrs.begin(); it != other._locToAddrs.end(); ++it)
|
|
90
90
|
{
|
|
91
91
|
auto key = it->first;
|
|
92
|
-
auto oit =
|
|
93
|
-
if (oit !=
|
|
92
|
+
auto oit = _locToAddrs.find(key);
|
|
93
|
+
if (oit != _locToAddrs.end())
|
|
94
94
|
{
|
|
95
95
|
if(oit->second.meet_with(it->second))
|
|
96
96
|
changed = true;
|
|
@@ -101,14 +101,14 @@ bool ExeState::meetWith(const ExeState &other)
|
|
|
101
101
|
|
|
102
102
|
u32_t ExeState::hash() const
|
|
103
103
|
{
|
|
104
|
-
size_t h =
|
|
104
|
+
size_t h = getVarToAddrs().size() * 2;
|
|
105
105
|
Hash<u32_t> hf;
|
|
106
|
-
for (const auto &t:
|
|
106
|
+
for (const auto &t: getVarToAddrs())
|
|
107
107
|
{
|
|
108
108
|
h ^= hf(t.first) + 0x9e3779b9 + (h << 6) + (h >> 2);
|
|
109
109
|
}
|
|
110
|
-
size_t h2 =
|
|
111
|
-
for (const auto &t:
|
|
110
|
+
size_t h2 = getLocToAddrs().size() * 2;
|
|
111
|
+
for (const auto &t: getLocToAddrs())
|
|
112
112
|
{
|
|
113
113
|
h2 ^= hf(t.first) + 0x9e3779b9 + (h2 << 6) + (h2 >> 2);
|
|
114
114
|
}
|
|
@@ -191,8 +191,8 @@ void IntervalExeState::printExprValues(std::ostream &oss) const
|
|
|
191
191
|
oss << "-----------Var and Value-----------\n";
|
|
192
192
|
printTable(_varToItvVal, oss);
|
|
193
193
|
printTable(_locToItvVal, oss);
|
|
194
|
-
printTable(
|
|
195
|
-
printTable(
|
|
194
|
+
printTable(_varToAddrs, oss);
|
|
195
|
+
printTable(_locToAddrs, oss);
|
|
196
196
|
oss << "-----------------------------------------\n";
|
|
197
197
|
}
|
|
198
198
|
|
|
@@ -219,7 +219,7 @@ void IntervalExeState::printTable(const VarToValMap &table, std::ostream &oss) c
|
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
void IntervalExeState::printTable(const
|
|
222
|
+
void IntervalExeState::printTable(const VarToAddrs &table, std::ostream &oss) const
|
|
223
223
|
{
|
|
224
224
|
oss.flags(std::ios::left);
|
|
225
225
|
std::set<NodeID> ordered;
|
|
@@ -230,7 +230,7 @@ void IntervalExeState::printTable(const VarToVAddrs &table, std::ostream &oss) c
|
|
|
230
230
|
for (const auto &item: ordered)
|
|
231
231
|
{
|
|
232
232
|
oss << "Var" << std::to_string(item);
|
|
233
|
-
|
|
233
|
+
Addrs sim = table.at(item);
|
|
234
234
|
oss << "\t Value: " << std::hex << "[ ";
|
|
235
235
|
for (auto it = sim.begin(); it != sim.end(); ++it)
|
|
236
236
|
{
|
|
@@ -35,9 +35,9 @@ using namespace std;
|
|
|
35
35
|
SVFIR2ConsExeState::~SVFIR2ConsExeState()
|
|
36
36
|
{
|
|
37
37
|
ConsExeState::globalConsES._varToVal.clear();
|
|
38
|
-
ConsExeState::globalConsES.
|
|
38
|
+
ConsExeState::globalConsES._varToAddrs.clear();
|
|
39
39
|
ConsExeState::globalConsES._locToVal.clear();
|
|
40
|
-
ConsExeState::globalConsES.
|
|
40
|
+
ConsExeState::globalConsES._locToAddrs.clear();
|
|
41
41
|
}
|
|
42
42
|
/// Translator for llvm ir
|
|
43
43
|
//{%
|
|
@@ -55,7 +55,7 @@ void SVFIR2ConsExeState::translateAddr(const AddrStmt *addr)
|
|
|
55
55
|
}
|
|
56
56
|
else if (inVarToAddrsTable(addr->getRHSVarID()))
|
|
57
57
|
{
|
|
58
|
-
_es->globalConsES.
|
|
58
|
+
_es->globalConsES._varToAddrs[addr->getLHSVarID()] = _es->globalConsES._varToAddrs[addr->getRHSVarID()];
|
|
59
59
|
}
|
|
60
60
|
else
|
|
61
61
|
{
|
|
@@ -74,7 +74,7 @@ void SVFIR2ConsExeState::translateBinary(const BinaryOPStmt *binary)
|
|
|
74
74
|
u32_t op1 = binary->getOpVarID(1);
|
|
75
75
|
u32_t res = binary->getResID();
|
|
76
76
|
// rhs is not initialized
|
|
77
|
-
if (!_es->
|
|
77
|
+
if (!_es->inVarToValTable(op0) || !_es->inVarToValTable(op1))
|
|
78
78
|
return;
|
|
79
79
|
|
|
80
80
|
SingleAbsValue &lhs = (*_es)[op0], &rhs = (*_es)[op1];
|
|
@@ -196,7 +196,7 @@ void SVFIR2ConsExeState::translateCmp(const CmpStmt *cmp)
|
|
|
196
196
|
else if (inVarToAddrsTable(op0) && inVarToAddrsTable(op1))
|
|
197
197
|
{
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
Addrs &lhs = _es->getAddrs(op0), &rhs = _es->getAddrs(op1);
|
|
200
200
|
if (lhs.size() == 1)
|
|
201
201
|
{
|
|
202
202
|
(*_es)[res] = SingleAbsValue::topConstant();
|
|
@@ -346,7 +346,7 @@ void SVFIR2ConsExeState::translateLoad(const LoadStmt *load)
|
|
|
346
346
|
u32_t lhs = load->getLHSVarID();
|
|
347
347
|
if (inVarToAddrsTable(rhs))
|
|
348
348
|
{
|
|
349
|
-
const
|
|
349
|
+
const Addrs &addrs = _es->getAddrs(rhs);
|
|
350
350
|
for (const auto &addr: addrs)
|
|
351
351
|
{
|
|
352
352
|
assert(isVirtualMemAddress(addr) && "not addr?");
|
|
@@ -355,13 +355,13 @@ void SVFIR2ConsExeState::translateLoad(const LoadStmt *load)
|
|
|
355
355
|
{
|
|
356
356
|
if (inLocToAddrsTable(objId))
|
|
357
357
|
{
|
|
358
|
-
_es->
|
|
358
|
+
_es->getAddrs(lhs).setBottom();
|
|
359
359
|
}
|
|
360
360
|
break;
|
|
361
361
|
}
|
|
362
362
|
else if (!load->getLHSVar()->getType() && inLocToAddrsTable(objId))
|
|
363
363
|
{
|
|
364
|
-
_es->
|
|
364
|
+
_es->getAddrs(lhs).setBottom();
|
|
365
365
|
break;
|
|
366
366
|
}
|
|
367
367
|
else if (inLocToValTable(objId))
|
|
@@ -381,11 +381,11 @@ void SVFIR2ConsExeState::translateLoad(const LoadStmt *load)
|
|
|
381
381
|
{
|
|
382
382
|
if (!inVarToAddrsTable(lhs))
|
|
383
383
|
{
|
|
384
|
-
_es->
|
|
384
|
+
_es->getAddrs(lhs) = _es->loadAddrs(addr);
|
|
385
385
|
}
|
|
386
386
|
else
|
|
387
387
|
{
|
|
388
|
-
_es->
|
|
388
|
+
_es->getAddrs(lhs).join_with(_es->loadAddrs(addr));
|
|
389
389
|
}
|
|
390
390
|
}
|
|
391
391
|
}
|
|
@@ -393,11 +393,11 @@ void SVFIR2ConsExeState::translateLoad(const LoadStmt *load)
|
|
|
393
393
|
{
|
|
394
394
|
if (!inVarToAddrsTable(lhs))
|
|
395
395
|
{
|
|
396
|
-
_es->
|
|
396
|
+
_es->getAddrs(lhs) = _es->loadAddrs(addr);
|
|
397
397
|
}
|
|
398
398
|
else
|
|
399
399
|
{
|
|
400
|
-
_es->
|
|
400
|
+
_es->getAddrs(lhs).join_with(_es->loadAddrs(addr));
|
|
401
401
|
}
|
|
402
402
|
}
|
|
403
403
|
else if (inLocToValTable(objId))
|
|
@@ -428,7 +428,7 @@ void SVFIR2ConsExeState::translateStore(const StoreStmt *store)
|
|
|
428
428
|
{
|
|
429
429
|
if (inVarToValTable(rhs))
|
|
430
430
|
{
|
|
431
|
-
const
|
|
431
|
+
const Addrs &addrs = _es->getAddrs(lhs);
|
|
432
432
|
for (const auto &addr: addrs)
|
|
433
433
|
{
|
|
434
434
|
assert(isVirtualMemAddress(addr) && "not addr?");
|
|
@@ -437,11 +437,11 @@ void SVFIR2ConsExeState::translateStore(const StoreStmt *store)
|
|
|
437
437
|
}
|
|
438
438
|
else if (inVarToAddrsTable(rhs))
|
|
439
439
|
{
|
|
440
|
-
const
|
|
440
|
+
const Addrs &addrs = _es->getAddrs(lhs);
|
|
441
441
|
for (const auto &addr: addrs)
|
|
442
442
|
{
|
|
443
443
|
assert(isVirtualMemAddress(addr) && "not addr?");
|
|
444
|
-
_es->
|
|
444
|
+
_es->storeAddrs(addr, _es->getAddrs(rhs));
|
|
445
445
|
}
|
|
446
446
|
}
|
|
447
447
|
}
|
|
@@ -468,7 +468,7 @@ void SVFIR2ConsExeState::translateCopy(const CopyStmt *copy)
|
|
|
468
468
|
}
|
|
469
469
|
else if (inVarToAddrsTable(rhs))
|
|
470
470
|
{
|
|
471
|
-
_es->
|
|
471
|
+
_es->getAddrs(lhs) = _es->getAddrs(rhs);
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
474
|
}
|
|
@@ -488,7 +488,7 @@ void SVFIR2ConsExeState::translateCall(const CallPE *callPE)
|
|
|
488
488
|
}
|
|
489
489
|
else if (inVarToAddrsTable(rhs))
|
|
490
490
|
{
|
|
491
|
-
_es->
|
|
491
|
+
_es->getAddrs(lhs) = _es->getAddrs(rhs);
|
|
492
492
|
}
|
|
493
493
|
}
|
|
494
494
|
|
|
@@ -502,7 +502,7 @@ void SVFIR2ConsExeState::translateRet(const RetPE *retPE)
|
|
|
502
502
|
}
|
|
503
503
|
else if (inVarToAddrsTable(rhs))
|
|
504
504
|
{
|
|
505
|
-
_es->
|
|
505
|
+
_es->getAddrs(lhs) = _es->getAddrs(rhs);
|
|
506
506
|
}
|
|
507
507
|
}
|
|
508
508
|
|
|
@@ -517,7 +517,7 @@ void SVFIR2ConsExeState::translateGep(const GepStmt *gep, bool isGlobal)
|
|
|
517
517
|
u32_t lhs = gep->getLHSVarID();
|
|
518
518
|
// rhs is not initialized
|
|
519
519
|
if (!inVarToAddrsTable(rhs)) return;
|
|
520
|
-
const
|
|
520
|
+
const Addrs &rhsVal = _es->getAddrs(rhs);
|
|
521
521
|
if (rhsVal.empty()) return;
|
|
522
522
|
std::pair<s32_t, s32_t> offset = getGepOffset(gep);
|
|
523
523
|
if (offset.first == -1 && offset.second == -1) return;
|
|
@@ -525,7 +525,7 @@ void SVFIR2ConsExeState::translateGep(const GepStmt *gep, bool isGlobal)
|
|
|
525
525
|
{
|
|
526
526
|
return;
|
|
527
527
|
}
|
|
528
|
-
|
|
528
|
+
Addrs gepAddrs;
|
|
529
529
|
s32_t ub = offset.second;
|
|
530
530
|
if (offset.second > (s32_t) Options::MaxFieldLimit() - 1)
|
|
531
531
|
{
|
|
@@ -536,7 +536,7 @@ void SVFIR2ConsExeState::translateGep(const GepStmt *gep, bool isGlobal)
|
|
|
536
536
|
gepAddrs.join_with(getGepObjAddress(rhs, i));
|
|
537
537
|
}
|
|
538
538
|
if (gepAddrs.empty()) return;
|
|
539
|
-
_es->
|
|
539
|
+
_es->getAddrs(lhs) = gepAddrs;
|
|
540
540
|
return;
|
|
541
541
|
}
|
|
542
542
|
|
|
@@ -579,10 +579,10 @@ void SVFIR2ConsExeState::translatePhi(const PhiStmt *phi)
|
|
|
579
579
|
* @param offset
|
|
580
580
|
* @return
|
|
581
581
|
*/
|
|
582
|
-
SVFIR2ConsExeState::
|
|
582
|
+
SVFIR2ConsExeState::Addrs SVFIR2ConsExeState::getGepObjAddress(u32_t base, s32_t offset)
|
|
583
583
|
{
|
|
584
|
-
const
|
|
585
|
-
|
|
584
|
+
const Addrs &addrs = _es->getAddrs(base);
|
|
585
|
+
Addrs ret;
|
|
586
586
|
for (const auto &addr: addrs)
|
|
587
587
|
{
|
|
588
588
|
int64_t baseObj = getInternalID(addr);
|
|
@@ -594,7 +594,7 @@ SVFIR2ConsExeState::VAddrs SVFIR2ConsExeState::getGepObjAddress(u32_t base, s32_
|
|
|
594
594
|
assert(SVFUtil::isa<ObjVar>(PAG::getPAG()->getGNode(baseObj)) && "Fail to get the base object address!");
|
|
595
595
|
NodeID gepObj = PAG::getPAG()->getGepObjVar(baseObj, offset);
|
|
596
596
|
initSVFVar(gepObj);
|
|
597
|
-
if (offset == 0 && baseObj != gepObj) _es->
|
|
597
|
+
if (offset == 0 && baseObj != gepObj) _es->getAddrs(gepObj) = _es->getAddrs(base);
|
|
598
598
|
ret.insert(getVirtualMemAddress(gepObj));
|
|
599
599
|
}
|
|
600
600
|
return ret;
|
|
@@ -617,7 +617,8 @@ std::pair<s32_t, s32_t> SVFIR2ConsExeState::getGepOffset(const SVF::GepStmt *gep
|
|
|
617
617
|
/// for variable index and nested indexes, e.g. 1) gep arr, idx 2) gep arr idx0, idx1
|
|
618
618
|
for (int i = gep->getOffsetVarAndGepTypePairVec().size() - 1; i >= 0; i--)
|
|
619
619
|
{
|
|
620
|
-
const SVFValue *value =
|
|
620
|
+
const SVFValue *value =
|
|
621
|
+
gep->getOffsetVarAndGepTypePairVec()[i].first->getValue();
|
|
621
622
|
const SVFType *type = gep->getOffsetVarAndGepTypePairVec()[i].second;
|
|
622
623
|
const SVFConstantInt *op = SVFUtil::dyn_cast<SVFConstantInt>(value);
|
|
623
624
|
s32_t offset = 0;
|
|
@@ -735,7 +736,7 @@ void SVFIR2ConsExeState::initObjVar(const ObjVar *objVar, u32_t varId)
|
|
|
735
736
|
else if (SVFUtil::isa<SVFConstantNullPtr>(obj->getValue()))
|
|
736
737
|
_es->globalConsES._varToVal[varId] = 0;
|
|
737
738
|
else if (SVFUtil::isa<SVFGlobalValue>(obj->getValue()))
|
|
738
|
-
_es->globalConsES.
|
|
739
|
+
_es->globalConsES._varToAddrs[varId] = getVirtualMemAddress(varId);
|
|
739
740
|
else if (obj->isConstDataOrAggData())
|
|
740
741
|
{
|
|
741
742
|
// TODO
|
|
@@ -749,19 +750,19 @@ void SVFIR2ConsExeState::initObjVar(const ObjVar *objVar, u32_t varId)
|
|
|
749
750
|
}
|
|
750
751
|
else
|
|
751
752
|
{
|
|
752
|
-
_es->globalConsES.
|
|
753
|
+
_es->globalConsES._varToAddrs[varId] = getVirtualMemAddress(varId);
|
|
753
754
|
}
|
|
754
755
|
}
|
|
755
756
|
else
|
|
756
757
|
{
|
|
757
|
-
_es->globalConsES.
|
|
758
|
+
_es->globalConsES._varToAddrs[varId] = getVirtualMemAddress(varId);
|
|
758
759
|
}
|
|
759
760
|
}
|
|
760
761
|
|
|
761
762
|
|
|
762
763
|
void SVFIR2ConsExeState::initSVFVar(u32_t varId)
|
|
763
764
|
{
|
|
764
|
-
if (_es->
|
|
765
|
+
if (_es->inVarToValTable(varId)) return;
|
|
765
766
|
SVFIR *svfir = PAG::getPAG();
|
|
766
767
|
SVFVar *svfVar = svfir->getGNode(varId);
|
|
767
768
|
// write objvar into cache instead of exestate
|
|
@@ -792,17 +793,17 @@ void SVFIR2ConsExeState::moveToGlobal()
|
|
|
792
793
|
{
|
|
793
794
|
ConsExeState::globalConsES._locToVal.insert(it);
|
|
794
795
|
}
|
|
795
|
-
for (const auto &it: _es->
|
|
796
|
+
for (const auto &it: _es->_varToAddrs)
|
|
796
797
|
{
|
|
797
|
-
ConsExeState::globalConsES.
|
|
798
|
+
ConsExeState::globalConsES._varToAddrs.insert(it);
|
|
798
799
|
}
|
|
799
|
-
for (const auto &it: _es->
|
|
800
|
+
for (const auto &it: _es->_locToAddrs)
|
|
800
801
|
{
|
|
801
|
-
ConsExeState::globalConsES.
|
|
802
|
+
ConsExeState::globalConsES._locToAddrs.insert(it);
|
|
802
803
|
}
|
|
803
|
-
ConsExeState::globalConsES.
|
|
804
|
+
ConsExeState::globalConsES._varToAddrs[0] = ConsExeState::getVirtualMemAddress(0);
|
|
804
805
|
_es->_varToVal.clear();
|
|
805
806
|
_es->_locToVal.clear();
|
|
806
|
-
_es->
|
|
807
|
-
_es->
|
|
807
|
+
_es->_varToAddrs.clear();
|
|
808
|
+
_es->_locToAddrs.clear();
|
|
808
809
|
}
|