svf-tools 1.0.875 → 1.0.877
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/README.md +1 -1
- package/SVF-doxygen/html/AbstractExecution_8cpp.html +218 -0
- package/SVF-doxygen/html/AbstractExecution_8cpp_source.html +2124 -0
- package/SVF-doxygen/html/AbstractExecution_8h.html +118 -0
- package/SVF-doxygen/html/AbstractExecution_8h_source.html +512 -0
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +81 -81
- package/SVF-doxygen/html/BufOverflowChecker_8h.html +1 -1
- package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +20 -20
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/CFBasicBlockGWTO_8h_source.html +2 -2
- package/SVF-doxygen/html/CFBasicBlockG_8h_source.html +318 -367
- package/SVF-doxygen/html/ae_8cpp.html +7 -7
- package/SVF-doxygen/html/ae_8cpp_source.html +7 -7
- package/SVF-doxygen/html/annotated.html +12 -12
- package/SVF-doxygen/html/classSVF_1_1AEAPI-members.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1AEAPI.html +145 -145
- package/SVF-doxygen/html/classSVF_1_1AEStat-members.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1AEStat.html +53 -53
- package/SVF-doxygen/html/classSVF_1_1AbstractExecution-members.html +137 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +2884 -0
- package/SVF-doxygen/html/classSVF_1_1AbstractExecution.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker-members.html +50 -50
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +117 -117
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.png +0 -0
- package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI-members.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1BufOverflowCheckerAPI.html +38 -38
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGBuilder.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGraph.html +92 -92
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockNode-members.html +8 -8
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockNode.html +51 -309
- package/SVF-doxygen/html/classSVF_1_1GenericNode.html +8 -8
- package/SVF-doxygen/html/classes.html +16 -16
- package/SVF-doxygen/html/dir_81caa96ab1d3de93b353e2bbe80e6067.html +1 -1
- package/SVF-doxygen/html/dir_fbec400583b4bd6c5f2e89c86c5943a6.html +1 -1
- package/SVF-doxygen/html/files.html +2 -2
- package/SVF-doxygen/html/functions.html +21 -21
- package/SVF-doxygen/html/functions_a.html +17 -17
- package/SVF-doxygen/html/functions_b.html +1 -1
- package/SVF-doxygen/html/functions_c.html +16 -16
- package/SVF-doxygen/html/functions_d.html +7 -11
- package/SVF-doxygen/html/functions_e.html +1 -1
- package/SVF-doxygen/html/functions_func.html +13 -13
- package/SVF-doxygen/html/functions_func_c.html +11 -11
- package/SVF-doxygen/html/functions_func_d.html +7 -11
- package/SVF-doxygen/html/functions_func_e.html +1 -1
- package/SVF-doxygen/html/functions_func_g.html +1 -1
- package/SVF-doxygen/html/functions_func_h.html +11 -11
- package/SVF-doxygen/html/functions_func_i.html +8 -8
- package/SVF-doxygen/html/functions_func_m.html +1 -1
- package/SVF-doxygen/html/functions_func_n.html +1 -1
- package/SVF-doxygen/html/functions_func_r.html +2 -2
- package/SVF-doxygen/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/functions_func_w.html +1 -1
- package/SVF-doxygen/html/functions_func_~.html +3 -3
- package/SVF-doxygen/html/functions_g.html +1 -1
- package/SVF-doxygen/html/functions_h.html +11 -11
- package/SVF-doxygen/html/functions_i.html +8 -8
- package/SVF-doxygen/html/functions_m.html +1 -1
- package/SVF-doxygen/html/functions_n.html +1 -1
- package/SVF-doxygen/html/functions_p.html +7 -7
- package/SVF-doxygen/html/functions_r.html +6 -8
- package/SVF-doxygen/html/functions_rela.html +2 -2
- package/SVF-doxygen/html/functions_s.html +10 -8
- package/SVF-doxygen/html/functions_t.html +7 -7
- package/SVF-doxygen/html/functions_type_c.html +1 -1
- package/SVF-doxygen/html/functions_v.html +1 -3
- package/SVF-doxygen/html/functions_vars.html +21 -21
- package/SVF-doxygen/html/functions_w.html +1 -1
- package/SVF-doxygen/html/functions_~.html +3 -3
- package/SVF-doxygen/html/globals.html +2 -2
- package/SVF-doxygen/html/globals_defs.html +1 -1
- package/SVF-doxygen/html/globals_s.html +1 -1
- package/SVF-doxygen/html/globals_vars.html +2 -2
- package/SVF-doxygen/html/hierarchy.html +12 -12
- package/SVF-doxygen/html/namespaceSVF.html +9 -9
- package/SVF-doxygen/html/search/all_0.js +21 -21
- package/SVF-doxygen/html/search/all_1.js +503 -502
- package/SVF-doxygen/html/search/all_10.js +325 -325
- package/SVF-doxygen/html/search/all_11.js +228 -228
- package/SVF-doxygen/html/search/all_12.js +569 -569
- package/SVF-doxygen/html/search/all_13.js +208 -208
- package/SVF-doxygen/html/search/all_14.js +69 -69
- package/SVF-doxygen/html/search/all_15.js +176 -176
- package/SVF-doxygen/html/search/all_16.js +78 -78
- 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 +26 -26
- package/SVF-doxygen/html/search/all_1a.js +182 -182
- package/SVF-doxygen/html/search/all_2.js +182 -182
- package/SVF-doxygen/html/search/all_3.js +654 -654
- package/SVF-doxygen/html/search/all_4.js +237 -237
- package/SVF-doxygen/html/search/all_5.js +128 -128
- package/SVF-doxygen/html/search/all_6.js +232 -232
- package/SVF-doxygen/html/search/all_7.js +1060 -1060
- package/SVF-doxygen/html/search/all_8.js +217 -217
- package/SVF-doxygen/html/search/all_9.js +628 -628
- 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 +115 -115
- package/SVF-doxygen/html/search/all_d.js +203 -203
- package/SVF-doxygen/html/search/all_e.js +209 -209
- package/SVF-doxygen/html/search/all_f.js +121 -121
- package/SVF-doxygen/html/search/classes_0.js +29 -29
- package/SVF-doxygen/html/search/classes_1.js +12 -12
- package/SVF-doxygen/html/search/classes_10.js +74 -74
- package/SVF-doxygen/html/search/classes_11.js +14 -14
- 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 +20 -20
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +78 -78
- 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 +38 -38
- package/SVF-doxygen/html/search/classes_8.js +58 -58
- 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 +19 -19
- 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 +3 -3
- package/SVF-doxygen/html/search/defines_10.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/search/defines_4.js +3 -3
- 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 +4 -4
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +8 -8
- package/SVF-doxygen/html/search/defines_f.js +4 -4
- package/SVF-doxygen/html/search/enums_0.js +4 -4
- 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 +4 -4
- 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 +15 -15
- package/SVF-doxygen/html/search/enumvalues_1.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +4 -4
- 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 +8 -8
- 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 +17 -17
- 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 +47 -47
- package/SVF-doxygen/html/search/files_0.js +16 -15
- package/SVF-doxygen/html/search/files_1.js +9 -9
- 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 +58 -58
- 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 +10 -10
- package/SVF-doxygen/html/search/files_7.js +15 -15
- 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 +4 -4
- 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 +13 -13
- package/SVF-doxygen/html/search/functions_1.js +374 -374
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +142 -142
- package/SVF-doxygen/html/search/functions_12.js +298 -298
- package/SVF-doxygen/html/search/functions_13.js +74 -74
- package/SVF-doxygen/html/search/functions_14.js +40 -40
- package/SVF-doxygen/html/search/functions_15.js +72 -72
- package/SVF-doxygen/html/search/functions_16.js +38 -38
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +182 -182
- package/SVF-doxygen/html/search/functions_2.js +95 -95
- package/SVF-doxygen/html/search/functions_3.js +266 -266
- package/SVF-doxygen/html/search/functions_4.js +84 -84
- package/SVF-doxygen/html/search/functions_5.js +57 -57
- package/SVF-doxygen/html/search/functions_6.js +65 -65
- package/SVF-doxygen/html/search/functions_7.js +867 -867
- package/SVF-doxygen/html/search/functions_8.js +164 -164
- package/SVF-doxygen/html/search/functions_9.js +440 -440
- 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 +25 -25
- package/SVF-doxygen/html/search/functions_d.js +81 -81
- package/SVF-doxygen/html/search/functions_e.js +36 -36
- package/SVF-doxygen/html/search/functions_f.js +58 -58
- 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 +4 -4
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +3 -3
- 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 +2 -2
- 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 +20 -20
- package/SVF-doxygen/html/search/typedefs_1.js +27 -27
- package/SVF-doxygen/html/search/typedefs_10.js +63 -63
- 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 +40 -40
- package/SVF-doxygen/html/search/typedefs_14.js +11 -11
- 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 +18 -18
- package/SVF-doxygen/html/search/typedefs_5.js +42 -42
- package/SVF-doxygen/html/search/typedefs_6.js +57 -57
- package/SVF-doxygen/html/search/typedefs_7.js +47 -47
- 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 +182 -182
- package/SVF-doxygen/html/search/variables_1.js +76 -76
- package/SVF-doxygen/html/search/variables_10.js +98 -98
- package/SVF-doxygen/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/search/variables_12.js +93 -93
- package/SVF-doxygen/html/search/variables_13.js +76 -76
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +49 -49
- package/SVF-doxygen/html/search/variables_16.js +11 -11
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +17 -17
- package/SVF-doxygen/html/search/variables_2.js +41 -41
- package/SVF-doxygen/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/search/variables_4.js +51 -51
- package/SVF-doxygen/html/search/variables_5.js +39 -39
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +34 -34
- package/SVF-doxygen/html/search/variables_8.js +8 -8
- package/SVF-doxygen/html/search/variables_9.js +78 -78
- 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 +57 -57
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +31 -31
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html +102 -102
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFBasicBlockNode_01_5_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFBasicBlockNode_01_5_01_4.html +1 -1
- package/build.sh +1 -1
- package/package.json +1 -1
- package/svf/include/AE/Svfexe/{AE.h → AbstractExecution.h} +13 -14
- package/svf/include/AE/Svfexe/BufOverflowChecker.h +5 -5
- package/svf/include/Graphs/CFBasicBlockG.h +0 -43
- package/svf/lib/AE/Svfexe/{AE.cpp → AbstractExecution.cpp} +33 -33
- package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +2 -2
- package/svf-llvm/tools/AE/ae.cpp +1 -1
|
@@ -0,0 +1,2884 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
3
|
+
<head>
|
|
4
|
+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
6
|
+
<meta name="generator" content="Doxygen 1.8.17"/>
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
8
|
+
<title>Static Value-Flow Analysis: SVF::AbstractExecution Class Reference</title>
|
|
9
|
+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
10
|
+
<script type="text/javascript" src="jquery.js"></script>
|
|
11
|
+
<script type="text/javascript" src="dynsections.js"></script>
|
|
12
|
+
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
13
|
+
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
14
|
+
<script type="text/javascript" src="search/search.js"></script>
|
|
15
|
+
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
16
|
+
</head>
|
|
17
|
+
<body>
|
|
18
|
+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
19
|
+
<div id="titlearea">
|
|
20
|
+
<table cellspacing="0" cellpadding="0">
|
|
21
|
+
<tbody>
|
|
22
|
+
<tr style="height: 56px;">
|
|
23
|
+
<td id="projectalign" style="padding-left: 0.5em;">
|
|
24
|
+
<div id="projectname">Static Value-Flow Analysis
|
|
25
|
+
</div>
|
|
26
|
+
</td>
|
|
27
|
+
</tr>
|
|
28
|
+
</tbody>
|
|
29
|
+
</table>
|
|
30
|
+
</div>
|
|
31
|
+
<!-- end header part -->
|
|
32
|
+
<!-- Generated by Doxygen 1.8.17 -->
|
|
33
|
+
<script type="text/javascript">
|
|
34
|
+
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
35
|
+
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
36
|
+
/* @license-end */
|
|
37
|
+
</script>
|
|
38
|
+
<script type="text/javascript" src="menudata.js"></script>
|
|
39
|
+
<script type="text/javascript" src="menu.js"></script>
|
|
40
|
+
<script type="text/javascript">
|
|
41
|
+
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
|
42
|
+
$(function() {
|
|
43
|
+
initMenu('',true,false,'search.php','Search');
|
|
44
|
+
$(document).ready(function() { init_search(); });
|
|
45
|
+
});
|
|
46
|
+
/* @license-end */</script>
|
|
47
|
+
<div id="main-nav"></div>
|
|
48
|
+
<!-- window showing the filter options -->
|
|
49
|
+
<div id="MSearchSelectWindow"
|
|
50
|
+
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
51
|
+
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
52
|
+
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<!-- iframe showing the search results (closed by default) -->
|
|
56
|
+
<div id="MSearchResultsWindow">
|
|
57
|
+
<iframe src="javascript:void(0)" frameborder="0"
|
|
58
|
+
name="MSearchResults" id="MSearchResults">
|
|
59
|
+
</iframe>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
<div id="nav-path" class="navpath">
|
|
63
|
+
<ul>
|
|
64
|
+
<li class="navelem"><a class="el" href="namespaceSVF.html">SVF</a></li><li class="navelem"><a class="el" href="classSVF_1_1AbstractExecution.html">AbstractExecution</a></li> </ul>
|
|
65
|
+
</div>
|
|
66
|
+
</div><!-- top -->
|
|
67
|
+
<div class="header">
|
|
68
|
+
<div class="summary">
|
|
69
|
+
<a href="#pub-types">Public Types</a> |
|
|
70
|
+
<a href="#pub-methods">Public Member Functions</a> |
|
|
71
|
+
<a href="#pub-static-methods">Static Public Member Functions</a> |
|
|
72
|
+
<a href="#pro-methods">Protected Member Functions</a> |
|
|
73
|
+
<a href="#pro-attribs">Protected Attributes</a> |
|
|
74
|
+
<a href="#pri-methods">Private Member Functions</a> |
|
|
75
|
+
<a href="#pri-attribs">Private Attributes</a> |
|
|
76
|
+
<a href="#friends">Friends</a> |
|
|
77
|
+
<a href="classSVF_1_1AbstractExecution-members.html">List of all members</a> </div>
|
|
78
|
+
<div class="headertitle">
|
|
79
|
+
<div class="title">SVF::AbstractExecution Class Reference</div> </div>
|
|
80
|
+
</div><!--header-->
|
|
81
|
+
<div class="contents">
|
|
82
|
+
|
|
83
|
+
<p><code>#include <<a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>></code></p>
|
|
84
|
+
<div class="dynheader">
|
|
85
|
+
Inheritance diagram for SVF::AbstractExecution:</div>
|
|
86
|
+
<div class="dyncontent">
|
|
87
|
+
<div class="center">
|
|
88
|
+
<img src="classSVF_1_1AbstractExecution.png" usemap="#SVF::AbstractExecution_map" alt=""/>
|
|
89
|
+
<map id="SVF::AbstractExecution_map" name="SVF::AbstractExecution_map">
|
|
90
|
+
<area href="classSVF_1_1BufOverflowChecker.html" alt="SVF::BufOverflowChecker" shape="rect" coords="0,56,162,80"/>
|
|
91
|
+
</map>
|
|
92
|
+
</div></div>
|
|
93
|
+
<table class="memberdecls">
|
|
94
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
|
|
95
|
+
Public Types</h2></td></tr>
|
|
96
|
+
<tr class="memitem:a8ad0f3d5a0c9de60eff91fcc0dd44aae"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classSVF_1_1SCCDetection.html">SCCDetection</a>< <a class="el" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a8ad0f3d5a0c9de60eff91fcc0dd44aae">CallGraphSCC</a></td></tr>
|
|
97
|
+
<tr class="separator:a8ad0f3d5a0c9de60eff91fcc0dd44aae"><td class="memSeparator" colspan="2"> </td></tr>
|
|
98
|
+
</table><table class="memberdecls">
|
|
99
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
|
|
100
|
+
Public Member Functions</h2></td></tr>
|
|
101
|
+
<tr class="memitem:a84d8fedb7e9d23e92ffcb74b4cfbf78c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a84d8fedb7e9d23e92ffcb74b4cfbf78c">AbstractExecution</a> ()</td></tr>
|
|
102
|
+
<tr class="memdesc:a84d8fedb7e9d23e92ffcb74b4cfbf78c"><td class="mdescLeft"> </td><td class="mdescRight">Constructor. <a href="classSVF_1_1AbstractExecution.html#a84d8fedb7e9d23e92ffcb74b4cfbf78c">More...</a><br /></td></tr>
|
|
103
|
+
<tr class="separator:a84d8fedb7e9d23e92ffcb74b4cfbf78c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
104
|
+
<tr class="memitem:a4bf7be47ddc0ba53ec4a5e87f300763f"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a4bf7be47ddc0ba53ec4a5e87f300763f">initExtAPI</a> ()</td></tr>
|
|
105
|
+
<tr class="separator:a4bf7be47ddc0ba53ec4a5e87f300763f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
106
|
+
<tr class="memitem:a7a9a6b46b24d044316f609f71344e2bb"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a7a9a6b46b24d044316f609f71344e2bb">runOnModule</a> (<a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> *svfModule)</td></tr>
|
|
107
|
+
<tr class="separator:a7a9a6b46b24d044316f609f71344e2bb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
108
|
+
<tr class="memitem:a6771ac262e5fdbac0006b293cde47398"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a6771ac262e5fdbac0006b293cde47398">~AbstractExecution</a> ()</td></tr>
|
|
109
|
+
<tr class="memdesc:a6771ac262e5fdbac0006b293cde47398"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="classSVF_1_1AbstractExecution.html#a6771ac262e5fdbac0006b293cde47398">More...</a><br /></td></tr>
|
|
110
|
+
<tr class="separator:a6771ac262e5fdbac0006b293cde47398"><td class="memSeparator" colspan="2"> </td></tr>
|
|
111
|
+
<tr class="memitem:a46364bb8814f7bf6ddd492aa7dc58ffb"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a46364bb8814f7bf6ddd492aa7dc58ffb">analyse</a> ()</td></tr>
|
|
112
|
+
<tr class="memdesc:a46364bb8814f7bf6ddd492aa7dc58ffb"><td class="mdescLeft"> </td><td class="mdescRight">Program entry. <a href="classSVF_1_1AbstractExecution.html#a46364bb8814f7bf6ddd492aa7dc58ffb">More...</a><br /></td></tr>
|
|
113
|
+
<tr class="separator:a46364bb8814f7bf6ddd492aa7dc58ffb"><td class="memSeparator" colspan="2"> </td></tr>
|
|
114
|
+
<tr class="memitem:a6c381287424a3623cfdae5a75d2a9c9b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88">AEKind</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a6c381287424a3623cfdae5a75d2a9c9b">getKind</a> () const</td></tr>
|
|
115
|
+
<tr class="separator:a6c381287424a3623cfdae5a75d2a9c9b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
116
|
+
</table><table class="memberdecls">
|
|
117
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
|
|
118
|
+
Static Public Member Functions</h2></td></tr>
|
|
119
|
+
<tr class="memitem:a9c23029833558b082c613fa5e0f14c0d"><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a9c23029833558b082c613fa5e0f14c0d">classof</a> (const <a class="el" href="classSVF_1_1AbstractExecution.html">AbstractExecution</a> *ae)</td></tr>
|
|
120
|
+
<tr class="separator:a9c23029833558b082c613fa5e0f14c0d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
121
|
+
</table><table class="memberdecls">
|
|
122
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
|
|
123
|
+
Protected Member Functions</h2></td></tr>
|
|
124
|
+
<tr class="memitem:a7efff2047b2b6017fdd210a8679817cd"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a7efff2047b2b6017fdd210a8679817cd">handleGlobalNode</a> ()</td></tr>
|
|
125
|
+
<tr class="memdesc:a7efff2047b2b6017fdd210a8679817cd"><td class="mdescLeft"> </td><td class="mdescRight">Global <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> is handled at the entry of the program,. <a href="classSVF_1_1AbstractExecution.html#a7efff2047b2b6017fdd210a8679817cd">More...</a><br /></td></tr>
|
|
126
|
+
<tr class="separator:a7efff2047b2b6017fdd210a8679817cd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
127
|
+
<tr class="memitem:ae641b5687513661a2542e8318430d760"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ae641b5687513661a2542e8318430d760">markRecursiveFuns</a> ()</td></tr>
|
|
128
|
+
<tr class="memdesc:ae641b5687513661a2542e8318430d760"><td class="mdescLeft"> </td><td class="mdescRight">mark recursive functions by detecting SCC in callgraph <a href="classSVF_1_1AbstractExecution.html#ae641b5687513661a2542e8318430d760">More...</a><br /></td></tr>
|
|
129
|
+
<tr class="separator:ae641b5687513661a2542e8318430d760"><td class="memSeparator" colspan="2"> </td></tr>
|
|
130
|
+
<tr class="memitem:ac73335ecb1efc6c50775a205c618201f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ac73335ecb1efc6c50775a205c618201f">hasInEdgesES</a> (const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *block)</td></tr>
|
|
131
|
+
<tr class="separator:ac73335ecb1efc6c50775a205c618201f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
132
|
+
<tr class="memitem:a28df4f2bd5b337468f254cd609adb25f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a28df4f2bd5b337468f254cd609adb25f">hasBranchES</a> (const <a class="el" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a> *intraEdge, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &es)</td></tr>
|
|
133
|
+
<tr class="separator:a28df4f2bd5b337468f254cd609adb25f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
134
|
+
<tr class="memitem:a4715ec6b1aefdfd600fda8324cde2a66"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a4715ec6b1aefdfd600fda8324cde2a66">handleBlock</a> (const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *block)</td></tr>
|
|
135
|
+
<tr class="memdesc:a4715ec6b1aefdfd600fda8324cde2a66"><td class="mdescLeft"> </td><td class="mdescRight">handle instructions in svf basic blocks <a href="classSVF_1_1AbstractExecution.html#a4715ec6b1aefdfd600fda8324cde2a66">More...</a><br /></td></tr>
|
|
136
|
+
<tr class="separator:a4715ec6b1aefdfd600fda8324cde2a66"><td class="memSeparator" colspan="2"> </td></tr>
|
|
137
|
+
<tr class="memitem:a714fa1f4794008f630de415414cf8bfd"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a714fa1f4794008f630de415414cf8bfd">handleICFGNode</a> (const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</td></tr>
|
|
138
|
+
<tr class="separator:a714fa1f4794008f630de415414cf8bfd"><td class="memSeparator" colspan="2"> </td></tr>
|
|
139
|
+
<tr class="memitem:a6cbc336372afb947c783fb14c45426df"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a6cbc336372afb947c783fb14c45426df">handleCallSite</a> (const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *node)</td></tr>
|
|
140
|
+
<tr class="separator:a6cbc336372afb947c783fb14c45426df"><td class="memSeparator" colspan="2"> </td></tr>
|
|
141
|
+
<tr class="memitem:af4579490ced0a02537850d62891cf5bc"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#af4579490ced0a02537850d62891cf5bc">handleCycle</a> (const <a class="el" href="namespaceSVF.html#a5ddc46fb7b3bba87aad4c58c87487b5e">CFBasicBlockGWTOCycle</a> *cycle)</td></tr>
|
|
142
|
+
<tr class="memdesc:af4579490ced0a02537850d62891cf5bc"><td class="mdescLeft"> </td><td class="mdescRight">handle wto cycle (loop) <a href="classSVF_1_1AbstractExecution.html#af4579490ced0a02537850d62891cf5bc">More...</a><br /></td></tr>
|
|
143
|
+
<tr class="separator:af4579490ced0a02537850d62891cf5bc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
144
|
+
<tr class="memitem:adb88a8be0bc1c1ac2d1546e9191c6f93"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#adb88a8be0bc1c1ac2d1546e9191c6f93">handleFunc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *func)</td></tr>
|
|
145
|
+
<tr class="memdesc:adb88a8be0bc1c1ac2d1546e9191c6f93"><td class="mdescLeft"> </td><td class="mdescRight">handle user defined function, ext function is not included. <a href="classSVF_1_1AbstractExecution.html#adb88a8be0bc1c1ac2d1546e9191c6f93">More...</a><br /></td></tr>
|
|
146
|
+
<tr class="separator:adb88a8be0bc1c1ac2d1546e9191c6f93"><td class="memSeparator" colspan="2"> </td></tr>
|
|
147
|
+
<tr class="memitem:a1d725fe50a7084bfa18bd47b941af885"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a1d725fe50a7084bfa18bd47b941af885">handleSVFStatement</a> (const <a class="el" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt)</td></tr>
|
|
148
|
+
<tr class="separator:a1d725fe50a7084bfa18bd47b941af885"><td class="memSeparator" colspan="2"> </td></tr>
|
|
149
|
+
<tr class="memitem:a97c5745ddcd0ce72e65dee09ff7afb42"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a97c5745ddcd0ce72e65dee09ff7afb42">SkipRecursiveCall</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callnode)</td></tr>
|
|
150
|
+
<tr class="separator:a97c5745ddcd0ce72e65dee09ff7afb42"><td class="memSeparator" colspan="2"> </td></tr>
|
|
151
|
+
<tr class="memitem:a7e1c3edfa546182ad394116b37b834f9"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a7e1c3edfa546182ad394116b37b834f9">SkipRecursiveFunc</a> (const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *func)</td></tr>
|
|
152
|
+
<tr class="separator:a7e1c3edfa546182ad394116b37b834f9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
153
|
+
<tr class="memitem:ac7a25ad5cbc1a6132869ae54b805f73a"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ac7a25ad5cbc1a6132869ae54b805f73a">hasCmpBranchES</a> (const <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmpStmt, <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> succ, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &es)</td></tr>
|
|
154
|
+
<tr class="separator:ac7a25ad5cbc1a6132869ae54b805f73a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
155
|
+
<tr class="memitem:adc740771e712644d08f95fc6c488c1af"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#adc740771e712644d08f95fc6c488c1af">hasSwitchBranchES</a> (const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> *var, <a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> succ, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &es)</td></tr>
|
|
156
|
+
<tr class="separator:adc740771e712644d08f95fc6c488c1af"><td class="memSeparator" colspan="2"> </td></tr>
|
|
157
|
+
</table><table class="memberdecls">
|
|
158
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
|
|
159
|
+
Protected Attributes</h2></td></tr>
|
|
160
|
+
<tr class="memitem:a49742e8c3a8fe598a0945a8d8ff394d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a></td></tr>
|
|
161
|
+
<tr class="memdesc:a49742e8c3a8fe598a0945a8d8ff394d0"><td class="mdescLeft"> </td><td class="mdescRight">protected data members, also used in subclasses <a href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">More...</a><br /></td></tr>
|
|
162
|
+
<tr class="separator:a49742e8c3a8fe598a0945a8d8ff394d0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
163
|
+
<tr class="memitem:a39439604f7d397f620a7639884ea5b50"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a39439604f7d397f620a7639884ea5b50">_callgraph</a></td></tr>
|
|
164
|
+
<tr class="separator:a39439604f7d397f620a7639884ea5b50"><td class="memSeparator" colspan="2"> </td></tr>
|
|
165
|
+
<tr class="memitem:a5e24bceb3d6961117651dbc65e9a097a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVFIR2ItvExeState</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a></td></tr>
|
|
166
|
+
<tr class="memdesc:a5e24bceb3d6961117651dbc65e9a097a"><td class="mdescLeft"> </td><td class="mdescRight">Execution State, used to store the Interval Value of every <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> variable. <a href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">More...</a><br /></td></tr>
|
|
167
|
+
<tr class="separator:a5e24bceb3d6961117651dbc65e9a097a"><td class="memSeparator" colspan="2"> </td></tr>
|
|
168
|
+
<tr class="memitem:a26f8c21bd96ae22ca2e72af6fbfa410c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AEAPI.html">AEAPI</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">_api</a> {nullptr}</td></tr>
|
|
169
|
+
<tr class="separator:a26f8c21bd96ae22ca2e72af6fbfa410c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
170
|
+
<tr class="memitem:ab5021d59a929f4eaf5e59d911036d201"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1ICFG.html">ICFG</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">_icfg</a></td></tr>
|
|
171
|
+
<tr class="separator:ab5021d59a929f4eaf5e59d911036d201"><td class="memSeparator" colspan="2"> </td></tr>
|
|
172
|
+
<tr class="memitem:a74a55a4d4941c85bdfed81f060049bf0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AEStat.html">AEStat</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a></td></tr>
|
|
173
|
+
<tr class="separator:a74a55a4d4941c85bdfed81f060049bf0"><td class="memSeparator" colspan="2"> </td></tr>
|
|
174
|
+
<tr class="memitem:ad36d48c0ef82de915d9339c4f47cbd70"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88">AEKind</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ad36d48c0ef82de915d9339c4f47cbd70">_kind</a></td></tr>
|
|
175
|
+
<tr class="separator:ad36d48c0ef82de915d9339c4f47cbd70"><td class="memSeparator" colspan="2"> </td></tr>
|
|
176
|
+
<tr class="memitem:a790c178f8c29eecfc256a5dfd97d1637"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a790c178f8c29eecfc256a5dfd97d1637">_bugLoc</a></td></tr>
|
|
177
|
+
<tr class="separator:a790c178f8c29eecfc256a5dfd97d1637"><td class="memSeparator" colspan="2"> </td></tr>
|
|
178
|
+
<tr class="memitem:a5ed683d635bd05f0bee10436d20deb31"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1SVFBugReport.html">SVFBugReport</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a5ed683d635bd05f0bee10436d20deb31">_recoder</a></td></tr>
|
|
179
|
+
<tr class="separator:a5ed683d635bd05f0bee10436d20deb31"><td class="memSeparator" colspan="2"> </td></tr>
|
|
180
|
+
<tr class="memitem:ab9d6ebcf67ec473ce7ad5910c74eddc1"><td class="memItemLeft" align="right" valign="top">std::vector< const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a></td></tr>
|
|
181
|
+
<tr class="separator:ab9d6ebcf67ec473ce7ad5910c74eddc1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
182
|
+
<tr class="memitem:a55737f5c82afce29a816eb21070a2bc1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *, <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a55737f5c82afce29a816eb21070a2bc1">_nodeToBugInfo</a></td></tr>
|
|
183
|
+
<tr class="separator:a55737f5c82afce29a816eb21070a2bc1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
184
|
+
</table><table class="memberdecls">
|
|
185
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
|
|
186
|
+
Private Member Functions</h2></td></tr>
|
|
187
|
+
<tr class="memitem:a319fe24ebb925f70fde574d5b17c3b98"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a319fe24ebb925f70fde574d5b17c3b98">isExtCall</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode)</td></tr>
|
|
188
|
+
<tr class="separator:a319fe24ebb925f70fde574d5b17c3b98"><td class="memSeparator" colspan="2"> </td></tr>
|
|
189
|
+
<tr class="memitem:acf4a6c3fe5a2239512acb791b9aba854"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#acf4a6c3fe5a2239512acb791b9aba854">extCallPass</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode)</td></tr>
|
|
190
|
+
<tr class="separator:acf4a6c3fe5a2239512acb791b9aba854"><td class="memSeparator" colspan="2"> </td></tr>
|
|
191
|
+
<tr class="memitem:a6b92cdb6c5d3ae425955864536f2cba7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a6b92cdb6c5d3ae425955864536f2cba7">isRecursiveCall</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode)</td></tr>
|
|
192
|
+
<tr class="separator:a6b92cdb6c5d3ae425955864536f2cba7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
193
|
+
<tr class="memitem:aa220cdcd1653998d684ec14fe729932d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#aa220cdcd1653998d684ec14fe729932d">recursiveCallPass</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode)</td></tr>
|
|
194
|
+
<tr class="separator:aa220cdcd1653998d684ec14fe729932d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
195
|
+
<tr class="memitem:aec702d92bbba9e847a9b3eada060a2c5"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#aec702d92bbba9e847a9b3eada060a2c5">isDirectCall</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode)</td></tr>
|
|
196
|
+
<tr class="separator:aec702d92bbba9e847a9b3eada060a2c5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
197
|
+
<tr class="memitem:aff1c9582db75361b68aaaf0c4b8b6f0d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#aff1c9582db75361b68aaaf0c4b8b6f0d">directCallFunPass</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode)</td></tr>
|
|
198
|
+
<tr class="separator:aff1c9582db75361b68aaaf0c4b8b6f0d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
199
|
+
<tr class="memitem:ad1baaa8eaad68b215f63941776e79ccf"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ad1baaa8eaad68b215f63941776e79ccf">isIndirectCall</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode)</td></tr>
|
|
200
|
+
<tr class="separator:ad1baaa8eaad68b215f63941776e79ccf"><td class="memSeparator" colspan="2"> </td></tr>
|
|
201
|
+
<tr class="memitem:accf5896d39647e41e1408fa90935b650"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#accf5896d39647e41e1408fa90935b650">indirectCallFunPass</a> (const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callNode)</td></tr>
|
|
202
|
+
<tr class="separator:accf5896d39647e41e1408fa90935b650"><td class="memSeparator" colspan="2"> </td></tr>
|
|
203
|
+
<tr class="memitem:ab807fd4f914cd35a07fe19bb0d7f9860"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ab807fd4f914cd35a07fe19bb0d7f9860">isFunEntry</a> (const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *block)</td></tr>
|
|
204
|
+
<tr class="separator:ab807fd4f914cd35a07fe19bb0d7f9860"><td class="memSeparator" colspan="2"> </td></tr>
|
|
205
|
+
<tr class="memitem:ac8af7bb8a5442ffd885249cecc5c0f02"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ac8af7bb8a5442ffd885249cecc5c0f02">isGlobalEntry</a> (const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *block)</td></tr>
|
|
206
|
+
<tr class="separator:ac8af7bb8a5442ffd885249cecc5c0f02"><td class="memSeparator" colspan="2"> </td></tr>
|
|
207
|
+
<tr class="memitem:aa964763a5e9e99276707bd6678d1f37f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#aa964763a5e9e99276707bd6678d1f37f">widenFixpointPass</a> (const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *cycle_head, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &pre_es)</td></tr>
|
|
208
|
+
<tr class="separator:aa964763a5e9e99276707bd6678d1f37f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
209
|
+
<tr class="memitem:a331ce1725ac1441f5624a2211021f967"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a331ce1725ac1441f5624a2211021f967">narrowFixpointPass</a> (const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *cycle_head, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &pre_es)</td></tr>
|
|
210
|
+
<tr class="separator:a331ce1725ac1441f5624a2211021f967"><td class="memSeparator" colspan="2"> </td></tr>
|
|
211
|
+
</table><table class="memberdecls">
|
|
212
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
|
|
213
|
+
Private Attributes</h2></td></tr>
|
|
214
|
+
<tr class="memitem:a640e6714576772f9f1bac826ba93707d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1CFBasicBlockGraph.html">CFBasicBlockGraph</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a></td></tr>
|
|
215
|
+
<tr class="separator:a640e6714576772f9f1bac826ba93707d"><td class="memSeparator" colspan="2"> </td></tr>
|
|
216
|
+
<tr class="memitem:a53f3b9c51ed8648f14ecb703e9fe67ae"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a53f3b9c51ed8648f14ecb703e9fe67ae">_ander</a></td></tr>
|
|
217
|
+
<tr class="separator:a53f3b9c51ed8648f14ecb703e9fe67ae"><td class="memSeparator" colspan="2"> </td></tr>
|
|
218
|
+
<tr class="memitem:a209315b8ebebe7fae08ad978bc82f228"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">_preES</a></td></tr>
|
|
219
|
+
<tr class="separator:a209315b8ebebe7fae08ad978bc82f228"><td class="memSeparator" colspan="2"> </td></tr>
|
|
220
|
+
<tr class="memitem:a740648f04067e6587eab8f328d57ce2c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a></td></tr>
|
|
221
|
+
<tr class="separator:a740648f04067e6587eab8f328d57ce2c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
222
|
+
<tr class="memitem:a91a2739c4fec2cc29c560bcf8e5e420e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a>< const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *, <a class="el" href="classSVF_1_1CFBasicBlockGWTO.html">CFBasicBlockGWTO</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a91a2739c4fec2cc29c560bcf8e5e420e">_funcToWTO</a></td></tr>
|
|
223
|
+
<tr class="separator:a91a2739c4fec2cc29c560bcf8e5e420e"><td class="memSeparator" colspan="2"> </td></tr>
|
|
224
|
+
<tr class="memitem:ac7b2e6bdccab5a507c9e8db8ea4682d3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a>< const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ac7b2e6bdccab5a507c9e8db8ea4682d3">_recursiveFuns</a></td></tr>
|
|
225
|
+
<tr class="separator:ac7b2e6bdccab5a507c9e8db8ea4682d3"><td class="memSeparator" colspan="2"> </td></tr>
|
|
226
|
+
<tr class="memitem:a18903b2257e3a2aeec53d79bcf83e7d5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#a18903b2257e3a2aeec53d79bcf83e7d5">_moduleName</a></td></tr>
|
|
227
|
+
<tr class="separator:a18903b2257e3a2aeec53d79bcf83e7d5"><td class="memSeparator" colspan="2"> </td></tr>
|
|
228
|
+
</table><table class="memberdecls">
|
|
229
|
+
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
|
|
230
|
+
Friends</h2></td></tr>
|
|
231
|
+
<tr class="memitem:adc6fd1004f4277cb4d6c8bb0dacf3208"><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#adc6fd1004f4277cb4d6c8bb0dacf3208">AEStat</a></td></tr>
|
|
232
|
+
<tr class="separator:adc6fd1004f4277cb4d6c8bb0dacf3208"><td class="memSeparator" colspan="2"> </td></tr>
|
|
233
|
+
<tr class="memitem:ac0bcb586dffbfadeb33f501cafbaa1c9"><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1AbstractExecution.html#ac0bcb586dffbfadeb33f501cafbaa1c9">AEAPI</a></td></tr>
|
|
234
|
+
<tr class="separator:ac0bcb586dffbfadeb33f501cafbaa1c9"><td class="memSeparator" colspan="2"> </td></tr>
|
|
235
|
+
</table>
|
|
236
|
+
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
237
|
+
<div class="textblock">
|
|
238
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00106">106</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
239
|
+
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
240
|
+
<a id="a8ad0f3d5a0c9de60eff91fcc0dd44aae"></a>
|
|
241
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a8ad0f3d5a0c9de60eff91fcc0dd44aae">◆ </a></span>CallGraphSCC</h2>
|
|
242
|
+
|
|
243
|
+
<div class="memitem">
|
|
244
|
+
<div class="memproto">
|
|
245
|
+
<table class="memname">
|
|
246
|
+
<tr>
|
|
247
|
+
<td class="memname">typedef <a class="el" href="classSVF_1_1SCCDetection.html">SCCDetection</a><<a class="el" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a> *> <a class="el" href="classSVF_1_1AbstractExecution.html#a8ad0f3d5a0c9de60eff91fcc0dd44aae">SVF::AbstractExecution::CallGraphSCC</a></td>
|
|
248
|
+
</tr>
|
|
249
|
+
</table>
|
|
250
|
+
</div><div class="memdoc">
|
|
251
|
+
|
|
252
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00112">112</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
253
|
+
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
<h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
|
257
|
+
<a id="a84d8fedb7e9d23e92ffcb74b4cfbf78c"></a>
|
|
258
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a84d8fedb7e9d23e92ffcb74b4cfbf78c">◆ </a></span>AbstractExecution()</h2>
|
|
259
|
+
|
|
260
|
+
<div class="memitem">
|
|
261
|
+
<div class="memproto">
|
|
262
|
+
<table class="memname">
|
|
263
|
+
<tr>
|
|
264
|
+
<td class="memname">AbstractExecution::AbstractExecution </td>
|
|
265
|
+
<td>(</td>
|
|
266
|
+
<td class="paramname"></td><td>)</td>
|
|
267
|
+
<td></td>
|
|
268
|
+
</tr>
|
|
269
|
+
</table>
|
|
270
|
+
</div><div class="memdoc">
|
|
271
|
+
|
|
272
|
+
<p>Constructor. </p>
|
|
273
|
+
|
|
274
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00138">138</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
275
|
+
<div class="fragment"><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> {</div>
|
|
276
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AbstractExecution.html#adc6fd1004f4277cb4d6c8bb0dacf3208">AEStat</a>(<span class="keyword">this</span>);</div>
|
|
277
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div>
|
|
278
|
+
</div><!-- fragment -->
|
|
279
|
+
</div>
|
|
280
|
+
</div>
|
|
281
|
+
<a id="a6771ac262e5fdbac0006b293cde47398"></a>
|
|
282
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a6771ac262e5fdbac0006b293cde47398">◆ </a></span>~AbstractExecution()</h2>
|
|
283
|
+
|
|
284
|
+
<div class="memitem">
|
|
285
|
+
<div class="memproto">
|
|
286
|
+
<table class="mlabels">
|
|
287
|
+
<tr>
|
|
288
|
+
<td class="mlabels-left">
|
|
289
|
+
<table class="memname">
|
|
290
|
+
<tr>
|
|
291
|
+
<td class="memname">AbstractExecution::~AbstractExecution </td>
|
|
292
|
+
<td>(</td>
|
|
293
|
+
<td class="paramname"></td><td>)</td>
|
|
294
|
+
<td></td>
|
|
295
|
+
</tr>
|
|
296
|
+
</table>
|
|
297
|
+
</td>
|
|
298
|
+
<td class="mlabels-right">
|
|
299
|
+
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
|
|
300
|
+
</tr>
|
|
301
|
+
</table>
|
|
302
|
+
</div><div class="memdoc">
|
|
303
|
+
|
|
304
|
+
<p>Destructor. </p>
|
|
305
|
+
|
|
306
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00143">143</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
307
|
+
<div class="fragment"><div class="line"><a name="l00144"></a><span class="lineno"> 144</span> {</div>
|
|
308
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>;</div>
|
|
309
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">_api</a>;</div>
|
|
310
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keyword">delete</span> <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>;</div>
|
|
311
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it: <a class="code" href="classSVF_1_1AbstractExecution.html#a91a2739c4fec2cc29c560bcf8e5e420e">_funcToWTO</a>)</div>
|
|
312
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">delete</span> it.second;</div>
|
|
313
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
|
|
314
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div>
|
|
315
|
+
</div><!-- fragment -->
|
|
316
|
+
</div>
|
|
317
|
+
</div>
|
|
318
|
+
<h2 class="groupheader">Member Function Documentation</h2>
|
|
319
|
+
<a id="a46364bb8814f7bf6ddd492aa7dc58ffb"></a>
|
|
320
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a46364bb8814f7bf6ddd492aa7dc58ffb">◆ </a></span>analyse()</h2>
|
|
321
|
+
|
|
322
|
+
<div class="memitem">
|
|
323
|
+
<div class="memproto">
|
|
324
|
+
<table class="memname">
|
|
325
|
+
<tr>
|
|
326
|
+
<td class="memname">void AbstractExecution::analyse </td>
|
|
327
|
+
<td>(</td>
|
|
328
|
+
<td class="paramname"></td><td>)</td>
|
|
329
|
+
<td></td>
|
|
330
|
+
</tr>
|
|
331
|
+
</table>
|
|
332
|
+
</div><div class="memdoc">
|
|
333
|
+
|
|
334
|
+
<p>Program entry. </p>
|
|
335
|
+
|
|
336
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00167">167</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
337
|
+
<div class="fragment"><div class="line"><a name="l00168"></a><span class="lineno"> 168</span> {</div>
|
|
338
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="comment">// handle Global ICFGNode of SVFModule</span></div>
|
|
339
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a7efff2047b2b6017fdd210a8679817cd">handleGlobalNode</a>();</div>
|
|
340
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#afdb11f5fcbb6e7ed2689e3387bb78850">getSVFFunction</a>(<span class="stringliteral">"main"</span>))</div>
|
|
341
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div>
|
|
342
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#adb88a8be0bc1c1ac2d1546e9191c6f93">handleFunc</a>(fun);</div>
|
|
343
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  }</div>
|
|
344
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> }</div>
|
|
345
|
+
</div><!-- fragment -->
|
|
346
|
+
</div>
|
|
347
|
+
</div>
|
|
348
|
+
<a id="a9c23029833558b082c613fa5e0f14c0d"></a>
|
|
349
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a9c23029833558b082c613fa5e0f14c0d">◆ </a></span>classof()</h2>
|
|
350
|
+
|
|
351
|
+
<div class="memitem">
|
|
352
|
+
<div class="memproto">
|
|
353
|
+
<table class="mlabels">
|
|
354
|
+
<tr>
|
|
355
|
+
<td class="mlabels-left">
|
|
356
|
+
<table class="memname">
|
|
357
|
+
<tr>
|
|
358
|
+
<td class="memname">static bool SVF::AbstractExecution::classof </td>
|
|
359
|
+
<td>(</td>
|
|
360
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1AbstractExecution.html">AbstractExecution</a> * </td>
|
|
361
|
+
<td class="paramname"><em>ae</em></td><td>)</td>
|
|
362
|
+
<td></td>
|
|
363
|
+
</tr>
|
|
364
|
+
</table>
|
|
365
|
+
</td>
|
|
366
|
+
<td class="mlabels-right">
|
|
367
|
+
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
|
|
368
|
+
</tr>
|
|
369
|
+
</table>
|
|
370
|
+
</div><div class="memdoc">
|
|
371
|
+
|
|
372
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00127">127</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
373
|
+
<div class="fragment"><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div>
|
|
374
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> ae->getKind() == <a class="code" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1">AEKind::AbstractExecution</a>;</div>
|
|
375
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  }</div>
|
|
376
|
+
</div><!-- fragment -->
|
|
377
|
+
</div>
|
|
378
|
+
</div>
|
|
379
|
+
<a id="aff1c9582db75361b68aaaf0c4b8b6f0d"></a>
|
|
380
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aff1c9582db75361b68aaaf0c4b8b6f0d">◆ </a></span>directCallFunPass()</h2>
|
|
381
|
+
|
|
382
|
+
<div class="memitem">
|
|
383
|
+
<div class="memproto">
|
|
384
|
+
<table class="mlabels">
|
|
385
|
+
<tr>
|
|
386
|
+
<td class="mlabels-left">
|
|
387
|
+
<table class="memname">
|
|
388
|
+
<tr>
|
|
389
|
+
<td class="memname">void AbstractExecution::directCallFunPass </td>
|
|
390
|
+
<td>(</td>
|
|
391
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
392
|
+
<td class="paramname"><em>callNode</em></td><td>)</td>
|
|
393
|
+
<td></td>
|
|
394
|
+
</tr>
|
|
395
|
+
</table>
|
|
396
|
+
</td>
|
|
397
|
+
<td class="mlabels-right">
|
|
398
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
399
|
+
</tr>
|
|
400
|
+
</table>
|
|
401
|
+
</div><div class="memdoc">
|
|
402
|
+
|
|
403
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00693">693</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
404
|
+
<div class="fragment"><div class="line"><a name="l00694"></a><span class="lineno"> 694</span> {</div>
|
|
405
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(callNode-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
|
|
406
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> preES = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
|
|
407
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>.push_back(callNode);</div>
|
|
408
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  </div>
|
|
409
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keyword">auto</span>* curBlockNode = <a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a54200b5a7c41c2ba19660da34c295e81">getCFBasicBlockNode</a>(callNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
|
|
410
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[curBlockNode] = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
|
|
411
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  </div>
|
|
412
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#adb88a8be0bc1c1ac2d1546e9191c6f93">handleFunc</a>(callfun);</div>
|
|
413
|
+
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>.pop_back();</div>
|
|
414
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="comment">// handle Ret node</span></div>
|
|
415
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retNode = callNode-><a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>();</div>
|
|
416
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="comment">// resume ES to callnode</span></div>
|
|
417
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[<a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a54200b5a7c41c2ba19660da34c295e81">getCFBasicBlockNode</a>(retNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())] = <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[<a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a54200b5a7c41c2ba19660da34c295e81">getCFBasicBlockNode</a>(callNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())];</div>
|
|
418
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> }</div>
|
|
419
|
+
</div><!-- fragment -->
|
|
420
|
+
</div>
|
|
421
|
+
</div>
|
|
422
|
+
<a id="acf4a6c3fe5a2239512acb791b9aba854"></a>
|
|
423
|
+
<h2 class="memtitle"><span class="permalink"><a href="#acf4a6c3fe5a2239512acb791b9aba854">◆ </a></span>extCallPass()</h2>
|
|
424
|
+
|
|
425
|
+
<div class="memitem">
|
|
426
|
+
<div class="memproto">
|
|
427
|
+
<table class="mlabels">
|
|
428
|
+
<tr>
|
|
429
|
+
<td class="mlabels-left">
|
|
430
|
+
<table class="memname">
|
|
431
|
+
<tr>
|
|
432
|
+
<td class="memname">void AbstractExecution::extCallPass </td>
|
|
433
|
+
<td>(</td>
|
|
434
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
435
|
+
<td class="paramname"><em>callNode</em></td><td>)</td>
|
|
436
|
+
<td></td>
|
|
437
|
+
</tr>
|
|
438
|
+
</table>
|
|
439
|
+
</td>
|
|
440
|
+
<td class="mlabels-right">
|
|
441
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
442
|
+
</tr>
|
|
443
|
+
</table>
|
|
444
|
+
</div><div class="memdoc">
|
|
445
|
+
|
|
446
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00658">658</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
447
|
+
<div class="fragment"><div class="line"><a name="l00659"></a><span class="lineno"> 659</span> {</div>
|
|
448
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>.push_back(callNode);</div>
|
|
449
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">_api</a>-><a class="code" href="classSVF_1_1AEAPI.html#af64d742317f2ddad87b87012225ddaaa">handleExtAPI</a>(callNode);</div>
|
|
450
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>.pop_back();</div>
|
|
451
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> }</div>
|
|
452
|
+
</div><!-- fragment -->
|
|
453
|
+
</div>
|
|
454
|
+
</div>
|
|
455
|
+
<a id="a6c381287424a3623cfdae5a75d2a9c9b"></a>
|
|
456
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a6c381287424a3623cfdae5a75d2a9c9b">◆ </a></span>getKind()</h2>
|
|
457
|
+
|
|
458
|
+
<div class="memitem">
|
|
459
|
+
<div class="memproto">
|
|
460
|
+
<table class="mlabels">
|
|
461
|
+
<tr>
|
|
462
|
+
<td class="mlabels-left">
|
|
463
|
+
<table class="memname">
|
|
464
|
+
<tr>
|
|
465
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88">AEKind</a> SVF::AbstractExecution::getKind </td>
|
|
466
|
+
<td>(</td>
|
|
467
|
+
<td class="paramname"></td><td>)</td>
|
|
468
|
+
<td> const</td>
|
|
469
|
+
</tr>
|
|
470
|
+
</table>
|
|
471
|
+
</td>
|
|
472
|
+
<td class="mlabels-right">
|
|
473
|
+
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
|
|
474
|
+
</tr>
|
|
475
|
+
</table>
|
|
476
|
+
</div><div class="memdoc">
|
|
477
|
+
|
|
478
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00132">132</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
479
|
+
<div class="fragment"><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div>
|
|
480
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractExecution.html#ad36d48c0ef82de915d9339c4f47cbd70">_kind</a>;</div>
|
|
481
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div>
|
|
482
|
+
</div><!-- fragment -->
|
|
483
|
+
</div>
|
|
484
|
+
</div>
|
|
485
|
+
<a id="a4715ec6b1aefdfd600fda8324cde2a66"></a>
|
|
486
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a4715ec6b1aefdfd600fda8324cde2a66">◆ </a></span>handleBlock()</h2>
|
|
487
|
+
|
|
488
|
+
<div class="memitem">
|
|
489
|
+
<div class="memproto">
|
|
490
|
+
<table class="mlabels">
|
|
491
|
+
<tr>
|
|
492
|
+
<td class="mlabels-left">
|
|
493
|
+
<table class="memname">
|
|
494
|
+
<tr>
|
|
495
|
+
<td class="memname">void AbstractExecution::handleBlock </td>
|
|
496
|
+
<td>(</td>
|
|
497
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> * </td>
|
|
498
|
+
<td class="paramname"><em>block</em></td><td>)</td>
|
|
499
|
+
<td></td>
|
|
500
|
+
</tr>
|
|
501
|
+
</table>
|
|
502
|
+
</td>
|
|
503
|
+
<td class="mlabels-right">
|
|
504
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
505
|
+
</tr>
|
|
506
|
+
</table>
|
|
507
|
+
</div><div class="memdoc">
|
|
508
|
+
|
|
509
|
+
<p>handle instructions in svf basic blocks </p>
|
|
510
|
+
<p>handle instructions in svf basic blocks</p>
|
|
511
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
512
|
+
<table class="params">
|
|
513
|
+
<tr><td class="paramname">block</td><td>basic block that has a series of instructions </td></tr>
|
|
514
|
+
</table>
|
|
515
|
+
</dd>
|
|
516
|
+
</dl>
|
|
517
|
+
|
|
518
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00590">590</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
519
|
+
<div class="fragment"><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> {</div>
|
|
520
|
+
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1AEStat.html#a4a08e449307cdcb56e8e32ca346d5349">getBlockTrace</a>()++;</div>
|
|
521
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="comment">// Get execution states from in edges</span></div>
|
|
522
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractExecution.html#ac73335ecb1efc6c50775a205c618201f">hasInEdgesES</a>(block))</div>
|
|
523
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  {</div>
|
|
524
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="comment">// No ES on the in edges - Infeasible block</span></div>
|
|
525
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">return</span>;</div>
|
|
526
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  }</div>
|
|
527
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">else</span></div>
|
|
528
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  {</div>
|
|
529
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  <span class="comment">// Has ES on the in edges - Feasible block</span></div>
|
|
530
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="comment">// Get execution state from in edges</span></div>
|
|
531
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a2e9ecde8db07741daa112649c432cbfd">setEs</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">_preES</a>[block]);</div>
|
|
532
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div>
|
|
533
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  </div>
|
|
534
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  std::deque<const ICFGNode*> worklist;</div>
|
|
535
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = block-><a class="code" href="classSVF_1_1CFBasicBlockNode.html#a439a84d7181616f62d8ebac945dbbd59">begin</a>(); it != block-><a class="code" href="classSVF_1_1CFBasicBlockNode.html#a4eb0886ab2538dbe2a3dcf8ab7fc615e">end</a>(); ++it)</div>
|
|
536
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  {</div>
|
|
537
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  worklist.push_back(*it);</div>
|
|
538
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  }</div>
|
|
539
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">while</span>(!worklist.empty())</div>
|
|
540
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  {</div>
|
|
541
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* curICFGNode = worklist.front();</div>
|
|
542
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  worklist.pop_front();</div>
|
|
543
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a714fa1f4794008f630de415414cf8bfd">handleICFGNode</a>(curICFGNode);</div>
|
|
544
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  }</div>
|
|
545
|
+
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">_preES</a>.erase(block);</div>
|
|
546
|
+
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[block] = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
|
|
547
|
+
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> }</div>
|
|
548
|
+
</div><!-- fragment -->
|
|
549
|
+
</div>
|
|
550
|
+
</div>
|
|
551
|
+
<a id="a6cbc336372afb947c783fb14c45426df"></a>
|
|
552
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a6cbc336372afb947c783fb14c45426df">◆ </a></span>handleCallSite()</h2>
|
|
553
|
+
|
|
554
|
+
<div class="memitem">
|
|
555
|
+
<div class="memproto">
|
|
556
|
+
<table class="mlabels">
|
|
557
|
+
<tr>
|
|
558
|
+
<td class="mlabels-left">
|
|
559
|
+
<table class="memname">
|
|
560
|
+
<tr>
|
|
561
|
+
<td class="memname">void AbstractExecution::handleCallSite </td>
|
|
562
|
+
<td>(</td>
|
|
563
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> * </td>
|
|
564
|
+
<td class="paramname"><em>node</em></td><td>)</td>
|
|
565
|
+
<td></td>
|
|
566
|
+
</tr>
|
|
567
|
+
</table>
|
|
568
|
+
</td>
|
|
569
|
+
<td class="mlabels-right">
|
|
570
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
571
|
+
</tr>
|
|
572
|
+
</table>
|
|
573
|
+
</div><div class="memdoc">
|
|
574
|
+
<p>handle call node in svf basic blocks</p>
|
|
575
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
576
|
+
<table class="params">
|
|
577
|
+
<tr><td class="paramname">node</td><td><a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> which has a single <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> </td></tr>
|
|
578
|
+
</table>
|
|
579
|
+
</dd>
|
|
580
|
+
</dl>
|
|
581
|
+
|
|
582
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00621">621</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
583
|
+
<div class="fragment"><div class="line"><a name="l00622"></a><span class="lineno"> 622</span> {</div>
|
|
584
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callNode = SVFUtil::dyn_cast<CallICFGNode>(node))</div>
|
|
585
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  {</div>
|
|
586
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a319fe24ebb925f70fde574d5b17c3b98">isExtCall</a>(callNode))</div>
|
|
587
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  {</div>
|
|
588
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#acf4a6c3fe5a2239512acb791b9aba854">extCallPass</a>(callNode);</div>
|
|
589
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div>
|
|
590
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a6b92cdb6c5d3ae425955864536f2cba7">isRecursiveCall</a>(callNode))</div>
|
|
591
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  {</div>
|
|
592
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#aa220cdcd1653998d684ec14fe729932d">recursiveCallPass</a>(callNode);</div>
|
|
593
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  }</div>
|
|
594
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#aec702d92bbba9e847a9b3eada060a2c5">isDirectCall</a>(callNode))</div>
|
|
595
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  {</div>
|
|
596
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#aff1c9582db75361b68aaaf0c4b8b6f0d">directCallFunPass</a>(callNode);</div>
|
|
597
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  }</div>
|
|
598
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#ad1baaa8eaad68b215f63941776e79ccf">isIndirectCall</a>(callNode))</div>
|
|
599
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  {</div>
|
|
600
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#accf5896d39647e41e1408fa90935b650">indirectCallFunPass</a>(callNode);</div>
|
|
601
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  }</div>
|
|
602
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="keywordflow">else</span></div>
|
|
603
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  {</div>
|
|
604
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div>
|
|
605
|
+
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  }</div>
|
|
606
|
+
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  }</div>
|
|
607
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">else</span></div>
|
|
608
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  {</div>
|
|
609
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  assert (<span class="keyword">false</span> && <span class="stringliteral">"it is not call node"</span>);</div>
|
|
610
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  }</div>
|
|
611
|
+
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> }</div>
|
|
612
|
+
</div><!-- fragment -->
|
|
613
|
+
</div>
|
|
614
|
+
</div>
|
|
615
|
+
<a id="af4579490ced0a02537850d62891cf5bc"></a>
|
|
616
|
+
<h2 class="memtitle"><span class="permalink"><a href="#af4579490ced0a02537850d62891cf5bc">◆ </a></span>handleCycle()</h2>
|
|
617
|
+
|
|
618
|
+
<div class="memitem">
|
|
619
|
+
<div class="memproto">
|
|
620
|
+
<table class="mlabels">
|
|
621
|
+
<tr>
|
|
622
|
+
<td class="mlabels-left">
|
|
623
|
+
<table class="memname">
|
|
624
|
+
<tr>
|
|
625
|
+
<td class="memname">void AbstractExecution::handleCycle </td>
|
|
626
|
+
<td>(</td>
|
|
627
|
+
<td class="paramtype">const <a class="el" href="namespaceSVF.html#a5ddc46fb7b3bba87aad4c58c87487b5e">CFBasicBlockGWTOCycle</a> * </td>
|
|
628
|
+
<td class="paramname"><em>cycle</em></td><td>)</td>
|
|
629
|
+
<td></td>
|
|
630
|
+
</tr>
|
|
631
|
+
</table>
|
|
632
|
+
</td>
|
|
633
|
+
<td class="mlabels-right">
|
|
634
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
635
|
+
</tr>
|
|
636
|
+
</table>
|
|
637
|
+
</div><div class="memdoc">
|
|
638
|
+
|
|
639
|
+
<p>handle wto cycle (loop) </p>
|
|
640
|
+
<p>handle wto cycle (loop)</p>
|
|
641
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
642
|
+
<table class="params">
|
|
643
|
+
<tr><td class="paramname">cycle</td><td><a class="el" href="classSVF_1_1WTOCycle.html">WTOCycle</a> which has weak topo order of basic blocks and nested cycles </td></tr>
|
|
644
|
+
</table>
|
|
645
|
+
</dd>
|
|
646
|
+
</dl>
|
|
647
|
+
|
|
648
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00767">767</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
649
|
+
<div class="fragment"><div class="line"><a name="l00768"></a><span class="lineno"> 768</span> {</div>
|
|
650
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="comment">// Get execution states from in edges</span></div>
|
|
651
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractExecution.html#ac73335ecb1efc6c50775a205c618201f">hasInEdgesES</a>(cycle-><a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>()))</div>
|
|
652
|
+
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  {</div>
|
|
653
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  <span class="comment">// No ES on the in edges - Infeasible block</span></div>
|
|
654
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">return</span>;</div>
|
|
655
|
+
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  }</div>
|
|
656
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> pre_es = <a class="code" href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">_preES</a>[cycle-><a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>()];</div>
|
|
657
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  <span class="comment">// set -widen-delay</span></div>
|
|
658
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> widen_delay = <a class="code" href="classSVF_1_1Options.html#ab25f7ec430ba1d41597fc409b758b193">Options::WidenDelay</a>();</div>
|
|
659
|
+
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordtype">bool</span> incresing = <span class="keyword">true</span>;</div>
|
|
660
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; ; i++)</div>
|
|
661
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  {</div>
|
|
662
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>* cycle_head = cycle-><a class="code" href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">head</a>();</div>
|
|
663
|
+
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="comment">// handle cycle head</span></div>
|
|
664
|
+
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a4715ec6b1aefdfd600fda8324cde2a66">handleBlock</a>(cycle_head);</div>
|
|
665
|
+
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  <span class="keywordflow">if</span> (i < widen_delay)</div>
|
|
666
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  {</div>
|
|
667
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  <span class="keywordflow">if</span> (i> 0 && pre_es >= <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head])</div>
|
|
668
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  {</div>
|
|
669
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keywordflow">break</span>;</div>
|
|
670
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  }</div>
|
|
671
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  pre_es = <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head];</div>
|
|
672
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  }</div>
|
|
673
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="keywordflow">else</span></div>
|
|
674
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  {</div>
|
|
675
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">if</span> (i >= widen_delay)</div>
|
|
676
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  {</div>
|
|
677
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">if</span> (incresing)</div>
|
|
678
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  {</div>
|
|
679
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="keywordtype">bool</span> is_fixpoint = <a class="code" href="classSVF_1_1AbstractExecution.html#aa964763a5e9e99276707bd6678d1f37f">widenFixpointPass</a>(cycle_head, pre_es);</div>
|
|
680
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keywordflow">if</span> (is_fixpoint)</div>
|
|
681
|
+
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  incresing = <span class="keyword">false</span>;</div>
|
|
682
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  }</div>
|
|
683
|
+
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="keywordflow">if</span> (!incresing)</div>
|
|
684
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  {</div>
|
|
685
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keywordtype">bool</span> is_fixpoint = <a class="code" href="classSVF_1_1AbstractExecution.html#a331ce1725ac1441f5624a2211021f967">narrowFixpointPass</a>(cycle_head, pre_es);</div>
|
|
686
|
+
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="keywordflow">if</span> (is_fixpoint)</div>
|
|
687
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="keywordflow">break</span>;</div>
|
|
688
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  }</div>
|
|
689
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  }</div>
|
|
690
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  }</div>
|
|
691
|
+
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = cycle-><a class="code" href="classSVF_1_1WTOCycle.html#a807c883d1cfe98c791c903125742f95b">begin</a>(); it != cycle-><a class="code" href="classSVF_1_1WTOCycle.html#a03fd55dd34c48d22cefcaf6dc93f734a">end</a>(); ++it)</div>
|
|
692
|
+
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  {</div>
|
|
693
|
+
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOComponent.html">CFBasicBlockGWTOComp</a>* cur = *it;</div>
|
|
694
|
+
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTONode.html">CFBasicBlockGWTONode</a>* vertex = SVFUtil::dyn_cast<CFBasicBlockGWTONode>(cur))</div>
|
|
695
|
+
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  {</div>
|
|
696
|
+
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a4715ec6b1aefdfd600fda8324cde2a66">handleBlock</a>(vertex->node());</div>
|
|
697
|
+
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  }</div>
|
|
698
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOCycle.html">CFBasicBlockGWTOCycle</a>* cycle = SVFUtil::dyn_cast<CFBasicBlockGWTOCycle>(cur))</div>
|
|
699
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  {</div>
|
|
700
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#af4579490ced0a02537850d62891cf5bc">handleCycle</a>(cycle);</div>
|
|
701
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  }</div>
|
|
702
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="keywordflow">else</span></div>
|
|
703
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  {</div>
|
|
704
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"unknown WTO type!"</span>);</div>
|
|
705
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  }</div>
|
|
706
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  }</div>
|
|
707
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  }</div>
|
|
708
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span> }</div>
|
|
709
|
+
</div><!-- fragment -->
|
|
710
|
+
</div>
|
|
711
|
+
</div>
|
|
712
|
+
<a id="adb88a8be0bc1c1ac2d1546e9191c6f93"></a>
|
|
713
|
+
<h2 class="memtitle"><span class="permalink"><a href="#adb88a8be0bc1c1ac2d1546e9191c6f93">◆ </a></span>handleFunc()</h2>
|
|
714
|
+
|
|
715
|
+
<div class="memitem">
|
|
716
|
+
<div class="memproto">
|
|
717
|
+
<table class="mlabels">
|
|
718
|
+
<tr>
|
|
719
|
+
<td class="mlabels-left">
|
|
720
|
+
<table class="memname">
|
|
721
|
+
<tr>
|
|
722
|
+
<td class="memname">void AbstractExecution::handleFunc </td>
|
|
723
|
+
<td>(</td>
|
|
724
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * </td>
|
|
725
|
+
<td class="paramname"><em>func</em></td><td>)</td>
|
|
726
|
+
<td></td>
|
|
727
|
+
</tr>
|
|
728
|
+
</table>
|
|
729
|
+
</td>
|
|
730
|
+
<td class="mlabels-right">
|
|
731
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
732
|
+
</tr>
|
|
733
|
+
</table>
|
|
734
|
+
</div><div class="memdoc">
|
|
735
|
+
|
|
736
|
+
<p>handle user defined function, ext function is not included. </p>
|
|
737
|
+
<p>handle user defined function, ext function is not included.</p>
|
|
738
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
739
|
+
<table class="params">
|
|
740
|
+
<tr><td class="paramname">func</td><td><a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> which has a series of basic blocks </td></tr>
|
|
741
|
+
</table>
|
|
742
|
+
</dd>
|
|
743
|
+
</dl>
|
|
744
|
+
|
|
745
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00875">875</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
746
|
+
<div class="fragment"><div class="line"><a name="l00876"></a><span class="lineno"> 876</span> {</div>
|
|
747
|
+
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1AEStat.html#a8c69d36465485cddc17eddfdeea551e0">getFunctionTrace</a>()++;</div>
|
|
748
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <a class="code" href="classSVF_1_1CFBasicBlockGWTO.html">CFBasicBlockGWTO</a>* wto = <a class="code" href="classSVF_1_1AbstractExecution.html#a91a2739c4fec2cc29c560bcf8e5e420e">_funcToWTO</a>[func];</div>
|
|
749
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="comment">// set function entry ES</span></div>
|
|
750
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = wto-><a class="code" href="classSVF_1_1WTO.html#a13e9082913aa4a14065687ccdd47642d">begin</a>(); it!= wto-><a class="code" href="classSVF_1_1WTO.html#a22b67a51964cb1d7882aab7e74b026f2">end</a>(); ++it)</div>
|
|
751
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  {</div>
|
|
752
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOComponent.html">CFBasicBlockGWTOComp</a>* cur = *it;</div>
|
|
753
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTONode.html">CFBasicBlockGWTONode</a>* vertex = SVFUtil::dyn_cast<CFBasicBlockGWTONode>(cur))</div>
|
|
754
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  {</div>
|
|
755
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a4715ec6b1aefdfd600fda8324cde2a66">handleBlock</a>(vertex->node());</div>
|
|
756
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  }</div>
|
|
757
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1WTOCycle.html">CFBasicBlockGWTOCycle</a>* cycle = SVFUtil::dyn_cast<CFBasicBlockGWTOCycle>(cur))</div>
|
|
758
|
+
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  {</div>
|
|
759
|
+
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#af4579490ced0a02537850d62891cf5bc">handleCycle</a>(cycle);</div>
|
|
760
|
+
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  }</div>
|
|
761
|
+
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordflow">else</span></div>
|
|
762
|
+
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  {</div>
|
|
763
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"unknown WTO type!"</span>);</div>
|
|
764
|
+
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  }</div>
|
|
765
|
+
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  }</div>
|
|
766
|
+
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span> }</div>
|
|
767
|
+
</div><!-- fragment -->
|
|
768
|
+
</div>
|
|
769
|
+
</div>
|
|
770
|
+
<a id="a7efff2047b2b6017fdd210a8679817cd"></a>
|
|
771
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a7efff2047b2b6017fdd210a8679817cd">◆ </a></span>handleGlobalNode()</h2>
|
|
772
|
+
|
|
773
|
+
<div class="memitem">
|
|
774
|
+
<div class="memproto">
|
|
775
|
+
<table class="mlabels">
|
|
776
|
+
<tr>
|
|
777
|
+
<td class="mlabels-left">
|
|
778
|
+
<table class="memname">
|
|
779
|
+
<tr>
|
|
780
|
+
<td class="memname">void AbstractExecution::handleGlobalNode </td>
|
|
781
|
+
<td>(</td>
|
|
782
|
+
<td class="paramname"></td><td>)</td>
|
|
783
|
+
<td></td>
|
|
784
|
+
</tr>
|
|
785
|
+
</table>
|
|
786
|
+
</td>
|
|
787
|
+
<td class="mlabels-right">
|
|
788
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
789
|
+
</tr>
|
|
790
|
+
</table>
|
|
791
|
+
</div><div class="memdoc">
|
|
792
|
+
|
|
793
|
+
<p>Global <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> is handled at the entry of the program,. </p>
|
|
794
|
+
<p>handle global node </p>
|
|
795
|
+
|
|
796
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00178">178</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
797
|
+
<div class="fragment"><div class="line"><a name="l00179"></a><span class="lineno"> 179</span> {</div>
|
|
798
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> es;</div>
|
|
799
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">_icfg</a>-><a class="code" href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">getGlobalICFGNode</a>();</div>
|
|
800
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a2e9ecde8db07741daa112649c432cbfd">setEs</a>(es);</div>
|
|
801
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <span class="comment">// Global Node, we just need to handle addr, load, store, copy and gep</span></div>
|
|
802
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-><a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
|
|
803
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div>
|
|
804
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast<AddrStmt>(stmt))</div>
|
|
805
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  {</div>
|
|
806
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9">translateAddr</a>(addr);</div>
|
|
807
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  }</div>
|
|
808
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast<LoadStmt>(stmt))</div>
|
|
809
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  {</div>
|
|
810
|
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68">translateLoad</a>(load);</div>
|
|
811
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div>
|
|
812
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store = SVFUtil::dyn_cast<StoreStmt>(stmt))</div>
|
|
813
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div>
|
|
814
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">translateStore</a>(store);</div>
|
|
815
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  }</div>
|
|
816
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast<CopyStmt>(stmt))</div>
|
|
817
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div>
|
|
818
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999">translateCopy</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
|
|
819
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div>
|
|
820
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast<GepStmt>(stmt))</div>
|
|
821
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div>
|
|
822
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">translateGep</a>(gep);</div>
|
|
823
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  }</div>
|
|
824
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="keywordflow">else</span></div>
|
|
825
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div>
|
|
826
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  }</div>
|
|
827
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// for stmts in global node, exe state will move to global state to lower memory usage</span></div>
|
|
828
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af80d7665d9815a80ffdba92c3ba029d1">moveToGlobal</a>();</div>
|
|
829
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div>
|
|
830
|
+
</div><!-- fragment -->
|
|
831
|
+
</div>
|
|
832
|
+
</div>
|
|
833
|
+
<a id="a714fa1f4794008f630de415414cf8bfd"></a>
|
|
834
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a714fa1f4794008f630de415414cf8bfd">◆ </a></span>handleICFGNode()</h2>
|
|
835
|
+
|
|
836
|
+
<div class="memitem">
|
|
837
|
+
<div class="memproto">
|
|
838
|
+
<table class="mlabels">
|
|
839
|
+
<tr>
|
|
840
|
+
<td class="mlabels-left">
|
|
841
|
+
<table class="memname">
|
|
842
|
+
<tr>
|
|
843
|
+
<td class="memname">void AbstractExecution::handleICFGNode </td>
|
|
844
|
+
<td>(</td>
|
|
845
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> * </td>
|
|
846
|
+
<td class="paramname"><em>node</em></td><td>)</td>
|
|
847
|
+
<td></td>
|
|
848
|
+
</tr>
|
|
849
|
+
</table>
|
|
850
|
+
</td>
|
|
851
|
+
<td class="mlabels-right">
|
|
852
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
853
|
+
</tr>
|
|
854
|
+
</table>
|
|
855
|
+
</div><div class="memdoc">
|
|
856
|
+
<p>handle one instruction in svf basic blocks</p>
|
|
857
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
858
|
+
<table class="params">
|
|
859
|
+
<tr><td class="paramname">node</td><td><a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> which has a single instruction </td></tr>
|
|
860
|
+
</table>
|
|
861
|
+
</dd>
|
|
862
|
+
</dl>
|
|
863
|
+
|
|
864
|
+
<p>Reimplemented in <a class="el" href="classSVF_1_1BufOverflowChecker.html#a13b4beca209f7d306cf0a6065987a489">SVF::BufOverflowChecker</a>.</p>
|
|
865
|
+
|
|
866
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00746">746</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
867
|
+
<div class="fragment"><div class="line"><a name="l00747"></a><span class="lineno"> 747</span> {</div>
|
|
868
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1AEStat.html#afaa47798ebfde513c709b46cac05294c">getICFGNodeTrace</a>()++;</div>
|
|
869
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="comment">// handle SVF Stmt</span></div>
|
|
870
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: curICFGNode->getSVFStmts())</div>
|
|
871
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  {</div>
|
|
872
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a1d725fe50a7084bfa18bd47b941af885">handleSVFStatement</a>(stmt);</div>
|
|
873
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  }</div>
|
|
874
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="comment">// inlining the callee by calling handleFunc for the callee function</span></div>
|
|
875
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* callnode = SVFUtil::dyn_cast<CallICFGNode>(curICFGNode))</div>
|
|
876
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  {</div>
|
|
877
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a6cbc336372afb947c783fb14c45426df">handleCallSite</a>(callnode);</div>
|
|
878
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div>
|
|
879
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  <span class="keywordflow">else</span></div>
|
|
880
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  {</div>
|
|
881
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  </div>
|
|
882
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  }</div>
|
|
883
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1AEStat.html#ae2cfe939670689a4ec5030c096a5f546">countStateSize</a>();</div>
|
|
884
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> }</div>
|
|
885
|
+
</div><!-- fragment -->
|
|
886
|
+
</div>
|
|
887
|
+
</div>
|
|
888
|
+
<a id="a1d725fe50a7084bfa18bd47b941af885"></a>
|
|
889
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a1d725fe50a7084bfa18bd47b941af885">◆ </a></span>handleSVFStatement()</h2>
|
|
890
|
+
|
|
891
|
+
<div class="memitem">
|
|
892
|
+
<div class="memproto">
|
|
893
|
+
<table class="mlabels">
|
|
894
|
+
<tr>
|
|
895
|
+
<td class="mlabels-left">
|
|
896
|
+
<table class="memname">
|
|
897
|
+
<tr>
|
|
898
|
+
<td class="memname">void AbstractExecution::handleSVFStatement </td>
|
|
899
|
+
<td>(</td>
|
|
900
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1SVFStmt.html">SVFStmt</a> * </td>
|
|
901
|
+
<td class="paramname"><em>stmt</em></td><td>)</td>
|
|
902
|
+
<td></td>
|
|
903
|
+
</tr>
|
|
904
|
+
</table>
|
|
905
|
+
</td>
|
|
906
|
+
<td class="mlabels-right">
|
|
907
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
908
|
+
</tr>
|
|
909
|
+
</table>
|
|
910
|
+
</div><div class="memdoc">
|
|
911
|
+
<p>handle <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> Statement like <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a>, CallStmt, <a class="el" href="classSVF_1_1GepStmt.html">GepStmt</a>, <a class="el" href="classSVF_1_1LoadStmt.html">LoadStmt</a>, <a class="el" href="classSVF_1_1StoreStmt.html">StoreStmt</a>, etc.</p>
|
|
912
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
913
|
+
<table class="params">
|
|
914
|
+
<tr><td class="paramname">stmt</td><td>SVFStatement which is a value flow of instruction </td></tr>
|
|
915
|
+
</table>
|
|
916
|
+
</dd>
|
|
917
|
+
</dl>
|
|
918
|
+
|
|
919
|
+
<p>Reimplemented in <a class="el" href="classSVF_1_1BufOverflowChecker.html#a0b79c3694a08100d2d8d1b8109998131">SVF::BufOverflowChecker</a>.</p>
|
|
920
|
+
|
|
921
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00899">899</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
922
|
+
<div class="fragment"><div class="line"><a name="l00900"></a><span class="lineno"> 900</span> {</div>
|
|
923
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a> *addr = SVFUtil::dyn_cast<AddrStmt>(stmt))</div>
|
|
924
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  {</div>
|
|
925
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9">translateAddr</a>(addr);</div>
|
|
926
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  }</div>
|
|
927
|
+
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1BinaryOPStmt.html">BinaryOPStmt</a> *binary = SVFUtil::dyn_cast<BinaryOPStmt>(stmt))</div>
|
|
928
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  {</div>
|
|
929
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13">translateBinary</a>(binary);</div>
|
|
930
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  }</div>
|
|
931
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmp = SVFUtil::dyn_cast<CmpStmt>(stmt))</div>
|
|
932
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  {</div>
|
|
933
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24">translateCmp</a>(cmp);</div>
|
|
934
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  }</div>
|
|
935
|
+
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<UnaryOPStmt>(stmt))</div>
|
|
936
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  {</div>
|
|
937
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  }</div>
|
|
938
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<BranchStmt>(stmt))</div>
|
|
939
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  {</div>
|
|
940
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="comment">// branch stmt is handled in hasBranchES</span></div>
|
|
941
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  }</div>
|
|
942
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load = SVFUtil::dyn_cast<LoadStmt>(stmt))</div>
|
|
943
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  {</div>
|
|
944
|
+
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68">translateLoad</a>(load);</div>
|
|
945
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  }</div>
|
|
946
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store = SVFUtil::dyn_cast<StoreStmt>(stmt))</div>
|
|
947
|
+
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  {</div>
|
|
948
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">translateStore</a>(store);</div>
|
|
949
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  }</div>
|
|
950
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast<CopyStmt>(stmt))</div>
|
|
951
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  {</div>
|
|
952
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999">translateCopy</a>(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div>
|
|
953
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  }</div>
|
|
954
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a> *gep = SVFUtil::dyn_cast<GepStmt>(stmt))</div>
|
|
955
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  {</div>
|
|
956
|
+
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">translateGep</a>(gep);</div>
|
|
957
|
+
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  }</div>
|
|
958
|
+
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a> *select = SVFUtil::dyn_cast<SelectStmt>(stmt))</div>
|
|
959
|
+
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  {</div>
|
|
960
|
+
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8">translateSelect</a>(select);</div>
|
|
961
|
+
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  }</div>
|
|
962
|
+
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a> *phi = SVFUtil::dyn_cast<PhiStmt>(stmt))</div>
|
|
963
|
+
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  {</div>
|
|
964
|
+
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e">translatePhi</a>(phi);</div>
|
|
965
|
+
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  }</div>
|
|
966
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a> *callPE = SVFUtil::dyn_cast<CallPE>(stmt))</div>
|
|
967
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  {</div>
|
|
968
|
+
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="comment">// To handle Call Edge</span></div>
|
|
969
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad">translateCall</a>(callPE);</div>
|
|
970
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  }</div>
|
|
971
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast<RetPE>(stmt))</div>
|
|
972
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  {</div>
|
|
973
|
+
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc">translateRet</a>(retPE);</div>
|
|
974
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div>
|
|
975
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <span class="keywordflow">else</span></div>
|
|
976
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div>
|
|
977
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> }</div>
|
|
978
|
+
</div><!-- fragment -->
|
|
979
|
+
</div>
|
|
980
|
+
</div>
|
|
981
|
+
<a id="a28df4f2bd5b337468f254cd609adb25f"></a>
|
|
982
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a28df4f2bd5b337468f254cd609adb25f">◆ </a></span>hasBranchES()</h2>
|
|
983
|
+
|
|
984
|
+
<div class="memitem">
|
|
985
|
+
<div class="memproto">
|
|
986
|
+
<table class="mlabels">
|
|
987
|
+
<tr>
|
|
988
|
+
<td class="mlabels-left">
|
|
989
|
+
<table class="memname">
|
|
990
|
+
<tr>
|
|
991
|
+
<td class="memname">bool AbstractExecution::hasBranchES </td>
|
|
992
|
+
<td>(</td>
|
|
993
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a> * </td>
|
|
994
|
+
<td class="paramname"><em>intraEdge</em>, </td>
|
|
995
|
+
</tr>
|
|
996
|
+
<tr>
|
|
997
|
+
<td class="paramkey"></td>
|
|
998
|
+
<td></td>
|
|
999
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> & </td>
|
|
1000
|
+
<td class="paramname"><em>es</em> </td>
|
|
1001
|
+
</tr>
|
|
1002
|
+
<tr>
|
|
1003
|
+
<td></td>
|
|
1004
|
+
<td>)</td>
|
|
1005
|
+
<td></td><td></td>
|
|
1006
|
+
</tr>
|
|
1007
|
+
</table>
|
|
1008
|
+
</td>
|
|
1009
|
+
<td class="mlabels-right">
|
|
1010
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
1011
|
+
</tr>
|
|
1012
|
+
</table>
|
|
1013
|
+
</div><div class="memdoc">
|
|
1014
|
+
<p>Check if execution state exist at the branch edge</p>
|
|
1015
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
1016
|
+
<table class="params">
|
|
1017
|
+
<tr><td class="paramname">intraEdge</td><td>the edge from <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> to the next Block </td></tr>
|
|
1018
|
+
</table>
|
|
1019
|
+
</dd>
|
|
1020
|
+
</dl>
|
|
1021
|
+
<dl class="section return"><dt>Returns</dt><dd>if this edge is feasible </dd></dl>
|
|
1022
|
+
|
|
1023
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00564">564</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1024
|
+
<div class="fragment"><div class="line"><a name="l00565"></a><span class="lineno"> 565</span> {</div>
|
|
1025
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a> *cond = intraEdge-><a class="code" href="classSVF_1_1IntraCFGEdge.html#a2657751b285cb6db8084da38b00dcab9">getCondition</a>();</div>
|
|
1026
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> cmpID = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">getValueNode</a>(cond);</div>
|
|
1027
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *cmpVar = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(cmpID);</div>
|
|
1028
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">if</span> (cmpVar-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty())</div>
|
|
1029
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  {</div>
|
|
1030
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractExecution.html#adc740771e712644d08f95fc6c488c1af">hasSwitchBranchES</a>(cmpVar, intraEdge-><a class="code" href="classSVF_1_1IntraCFGEdge.html#a106513578790247f9d96e34c8385b3d8">getSuccessorCondValue</a>(), es);</div>
|
|
1031
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  }</div>
|
|
1032
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">else</span></div>
|
|
1033
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  {</div>
|
|
1034
|
+
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  assert(!cmpVar-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &&</div>
|
|
1035
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="stringliteral">"no in edges?"</span>);</div>
|
|
1036
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *cmpVarInStmt = *cmpVar-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin();</div>
|
|
1037
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CmpStmt.html">CmpStmt</a> *cmpStmt = SVFUtil::dyn_cast<CmpStmt>(cmpVarInStmt))</div>
|
|
1038
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  {</div>
|
|
1039
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractExecution.html#ac7a25ad5cbc1a6132869ae54b805f73a">hasCmpBranchES</a>(cmpStmt, intraEdge-><a class="code" href="classSVF_1_1IntraCFGEdge.html#a106513578790247f9d96e34c8385b3d8">getSuccessorCondValue</a>(), es);</div>
|
|
1040
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  }</div>
|
|
1041
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">else</span></div>
|
|
1042
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  {</div>
|
|
1043
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractExecution.html#adc740771e712644d08f95fc6c488c1af">hasSwitchBranchES</a>(cmpVar, intraEdge-><a class="code" href="classSVF_1_1IntraCFGEdge.html#a106513578790247f9d96e34c8385b3d8">getSuccessorCondValue</a>(), es);</div>
|
|
1044
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  }</div>
|
|
1045
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  }</div>
|
|
1046
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1047
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> }</div>
|
|
1048
|
+
</div><!-- fragment -->
|
|
1049
|
+
</div>
|
|
1050
|
+
</div>
|
|
1051
|
+
<a id="ac7a25ad5cbc1a6132869ae54b805f73a"></a>
|
|
1052
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ac7a25ad5cbc1a6132869ae54b805f73a">◆ </a></span>hasCmpBranchES()</h2>
|
|
1053
|
+
|
|
1054
|
+
<div class="memitem">
|
|
1055
|
+
<div class="memproto">
|
|
1056
|
+
<table class="mlabels">
|
|
1057
|
+
<tr>
|
|
1058
|
+
<td class="mlabels-left">
|
|
1059
|
+
<table class="memname">
|
|
1060
|
+
<tr>
|
|
1061
|
+
<td class="memname">bool AbstractExecution::hasCmpBranchES </td>
|
|
1062
|
+
<td>(</td>
|
|
1063
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> * </td>
|
|
1064
|
+
<td class="paramname"><em>cmpStmt</em>, </td>
|
|
1065
|
+
</tr>
|
|
1066
|
+
<tr>
|
|
1067
|
+
<td class="paramkey"></td>
|
|
1068
|
+
<td></td>
|
|
1069
|
+
<td class="paramtype"><a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> </td>
|
|
1070
|
+
<td class="paramname"><em>succ</em>, </td>
|
|
1071
|
+
</tr>
|
|
1072
|
+
<tr>
|
|
1073
|
+
<td class="paramkey"></td>
|
|
1074
|
+
<td></td>
|
|
1075
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> & </td>
|
|
1076
|
+
<td class="paramname"><em>es</em> </td>
|
|
1077
|
+
</tr>
|
|
1078
|
+
<tr>
|
|
1079
|
+
<td></td>
|
|
1080
|
+
<td>)</td>
|
|
1081
|
+
<td></td><td></td>
|
|
1082
|
+
</tr>
|
|
1083
|
+
</table>
|
|
1084
|
+
</td>
|
|
1085
|
+
<td class="mlabels-right">
|
|
1086
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
1087
|
+
</tr>
|
|
1088
|
+
</table>
|
|
1089
|
+
</div><div class="memdoc">
|
|
1090
|
+
<p>Check if this cmpStmt and succ are satisfiable to the execution state.</p>
|
|
1091
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
1092
|
+
<table class="params">
|
|
1093
|
+
<tr><td class="paramname">cmpStmt</td><td><a class="el" href="classSVF_1_1CmpStmt.html">CmpStmt</a> is a conditional branch statement </td></tr>
|
|
1094
|
+
<tr><td class="paramname">succ</td><td>the value of cmpStmt (True or False) </td></tr>
|
|
1095
|
+
</table>
|
|
1096
|
+
</dd>
|
|
1097
|
+
</dl>
|
|
1098
|
+
<dl class="section return"><dt>Returns</dt><dd>if this block has preceding execution state </dd></dl>
|
|
1099
|
+
|
|
1100
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00290">290</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1101
|
+
<div class="fragment"><div class="line"><a name="l00291"></a><span class="lineno"> 291</span> {</div>
|
|
1102
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> new_es = es;</div>
|
|
1103
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="comment">// get cmp stmt's op0, op1, and predicate</span></div>
|
|
1104
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op0 = cmpStmt-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(0);</div>
|
|
1105
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> op1 = cmpStmt-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">getOpVarID</a>(1);</div>
|
|
1106
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> res_id = cmpStmt-><a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</a>();</div>
|
|
1107
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> predicate = cmpStmt-><a class="code" href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">getPredicate</a>();</div>
|
|
1108
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  </div>
|
|
1109
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="comment">// if op0 or op1 is undefined, return;</span></div>
|
|
1110
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">// skip address compare</span></div>
|
|
1111
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordflow">if</span> (new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#ad485a35730353c0e945bc84a034d9e45">inVarToAddrsTable</a>(op0) || new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#ad485a35730353c0e945bc84a034d9e45">inVarToAddrsTable</a>(op1))</div>
|
|
1112
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  {</div>
|
|
1113
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  es = new_es;</div>
|
|
1114
|
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1115
|
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  }</div>
|
|
1116
|
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load_op0 = <span class="keyword">nullptr</span>;</div>
|
|
1117
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *load_op1 = <span class="keyword">nullptr</span>;</div>
|
|
1118
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">// get '%1 = load i32 s', and load inst may not exist</span></div>
|
|
1119
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* loadVar0 = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op0);</div>
|
|
1120
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">if</span> (!loadVar0-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty())</div>
|
|
1121
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  {</div>
|
|
1122
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *loadVar0InStmt = *loadVar0-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin();</div>
|
|
1123
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *loadStmt = SVFUtil::dyn_cast<LoadStmt>(loadVar0InStmt))</div>
|
|
1124
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  {</div>
|
|
1125
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  load_op0 = loadStmt;</div>
|
|
1126
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  }</div>
|
|
1127
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *copyStmt = SVFUtil::dyn_cast<CopyStmt>(loadVar0InStmt))</div>
|
|
1128
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  {</div>
|
|
1129
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  loadVar0 = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(copyStmt->getRHSVarID());</div>
|
|
1130
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keywordflow">if</span> (!loadVar0-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty())</div>
|
|
1131
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  {</div>
|
|
1132
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *loadVar0InStmt2 = *loadVar0-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin();</div>
|
|
1133
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *loadStmt = SVFUtil::dyn_cast<LoadStmt>(loadVar0InStmt2))</div>
|
|
1134
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  {</div>
|
|
1135
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  load_op0 = loadStmt;</div>
|
|
1136
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  }</div>
|
|
1137
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  }</div>
|
|
1138
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div>
|
|
1139
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div>
|
|
1140
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  </div>
|
|
1141
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a>* loadVar1 = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(op1);</div>
|
|
1142
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keywordflow">if</span> (!loadVar1-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty())</div>
|
|
1143
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  {</div>
|
|
1144
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *loadVar1InStmt = *loadVar1-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin();</div>
|
|
1145
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *loadStmt = SVFUtil::dyn_cast<LoadStmt>(loadVar1InStmt))</div>
|
|
1146
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  {</div>
|
|
1147
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  load_op1 = loadStmt;</div>
|
|
1148
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div>
|
|
1149
|
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a> *copyStmt = SVFUtil::dyn_cast<CopyStmt>(loadVar1InStmt))</div>
|
|
1150
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  {</div>
|
|
1151
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  loadVar1 = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(copyStmt->getRHSVarID());</div>
|
|
1152
|
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="keywordflow">if</span> (!loadVar1-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty())</div>
|
|
1153
|
+
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  {</div>
|
|
1154
|
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *loadVar1InStmt2 = *loadVar1-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().begin();</div>
|
|
1155
|
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a> *loadStmt = SVFUtil::dyn_cast<LoadStmt>(loadVar1InStmt2))</div>
|
|
1156
|
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  {</div>
|
|
1157
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  load_op1 = loadStmt;</div>
|
|
1158
|
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  }</div>
|
|
1159
|
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  }</div>
|
|
1160
|
+
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div>
|
|
1161
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div>
|
|
1162
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="comment">// for const X const, we may get concrete resVal instantly</span></div>
|
|
1163
|
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="comment">// for var X const, we may get [0,1] if the intersection of var and const is not empty set</span></div>
|
|
1164
|
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> resVal = new_es[res_id];</div>
|
|
1165
|
+
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  resVal.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>((int64_t) succ, succ));</div>
|
|
1166
|
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="comment">// If Var X const generates bottom value, it means this branch path is not feasible.</span></div>
|
|
1167
|
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">if</span> (resVal.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
|
|
1168
|
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  {</div>
|
|
1169
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1170
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div>
|
|
1171
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  </div>
|
|
1172
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordtype">bool</span> b0 = new_es[op0].is_numeral();</div>
|
|
1173
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordtype">bool</span> b1 = new_es[op1].is_numeral();</div>
|
|
1174
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  </div>
|
|
1175
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="comment">// if const X var, we should reverse op0 and op1.</span></div>
|
|
1176
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">if</span> (b0 && !b1)</div>
|
|
1177
|
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  {</div>
|
|
1178
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a052d677fb5ee940ed0686f3d67d10d19">cpyItvToLocal</a>(op1);</div>
|
|
1179
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  }</div>
|
|
1180
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!b0 && b1)</div>
|
|
1181
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div>
|
|
1182
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a052d677fb5ee940ed0686f3d67d10d19">cpyItvToLocal</a>(op0);</div>
|
|
1183
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  }</div>
|
|
1184
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  </div>
|
|
1185
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// if const X var, we should reverse op0 and op1.</span></div>
|
|
1186
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="keywordflow">if</span> (b0 && !b1)</div>
|
|
1187
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  {</div>
|
|
1188
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  std::swap(op0, op1);</div>
|
|
1189
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  std::swap(load_op0, load_op1);</div>
|
|
1190
|
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  predicate = <a class="code" href="AbstractExecution_8cpp.html#a3b70282b79998dcb9f6df78370bc1fe9">_switch_lhsrhs_predicate</a>[predicate];</div>
|
|
1191
|
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  }</div>
|
|
1192
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keywordflow">else</span></div>
|
|
1193
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  {</div>
|
|
1194
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  <span class="comment">// if var X var, we cannot preset the branch condition to infer the intervals of var0,var1</span></div>
|
|
1195
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span> (!b0 && !b1)</div>
|
|
1196
|
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  {</div>
|
|
1197
|
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  es = new_es;</div>
|
|
1198
|
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1199
|
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  }</div>
|
|
1200
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// if const X const, we can instantly get the resVal</span></div>
|
|
1201
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (b0 && b1)</div>
|
|
1202
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  {</div>
|
|
1203
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  es = new_es;</div>
|
|
1204
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1205
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  }</div>
|
|
1206
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  }</div>
|
|
1207
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="comment">// if cmp is 'var X const == false', we should reverse predicate 'var X' const == true'</span></div>
|
|
1208
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="comment">// X' is reverse predicate of X</span></div>
|
|
1209
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">if</span> (succ == 0)</div>
|
|
1210
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  {</div>
|
|
1211
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  predicate = <a class="code" href="AbstractExecution_8cpp.html#a6baa35cec0782ac3179849752a732e5c">_reverse_predicate</a>[predicate];</div>
|
|
1212
|
+
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  }</div>
|
|
1213
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="keywordflow">else</span> {}</div>
|
|
1214
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="comment">// change interval range according to the compare predicate</span></div>
|
|
1215
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> addrs;</div>
|
|
1216
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">if</span>(load_op0 && new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#ad485a35730353c0e945bc84a034d9e45">inVarToAddrsTable</a>(load_op0-><a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>()))</div>
|
|
1217
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  addrs = new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(load_op0-><a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>());</div>
|
|
1218
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  </div>
|
|
1219
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a> &lhs = new_es[op0], &rhs = new_es[op1];</div>
|
|
1220
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keywordflow">switch</span> (predicate)</div>
|
|
1221
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  {</div>
|
|
1222
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_EQ:</div>
|
|
1223
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_OEQ:</div>
|
|
1224
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_UEQ:</div>
|
|
1225
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  {</div>
|
|
1226
|
+
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="comment">// Var == Const, so [var.lb, var.ub].meet_with(const)</span></div>
|
|
1227
|
+
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  lhs.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(rhs);</div>
|
|
1228
|
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="comment">// if lhs is register value, we should also change its mem obj</span></div>
|
|
1229
|
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &addr: addrs)</div>
|
|
1230
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  {</div>
|
|
1231
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objId = new_es.<a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">getInternalID</a>(addr);</div>
|
|
1232
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordflow">if</span> (new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
|
|
1233
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  {</div>
|
|
1234
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr).<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(rhs);</div>
|
|
1235
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  }</div>
|
|
1236
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  }</div>
|
|
1237
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="keywordflow">break</span>;</div>
|
|
1238
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  }</div>
|
|
1239
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_NE:</div>
|
|
1240
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_ONE:</div>
|
|
1241
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_UNE:</div>
|
|
1242
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="comment">// Compliment set</span></div>
|
|
1243
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="keywordflow">break</span>;</div>
|
|
1244
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_UGT:</div>
|
|
1245
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_SGT:</div>
|
|
1246
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_OGT:</div>
|
|
1247
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_UGT:</div>
|
|
1248
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="comment">// Var > Const, so [var.lb, var.ub].meet_with([Const+1, +INF])</span></div>
|
|
1249
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  lhs.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(rhs.lb() + 1, <a class="code" href="classSVF_1_1IntervalValue.html#a739ab04e16ec1156be71b29d49998a4f">IntervalValue::plus_infinity</a>()));</div>
|
|
1250
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="comment">// if lhs is register value, we should also change its mem obj</span></div>
|
|
1251
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &addr: addrs)</div>
|
|
1252
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  {</div>
|
|
1253
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objId = new_es.<a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">getInternalID</a>(addr);</div>
|
|
1254
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="keywordflow">if</span> (new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
|
|
1255
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  {</div>
|
|
1256
|
+
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr).<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(</div>
|
|
1257
|
+
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(rhs.lb() + 1, <a class="code" href="classSVF_1_1IntervalValue.html#a739ab04e16ec1156be71b29d49998a4f">IntervalValue::plus_infinity</a>()));</div>
|
|
1258
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  }</div>
|
|
1259
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  }</div>
|
|
1260
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="keywordflow">break</span>;</div>
|
|
1261
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_UGE:</div>
|
|
1262
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_SGE:</div>
|
|
1263
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_OGE:</div>
|
|
1264
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_UGE:</div>
|
|
1265
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  {</div>
|
|
1266
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="comment">// Var >= Const, so [var.lb, var.ub].meet_with([Const, +INF])</span></div>
|
|
1267
|
+
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  lhs.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(rhs.lb(), <a class="code" href="classSVF_1_1IntervalValue.html#a739ab04e16ec1156be71b29d49998a4f">IntervalValue::plus_infinity</a>()));</div>
|
|
1268
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// if lhs is register value, we should also change its mem obj</span></div>
|
|
1269
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &addr: addrs)</div>
|
|
1270
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  {</div>
|
|
1271
|
+
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objId = new_es.<a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">getInternalID</a>(addr);</div>
|
|
1272
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">if</span> (new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
|
|
1273
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  {</div>
|
|
1274
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr).<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(</div>
|
|
1275
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(rhs.lb(), <a class="code" href="classSVF_1_1IntervalValue.html#a739ab04e16ec1156be71b29d49998a4f">IntervalValue::plus_infinity</a>()));</div>
|
|
1276
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  }</div>
|
|
1277
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  }</div>
|
|
1278
|
+
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">break</span>;</div>
|
|
1279
|
+
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  }</div>
|
|
1280
|
+
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_ULT:</div>
|
|
1281
|
+
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_SLT:</div>
|
|
1282
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_OLT:</div>
|
|
1283
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_ULT:</div>
|
|
1284
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  {</div>
|
|
1285
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="comment">// Var < Const, so [var.lb, var.ub].meet_with([-INF, const.ub-1])</span></div>
|
|
1286
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  lhs.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(<a class="code" href="classSVF_1_1IntervalValue.html#a43f48c744f7bda0dc689b8f186449371">IntervalValue::minus_infinity</a>(), rhs.ub() - 1));</div>
|
|
1287
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="comment">// if lhs is register value, we should also change its mem obj</span></div>
|
|
1288
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &addr: addrs)</div>
|
|
1289
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  {</div>
|
|
1290
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objId = new_es.<a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">getInternalID</a>(addr);</div>
|
|
1291
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span> (new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
|
|
1292
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  {</div>
|
|
1293
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr).<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(</div>
|
|
1294
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(<a class="code" href="classSVF_1_1IntervalValue.html#a43f48c744f7bda0dc689b8f186449371">IntervalValue::minus_infinity</a>(), rhs.ub() - 1));</div>
|
|
1295
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  }</div>
|
|
1296
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  }</div>
|
|
1297
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="keywordflow">break</span>;</div>
|
|
1298
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  }</div>
|
|
1299
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_ULE:</div>
|
|
1300
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::ICMP_SLE:</div>
|
|
1301
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_OLE:</div>
|
|
1302
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_ULE:</div>
|
|
1303
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  {</div>
|
|
1304
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="comment">// Var <= Const, so [var.lb, var.ub].meet_with([-INF, const.ub])</span></div>
|
|
1305
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  lhs.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(<a class="code" href="classSVF_1_1IntervalValue.html#a43f48c744f7bda0dc689b8f186449371">IntervalValue::minus_infinity</a>(), rhs.ub()));</div>
|
|
1306
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="comment">// if lhs is register value, we should also change its mem obj</span></div>
|
|
1307
|
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &addr: addrs)</div>
|
|
1308
|
+
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  {</div>
|
|
1309
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objId = new_es.<a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">getInternalID</a>(addr);</div>
|
|
1310
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span> (new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
|
|
1311
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  {</div>
|
|
1312
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr).<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(</div>
|
|
1313
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(<a class="code" href="classSVF_1_1IntervalValue.html#a43f48c744f7bda0dc689b8f186449371">IntervalValue::minus_infinity</a>(), rhs.ub()));</div>
|
|
1314
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div>
|
|
1315
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  }</div>
|
|
1316
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">break</span>;</div>
|
|
1317
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  }</div>
|
|
1318
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_FALSE:</div>
|
|
1319
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="keywordflow">break</span>;</div>
|
|
1320
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="keywordflow">case</span> CmpStmt::Predicate::FCMP_TRUE:</div>
|
|
1321
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">break</span>;</div>
|
|
1322
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keywordflow">default</span>:</div>
|
|
1323
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div>
|
|
1324
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  abort();</div>
|
|
1325
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  }</div>
|
|
1326
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  es = new_es;</div>
|
|
1327
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1328
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> }</div>
|
|
1329
|
+
</div><!-- fragment -->
|
|
1330
|
+
</div>
|
|
1331
|
+
</div>
|
|
1332
|
+
<a id="ac73335ecb1efc6c50775a205c618201f"></a>
|
|
1333
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ac73335ecb1efc6c50775a205c618201f">◆ </a></span>hasInEdgesES()</h2>
|
|
1334
|
+
|
|
1335
|
+
<div class="memitem">
|
|
1336
|
+
<div class="memproto">
|
|
1337
|
+
<table class="mlabels">
|
|
1338
|
+
<tr>
|
|
1339
|
+
<td class="mlabels-left">
|
|
1340
|
+
<table class="memname">
|
|
1341
|
+
<tr>
|
|
1342
|
+
<td class="memname">bool AbstractExecution::hasInEdgesES </td>
|
|
1343
|
+
<td>(</td>
|
|
1344
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> * </td>
|
|
1345
|
+
<td class="paramname"><em>block</em></td><td>)</td>
|
|
1346
|
+
<td></td>
|
|
1347
|
+
</tr>
|
|
1348
|
+
</table>
|
|
1349
|
+
</td>
|
|
1350
|
+
<td class="mlabels-right">
|
|
1351
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
1352
|
+
</tr>
|
|
1353
|
+
</table>
|
|
1354
|
+
</div><div class="memdoc">
|
|
1355
|
+
<p>Check if execution state exist by merging states of predecessor blocks</p>
|
|
1356
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
1357
|
+
<table class="params">
|
|
1358
|
+
<tr><td class="paramname">block</td><td>The basic block to analyse </td></tr>
|
|
1359
|
+
</table>
|
|
1360
|
+
</dd>
|
|
1361
|
+
</dl>
|
|
1362
|
+
<dl class="section return"><dt>Returns</dt><dd>if this block has preceding execution state</dd></dl>
|
|
1363
|
+
<p>get execution state by merging states of predecessor blocks Scenario 1: preblock --—(intraEdge)-—> block, join the preES of inEdges Scenario 2: preblock --—(callEdge)-—> block </p>
|
|
1364
|
+
|
|
1365
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00216">216</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1366
|
+
<div class="fragment"><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> {</div>
|
|
1367
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#ac8af7bb8a5442ffd885249cecc5c0f02">isGlobalEntry</a>(block))</div>
|
|
1368
|
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  {</div>
|
|
1369
|
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">_preES</a>[block] = <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a>();</div>
|
|
1370
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1371
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div>
|
|
1372
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// is common basic block</span></div>
|
|
1373
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">else</span></div>
|
|
1374
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  {</div>
|
|
1375
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> es;</div>
|
|
1376
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> inEdgeNum = 0;</div>
|
|
1377
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& edge: block-><a class="code" href="classSVF_1_1CFBasicBlockNode.html#a6bfafe540f83e097370ca0dc66422214">getInEdges</a>())</div>
|
|
1378
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  {</div>
|
|
1379
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>.find(edge->getSrcNode()) != <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>.end())</div>
|
|
1380
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  {</div>
|
|
1381
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraCFGEdge.html">IntraCFGEdge</a> *intraCfgEdge = SVFUtil::dyn_cast<IntraCFGEdge>(edge->getICFGEdge());</div>
|
|
1382
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span> (intraCfgEdge && intraCfgEdge-><a class="code" href="classSVF_1_1IntraCFGEdge.html#a2657751b285cb6db8084da38b00dcab9">getCondition</a>())</div>
|
|
1383
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  {</div>
|
|
1384
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> tmpEs = <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[edge->getSrcNode()];</div>
|
|
1385
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a28df4f2bd5b337468f254cd609adb25f">hasBranchES</a>(intraCfgEdge, tmpEs))</div>
|
|
1386
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div>
|
|
1387
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  es.<a class="code" href="classSVF_1_1IntervalExeState.html#a46ef74cd1412790b088f1d7320f57a9f">joinWith</a>(tmpEs);</div>
|
|
1388
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  inEdgeNum++;</div>
|
|
1389
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  }</div>
|
|
1390
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">else</span></div>
|
|
1391
|
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  {</div>
|
|
1392
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="comment">// do nothing</span></div>
|
|
1393
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  }</div>
|
|
1394
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div>
|
|
1395
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">else</span></div>
|
|
1396
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  {</div>
|
|
1397
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  es.<a class="code" href="classSVF_1_1IntervalExeState.html#a46ef74cd1412790b088f1d7320f57a9f">joinWith</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[edge->getSrcNode()]);</div>
|
|
1398
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  inEdgeNum++;</div>
|
|
1399
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div>
|
|
1400
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div>
|
|
1401
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">else</span></div>
|
|
1402
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  {</div>
|
|
1403
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  </div>
|
|
1404
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  }</div>
|
|
1405
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  }</div>
|
|
1406
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span> (inEdgeNum == 0)</div>
|
|
1407
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div>
|
|
1408
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1409
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div>
|
|
1410
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">else</span></div>
|
|
1411
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div>
|
|
1412
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">_preES</a>[block] = es;</div>
|
|
1413
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1414
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  }</div>
|
|
1415
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div>
|
|
1416
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"implement this part"</span>);</div>
|
|
1417
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> }</div>
|
|
1418
|
+
</div><!-- fragment -->
|
|
1419
|
+
</div>
|
|
1420
|
+
</div>
|
|
1421
|
+
<a id="adc740771e712644d08f95fc6c488c1af"></a>
|
|
1422
|
+
<h2 class="memtitle"><span class="permalink"><a href="#adc740771e712644d08f95fc6c488c1af">◆ </a></span>hasSwitchBranchES()</h2>
|
|
1423
|
+
|
|
1424
|
+
<div class="memitem">
|
|
1425
|
+
<div class="memproto">
|
|
1426
|
+
<table class="mlabels">
|
|
1427
|
+
<tr>
|
|
1428
|
+
<td class="mlabels-left">
|
|
1429
|
+
<table class="memname">
|
|
1430
|
+
<tr>
|
|
1431
|
+
<td class="memname">bool AbstractExecution::hasSwitchBranchES </td>
|
|
1432
|
+
<td>(</td>
|
|
1433
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1SVFVar.html">SVFVar</a> * </td>
|
|
1434
|
+
<td class="paramname"><em>var</em>, </td>
|
|
1435
|
+
</tr>
|
|
1436
|
+
<tr>
|
|
1437
|
+
<td class="paramkey"></td>
|
|
1438
|
+
<td></td>
|
|
1439
|
+
<td class="paramtype"><a class="el" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> </td>
|
|
1440
|
+
<td class="paramname"><em>succ</em>, </td>
|
|
1441
|
+
</tr>
|
|
1442
|
+
<tr>
|
|
1443
|
+
<td class="paramkey"></td>
|
|
1444
|
+
<td></td>
|
|
1445
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> & </td>
|
|
1446
|
+
<td class="paramname"><em>es</em> </td>
|
|
1447
|
+
</tr>
|
|
1448
|
+
<tr>
|
|
1449
|
+
<td></td>
|
|
1450
|
+
<td>)</td>
|
|
1451
|
+
<td></td><td></td>
|
|
1452
|
+
</tr>
|
|
1453
|
+
</table>
|
|
1454
|
+
</td>
|
|
1455
|
+
<td class="mlabels-right">
|
|
1456
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
1457
|
+
</tr>
|
|
1458
|
+
</table>
|
|
1459
|
+
</div><div class="memdoc">
|
|
1460
|
+
<p>Check if this SwitchInst and succ are satisfiable to the execution state.</p>
|
|
1461
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
1462
|
+
<table class="params">
|
|
1463
|
+
<tr><td class="paramname">var</td><td>var in switch inst </td></tr>
|
|
1464
|
+
<tr><td class="paramname">succ</td><td>the case value of switch inst </td></tr>
|
|
1465
|
+
</table>
|
|
1466
|
+
</dd>
|
|
1467
|
+
</dl>
|
|
1468
|
+
<dl class="section return"><dt>Returns</dt><dd>if this block has preceding execution state </dd></dl>
|
|
1469
|
+
|
|
1470
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00520">520</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1471
|
+
<div class="fragment"><div class="line"><a name="l00521"></a><span class="lineno"> 521</span> {</div>
|
|
1472
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> new_es = es;</div>
|
|
1473
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a052d677fb5ee940ed0686f3d67d10d19">cpyItvToLocal</a>(var-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
|
|
1474
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>& switch_cond = new_es[var-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()];</div>
|
|
1475
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <a class="code" href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">s64_t</a> value = succ;</div>
|
|
1476
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const SVFStmt*></a> workList;</div>
|
|
1477
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *cmpVarInStmt: var-><a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>())</div>
|
|
1478
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  {</div>
|
|
1479
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  workList.<a class="code" href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">push</a>(cmpVarInStmt);</div>
|
|
1480
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  }</div>
|
|
1481
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  switch_cond.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(value, value));</div>
|
|
1482
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">if</span> (switch_cond.<a class="code" href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">isBottom</a>())</div>
|
|
1483
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div>
|
|
1484
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1485
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  }</div>
|
|
1486
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="keywordflow">while</span>(!workList.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div>
|
|
1487
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  {</div>
|
|
1488
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a>* stmt = workList.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div>
|
|
1489
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">if</span> (SVFUtil::isa<CopyStmt>(stmt))</div>
|
|
1490
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  {</div>
|
|
1491
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>& copy_cond = new_es[var-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()];</div>
|
|
1492
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  copy_cond.<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(<a class="code" href="classSVF_1_1IntervalValue.html">IntervalValue</a>(value, value));</div>
|
|
1493
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  }</div>
|
|
1494
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* load = SVFUtil::dyn_cast<LoadStmt>(stmt))</div>
|
|
1495
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  {</div>
|
|
1496
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  <span class="keywordflow">if</span> (new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#ad485a35730353c0e945bc84a034d9e45">inVarToAddrsTable</a>(load->getRHSVarID()))</div>
|
|
1497
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  {</div>
|
|
1498
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> &addrs = new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(load->getRHSVarID()); <span class="comment">//3108</span></div>
|
|
1499
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &addr: addrs)</div>
|
|
1500
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  {</div>
|
|
1501
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> objId = new_es.<a class="code" href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">getInternalID</a>(addr);</div>
|
|
1502
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">if</span> (new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">inLocToValTable</a>(objId))</div>
|
|
1503
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  {</div>
|
|
1504
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  new_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">load</a>(addr).<a class="code" href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">meet_with</a>(switch_cond);</div>
|
|
1505
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  }</div>
|
|
1506
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  }</div>
|
|
1507
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  }</div>
|
|
1508
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  }</div>
|
|
1509
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div>
|
|
1510
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  es = new_es;</div>
|
|
1511
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1512
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> }</div>
|
|
1513
|
+
</div><!-- fragment -->
|
|
1514
|
+
</div>
|
|
1515
|
+
</div>
|
|
1516
|
+
<a id="accf5896d39647e41e1408fa90935b650"></a>
|
|
1517
|
+
<h2 class="memtitle"><span class="permalink"><a href="#accf5896d39647e41e1408fa90935b650">◆ </a></span>indirectCallFunPass()</h2>
|
|
1518
|
+
|
|
1519
|
+
<div class="memitem">
|
|
1520
|
+
<div class="memproto">
|
|
1521
|
+
<table class="mlabels">
|
|
1522
|
+
<tr>
|
|
1523
|
+
<td class="mlabels-left">
|
|
1524
|
+
<table class="memname">
|
|
1525
|
+
<tr>
|
|
1526
|
+
<td class="memname">void AbstractExecution::indirectCallFunPass </td>
|
|
1527
|
+
<td>(</td>
|
|
1528
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
1529
|
+
<td class="paramname"><em>callNode</em></td><td>)</td>
|
|
1530
|
+
<td></td>
|
|
1531
|
+
</tr>
|
|
1532
|
+
</table>
|
|
1533
|
+
</td>
|
|
1534
|
+
<td class="mlabels-right">
|
|
1535
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1536
|
+
</tr>
|
|
1537
|
+
</table>
|
|
1538
|
+
</div><div class="memdoc">
|
|
1539
|
+
|
|
1540
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00716">716</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1541
|
+
<div class="fragment"><div class="line"><a name="l00717"></a><span class="lineno"> 717</span> {</div>
|
|
1542
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <span class="keyword">const</span> <span class="keyword">auto</span> callsiteMaps = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>();</div>
|
|
1543
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> call_id = callsiteMaps.at(callNode);</div>
|
|
1544
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>().<a class="code" href="classSVF_1_1IntervalExeState.html#ad485a35730353c0e945bc84a034d9e45">inVarToAddrsTable</a>(call_id))</div>
|
|
1545
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  {</div>
|
|
1546
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  <span class="keywordflow">return</span>;</div>
|
|
1547
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div>
|
|
1548
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <a class="code" href="classSVF_1_1AddressValue.html">ExeState::Addrs</a> Addrs = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">getAddrs</a>(call_id);</div>
|
|
1549
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>  <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> addr = *Addrs.<a class="code" href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">begin</a>();</div>
|
|
1550
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *func_var = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">getInternalID</a>(addr));</div>
|
|
1551
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = SVFUtil::dyn_cast<SVFFunction>(func_var-><a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>());</div>
|
|
1552
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">if</span> (callfun)</div>
|
|
1553
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  {</div>
|
|
1554
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> preES = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
|
|
1555
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>.push_back(callNode);</div>
|
|
1556
|
+
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keyword">auto</span> *curBlockNode = <a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a54200b5a7c41c2ba19660da34c295e81">getCFBasicBlockNode</a>(callNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
|
|
1557
|
+
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  </div>
|
|
1558
|
+
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[curBlockNode] = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
|
|
1559
|
+
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  </div>
|
|
1560
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#adb88a8be0bc1c1ac2d1546e9191c6f93">handleFunc</a>(callfun);</div>
|
|
1561
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">_callSiteStack</a>.pop_back();</div>
|
|
1562
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="comment">// handle Ret node</span></div>
|
|
1563
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retNode = callNode-><a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>();</div>
|
|
1564
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[<a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a54200b5a7c41c2ba19660da34c295e81">getCFBasicBlockNode</a>(retNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())] = <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[<a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a54200b5a7c41c2ba19660da34c295e81">getCFBasicBlockNode</a>(callNode-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())];</div>
|
|
1565
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  }</div>
|
|
1566
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> }</div>
|
|
1567
|
+
</div><!-- fragment -->
|
|
1568
|
+
</div>
|
|
1569
|
+
</div>
|
|
1570
|
+
<a id="a4bf7be47ddc0ba53ec4a5e87f300763f"></a>
|
|
1571
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a4bf7be47ddc0ba53ec4a5e87f300763f">◆ </a></span>initExtAPI()</h2>
|
|
1572
|
+
|
|
1573
|
+
<div class="memitem">
|
|
1574
|
+
<div class="memproto">
|
|
1575
|
+
<table class="mlabels">
|
|
1576
|
+
<tr>
|
|
1577
|
+
<td class="mlabels-left">
|
|
1578
|
+
<table class="memname">
|
|
1579
|
+
<tr>
|
|
1580
|
+
<td class="memname">void AbstractExecution::initExtAPI </td>
|
|
1581
|
+
<td>(</td>
|
|
1582
|
+
<td class="paramname"></td><td>)</td>
|
|
1583
|
+
<td></td>
|
|
1584
|
+
</tr>
|
|
1585
|
+
</table>
|
|
1586
|
+
</td>
|
|
1587
|
+
<td class="mlabels-right">
|
|
1588
|
+
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
|
|
1589
|
+
</tr>
|
|
1590
|
+
</table>
|
|
1591
|
+
</div><div class="memdoc">
|
|
1592
|
+
|
|
1593
|
+
<p>Reimplemented in <a class="el" href="classSVF_1_1BufOverflowChecker.html#a4787d2e56aa374763656b7942f0ed52f">SVF::BufOverflowChecker</a>.</p>
|
|
1594
|
+
|
|
1595
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00087">87</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1596
|
+
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> {</div>
|
|
1597
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">_api</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AbstractExecution.html#ac0bcb586dffbfadeb33f501cafbaa1c9">AEAPI</a>(<span class="keyword">this</span>, <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>);</div>
|
|
1598
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> }</div>
|
|
1599
|
+
</div><!-- fragment -->
|
|
1600
|
+
</div>
|
|
1601
|
+
</div>
|
|
1602
|
+
<a id="aec702d92bbba9e847a9b3eada060a2c5"></a>
|
|
1603
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aec702d92bbba9e847a9b3eada060a2c5">◆ </a></span>isDirectCall()</h2>
|
|
1604
|
+
|
|
1605
|
+
<div class="memitem">
|
|
1606
|
+
<div class="memproto">
|
|
1607
|
+
<table class="mlabels">
|
|
1608
|
+
<tr>
|
|
1609
|
+
<td class="mlabels-left">
|
|
1610
|
+
<table class="memname">
|
|
1611
|
+
<tr>
|
|
1612
|
+
<td class="memname">bool AbstractExecution::isDirectCall </td>
|
|
1613
|
+
<td>(</td>
|
|
1614
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
1615
|
+
<td class="paramname"><em>callNode</em></td><td>)</td>
|
|
1616
|
+
<td></td>
|
|
1617
|
+
</tr>
|
|
1618
|
+
</table>
|
|
1619
|
+
</td>
|
|
1620
|
+
<td class="mlabels-right">
|
|
1621
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1622
|
+
</tr>
|
|
1623
|
+
</table>
|
|
1624
|
+
</div><div class="memdoc">
|
|
1625
|
+
|
|
1626
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00688">688</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1627
|
+
<div class="fragment"><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> {</div>
|
|
1628
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(callNode-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
|
|
1629
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractExecution.html#a91a2739c4fec2cc29c560bcf8e5e420e">_funcToWTO</a>.find(callfun) != <a class="code" href="classSVF_1_1AbstractExecution.html#a91a2739c4fec2cc29c560bcf8e5e420e">_funcToWTO</a>.end();</div>
|
|
1630
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> }</div>
|
|
1631
|
+
</div><!-- fragment -->
|
|
1632
|
+
</div>
|
|
1633
|
+
</div>
|
|
1634
|
+
<a id="a319fe24ebb925f70fde574d5b17c3b98"></a>
|
|
1635
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a319fe24ebb925f70fde574d5b17c3b98">◆ </a></span>isExtCall()</h2>
|
|
1636
|
+
|
|
1637
|
+
<div class="memitem">
|
|
1638
|
+
<div class="memproto">
|
|
1639
|
+
<table class="mlabels">
|
|
1640
|
+
<tr>
|
|
1641
|
+
<td class="mlabels-left">
|
|
1642
|
+
<table class="memname">
|
|
1643
|
+
<tr>
|
|
1644
|
+
<td class="memname">bool AbstractExecution::isExtCall </td>
|
|
1645
|
+
<td>(</td>
|
|
1646
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
1647
|
+
<td class="paramname"><em>callNode</em></td><td>)</td>
|
|
1648
|
+
<td></td>
|
|
1649
|
+
</tr>
|
|
1650
|
+
</table>
|
|
1651
|
+
</td>
|
|
1652
|
+
<td class="mlabels-right">
|
|
1653
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1654
|
+
</tr>
|
|
1655
|
+
</table>
|
|
1656
|
+
</div><div class="memdoc">
|
|
1657
|
+
|
|
1658
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00652">652</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1659
|
+
<div class="fragment"><div class="line"><a name="l00653"></a><span class="lineno"> 653</span> {</div>
|
|
1660
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(callNode-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
|
|
1661
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(callfun);</div>
|
|
1662
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> }</div>
|
|
1663
|
+
</div><!-- fragment -->
|
|
1664
|
+
</div>
|
|
1665
|
+
</div>
|
|
1666
|
+
<a id="ab807fd4f914cd35a07fe19bb0d7f9860"></a>
|
|
1667
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ab807fd4f914cd35a07fe19bb0d7f9860">◆ </a></span>isFunEntry()</h2>
|
|
1668
|
+
|
|
1669
|
+
<div class="memitem">
|
|
1670
|
+
<div class="memproto">
|
|
1671
|
+
<table class="mlabels">
|
|
1672
|
+
<tr>
|
|
1673
|
+
<td class="mlabels-left">
|
|
1674
|
+
<table class="memname">
|
|
1675
|
+
<tr>
|
|
1676
|
+
<td class="memname">bool AbstractExecution::isFunEntry </td>
|
|
1677
|
+
<td>(</td>
|
|
1678
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> * </td>
|
|
1679
|
+
<td class="paramname"><em>block</em></td><td>)</td>
|
|
1680
|
+
<td></td>
|
|
1681
|
+
</tr>
|
|
1682
|
+
</table>
|
|
1683
|
+
</td>
|
|
1684
|
+
<td class="mlabels-right">
|
|
1685
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1686
|
+
</tr>
|
|
1687
|
+
</table>
|
|
1688
|
+
</div><div class="memdoc">
|
|
1689
|
+
|
|
1690
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00270">270</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1691
|
+
<div class="fragment"><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> {</div>
|
|
1692
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span> (SVFUtil::isa<FunEntryICFGNode>(*block-><a class="code" href="classSVF_1_1CFBasicBlockNode.html#afdad57a83c392a8b14b838ecb58f9ff7">getICFGNodes</a>().begin()))</div>
|
|
1693
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div>
|
|
1694
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">_preES</a>.find(block) != <a class="code" href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">_preES</a>.end())</div>
|
|
1695
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  {</div>
|
|
1696
|
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1697
|
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  }</div>
|
|
1698
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div>
|
|
1699
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1700
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div>
|
|
1701
|
+
</div><!-- fragment -->
|
|
1702
|
+
</div>
|
|
1703
|
+
</div>
|
|
1704
|
+
<a id="ac8af7bb8a5442ffd885249cecc5c0f02"></a>
|
|
1705
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ac8af7bb8a5442ffd885249cecc5c0f02">◆ </a></span>isGlobalEntry()</h2>
|
|
1706
|
+
|
|
1707
|
+
<div class="memitem">
|
|
1708
|
+
<div class="memproto">
|
|
1709
|
+
<table class="mlabels">
|
|
1710
|
+
<tr>
|
|
1711
|
+
<td class="mlabels-left">
|
|
1712
|
+
<table class="memname">
|
|
1713
|
+
<tr>
|
|
1714
|
+
<td class="memname">bool AbstractExecution::isGlobalEntry </td>
|
|
1715
|
+
<td>(</td>
|
|
1716
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> * </td>
|
|
1717
|
+
<td class="paramname"><em>block</em></td><td>)</td>
|
|
1718
|
+
<td></td>
|
|
1719
|
+
</tr>
|
|
1720
|
+
</table>
|
|
1721
|
+
</td>
|
|
1722
|
+
<td class="mlabels-right">
|
|
1723
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1724
|
+
</tr>
|
|
1725
|
+
</table>
|
|
1726
|
+
</div><div class="memdoc">
|
|
1727
|
+
|
|
1728
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00282">282</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1729
|
+
<div class="fragment"><div class="line"><a name="l00283"></a><span class="lineno"> 283</span> {</div>
|
|
1730
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordflow">if</span> (!block-><a class="code" href="classSVF_1_1CFBasicBlockNode.html#ac468c52cc443f1137f6d5fb510a8ac46">hasIncomingEdge</a>())</div>
|
|
1731
|
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1732
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">else</span></div>
|
|
1733
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1734
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> }</div>
|
|
1735
|
+
</div><!-- fragment -->
|
|
1736
|
+
</div>
|
|
1737
|
+
</div>
|
|
1738
|
+
<a id="ad1baaa8eaad68b215f63941776e79ccf"></a>
|
|
1739
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ad1baaa8eaad68b215f63941776e79ccf">◆ </a></span>isIndirectCall()</h2>
|
|
1740
|
+
|
|
1741
|
+
<div class="memitem">
|
|
1742
|
+
<div class="memproto">
|
|
1743
|
+
<table class="mlabels">
|
|
1744
|
+
<tr>
|
|
1745
|
+
<td class="mlabels-left">
|
|
1746
|
+
<table class="memname">
|
|
1747
|
+
<tr>
|
|
1748
|
+
<td class="memname">bool AbstractExecution::isIndirectCall </td>
|
|
1749
|
+
<td>(</td>
|
|
1750
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
1751
|
+
<td class="paramname"><em>callNode</em></td><td>)</td>
|
|
1752
|
+
<td></td>
|
|
1753
|
+
</tr>
|
|
1754
|
+
</table>
|
|
1755
|
+
</td>
|
|
1756
|
+
<td class="mlabels-right">
|
|
1757
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1758
|
+
</tr>
|
|
1759
|
+
</table>
|
|
1760
|
+
</div><div class="memdoc">
|
|
1761
|
+
|
|
1762
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00710">710</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1763
|
+
<div class="fragment"><div class="line"><a name="l00711"></a><span class="lineno"> 711</span> {</div>
|
|
1764
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keyword">const</span> <span class="keyword">auto</span> callsiteMaps = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">getIndirectCallsites</a>();</div>
|
|
1765
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> callsiteMaps.find(callNode) != callsiteMaps.end();</div>
|
|
1766
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> }</div>
|
|
1767
|
+
</div><!-- fragment -->
|
|
1768
|
+
</div>
|
|
1769
|
+
</div>
|
|
1770
|
+
<a id="a6b92cdb6c5d3ae425955864536f2cba7"></a>
|
|
1771
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a6b92cdb6c5d3ae425955864536f2cba7">◆ </a></span>isRecursiveCall()</h2>
|
|
1772
|
+
|
|
1773
|
+
<div class="memitem">
|
|
1774
|
+
<div class="memproto">
|
|
1775
|
+
<table class="mlabels">
|
|
1776
|
+
<tr>
|
|
1777
|
+
<td class="mlabels-left">
|
|
1778
|
+
<table class="memname">
|
|
1779
|
+
<tr>
|
|
1780
|
+
<td class="memname">bool AbstractExecution::isRecursiveCall </td>
|
|
1781
|
+
<td>(</td>
|
|
1782
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
1783
|
+
<td class="paramname"><em>callNode</em></td><td>)</td>
|
|
1784
|
+
<td></td>
|
|
1785
|
+
</tr>
|
|
1786
|
+
</table>
|
|
1787
|
+
</td>
|
|
1788
|
+
<td class="mlabels-right">
|
|
1789
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1790
|
+
</tr>
|
|
1791
|
+
</table>
|
|
1792
|
+
</div><div class="memdoc">
|
|
1793
|
+
|
|
1794
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00665">665</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1795
|
+
<div class="fragment"><div class="line"><a name="l00666"></a><span class="lineno"> 666</span> {</div>
|
|
1796
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(callNode-><a class="code" href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">getCallSite</a>());</div>
|
|
1797
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AbstractExecution.html#ac7b2e6bdccab5a507c9e8db8ea4682d3">_recursiveFuns</a>.find(callfun) != <a class="code" href="classSVF_1_1AbstractExecution.html#ac7b2e6bdccab5a507c9e8db8ea4682d3">_recursiveFuns</a>.end();</div>
|
|
1798
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> }</div>
|
|
1799
|
+
</div><!-- fragment -->
|
|
1800
|
+
</div>
|
|
1801
|
+
</div>
|
|
1802
|
+
<a id="ae641b5687513661a2542e8318430d760"></a>
|
|
1803
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ae641b5687513661a2542e8318430d760">◆ </a></span>markRecursiveFuns()</h2>
|
|
1804
|
+
|
|
1805
|
+
<div class="memitem">
|
|
1806
|
+
<div class="memproto">
|
|
1807
|
+
<table class="mlabels">
|
|
1808
|
+
<tr>
|
|
1809
|
+
<td class="mlabels-left">
|
|
1810
|
+
<table class="memname">
|
|
1811
|
+
<tr>
|
|
1812
|
+
<td class="memname">void AbstractExecution::markRecursiveFuns </td>
|
|
1813
|
+
<td>(</td>
|
|
1814
|
+
<td class="paramname"></td><td>)</td>
|
|
1815
|
+
<td></td>
|
|
1816
|
+
</tr>
|
|
1817
|
+
</table>
|
|
1818
|
+
</td>
|
|
1819
|
+
<td class="mlabels-right">
|
|
1820
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
1821
|
+
</tr>
|
|
1822
|
+
</table>
|
|
1823
|
+
</div><div class="memdoc">
|
|
1824
|
+
|
|
1825
|
+
<p>mark recursive functions by detecting SCC in callgraph </p>
|
|
1826
|
+
|
|
1827
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00153">153</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1828
|
+
<div class="fragment"><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div>
|
|
1829
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// detect if callgraph has cycle</span></div>
|
|
1830
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a8ad0f3d5a0c9de60eff91fcc0dd44aae">CallGraphSCC</a>* _callGraphScc = <a class="code" href="classSVF_1_1AbstractExecution.html#a53f3b9c51ed8648f14ecb703e9fe67ae">_ander</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">getCallGraphSCC</a>();</div>
|
|
1831
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  _callGraphScc-><a class="code" href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">find</a>();</div>
|
|
1832
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div>
|
|
1833
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span> it = <a class="code" href="classSVF_1_1AbstractExecution.html#a39439604f7d397f620a7639884ea5b50">_callgraph</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(); it != <a class="code" href="classSVF_1_1AbstractExecution.html#a39439604f7d397f620a7639884ea5b50">_callgraph</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it++)</div>
|
|
1834
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div>
|
|
1835
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span> (_callGraphScc->isInCycle(it->second->getId()))</div>
|
|
1836
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ac7b2e6bdccab5a507c9e8db8ea4682d3">_recursiveFuns</a>.insert(it->second->getFunction());</div>
|
|
1837
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div>
|
|
1838
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> }</div>
|
|
1839
|
+
</div><!-- fragment -->
|
|
1840
|
+
</div>
|
|
1841
|
+
</div>
|
|
1842
|
+
<a id="a331ce1725ac1441f5624a2211021f967"></a>
|
|
1843
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a331ce1725ac1441f5624a2211021f967">◆ </a></span>narrowFixpointPass()</h2>
|
|
1844
|
+
|
|
1845
|
+
<div class="memitem">
|
|
1846
|
+
<div class="memproto">
|
|
1847
|
+
<table class="mlabels">
|
|
1848
|
+
<tr>
|
|
1849
|
+
<td class="mlabels-left">
|
|
1850
|
+
<table class="memname">
|
|
1851
|
+
<tr>
|
|
1852
|
+
<td class="memname">bool AbstractExecution::narrowFixpointPass </td>
|
|
1853
|
+
<td>(</td>
|
|
1854
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> * </td>
|
|
1855
|
+
<td class="paramname"><em>cycle_head</em>, </td>
|
|
1856
|
+
</tr>
|
|
1857
|
+
<tr>
|
|
1858
|
+
<td class="paramkey"></td>
|
|
1859
|
+
<td></td>
|
|
1860
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1IntervalExeState.html">SVF::IntervalExeState</a> & </td>
|
|
1861
|
+
<td class="paramname"><em>pre_es</em> </td>
|
|
1862
|
+
</tr>
|
|
1863
|
+
<tr>
|
|
1864
|
+
<td></td>
|
|
1865
|
+
<td>)</td>
|
|
1866
|
+
<td></td><td></td>
|
|
1867
|
+
</tr>
|
|
1868
|
+
</table>
|
|
1869
|
+
</td>
|
|
1870
|
+
<td class="mlabels-right">
|
|
1871
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1872
|
+
</tr>
|
|
1873
|
+
</table>
|
|
1874
|
+
</div><div class="memdoc">
|
|
1875
|
+
|
|
1876
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00851">851</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1877
|
+
<div class="fragment"><div class="line"><a name="l00852"></a><span class="lineno"> 852</span> {</div>
|
|
1878
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="comment">// decreasing iterations</span></div>
|
|
1879
|
+
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> new_pre_es = pre_es.<a class="code" href="classSVF_1_1IntervalExeState.html#a1e8f41b502167283ccb87bd128f232bc">narrowing</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head]);</div>
|
|
1880
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> new_pre_vaddr_es = new_pre_es;</div>
|
|
1881
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a103b55536f1cec38edb2f169d3f94675">narrowAddrs</a>(new_pre_es, <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head]);</div>
|
|
1882
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">if</span> (new_pre_es >= pre_es)</div>
|
|
1883
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  {</div>
|
|
1884
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="comment">// decreasing iterations - fixpoint reached</span></div>
|
|
1885
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  pre_es = new_pre_es;</div>
|
|
1886
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head] = pre_es;</div>
|
|
1887
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
1888
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  }</div>
|
|
1889
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keywordflow">else</span></div>
|
|
1890
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  {</div>
|
|
1891
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  pre_es = new_pre_es;</div>
|
|
1892
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head] = pre_es;</div>
|
|
1893
|
+
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
1894
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  }</div>
|
|
1895
|
+
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span> }</div>
|
|
1896
|
+
</div><!-- fragment -->
|
|
1897
|
+
</div>
|
|
1898
|
+
</div>
|
|
1899
|
+
<a id="aa220cdcd1653998d684ec14fe729932d"></a>
|
|
1900
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aa220cdcd1653998d684ec14fe729932d">◆ </a></span>recursiveCallPass()</h2>
|
|
1901
|
+
|
|
1902
|
+
<div class="memitem">
|
|
1903
|
+
<div class="memproto">
|
|
1904
|
+
<table class="mlabels">
|
|
1905
|
+
<tr>
|
|
1906
|
+
<td class="mlabels-left">
|
|
1907
|
+
<table class="memname">
|
|
1908
|
+
<tr>
|
|
1909
|
+
<td class="memname">void AbstractExecution::recursiveCallPass </td>
|
|
1910
|
+
<td>(</td>
|
|
1911
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
1912
|
+
<td class="paramname"><em>callNode</em></td><td>)</td>
|
|
1913
|
+
<td></td>
|
|
1914
|
+
</tr>
|
|
1915
|
+
</table>
|
|
1916
|
+
</td>
|
|
1917
|
+
<td class="mlabels-right">
|
|
1918
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
1919
|
+
</tr>
|
|
1920
|
+
</table>
|
|
1921
|
+
</div><div class="memdoc">
|
|
1922
|
+
|
|
1923
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00671">671</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1924
|
+
<div class="fragment"><div class="line"><a name="l00672"></a><span class="lineno"> 672</span> {</div>
|
|
1925
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a97c5745ddcd0ce72e65dee09ff7afb42">SkipRecursiveCall</a>(callNode);</div>
|
|
1926
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retNode = callNode-><a class="code" href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">getRetICFGNode</a>();</div>
|
|
1927
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">if</span> (retNode-><a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().size() > 0)</div>
|
|
1928
|
+
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  {</div>
|
|
1929
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast<RetPE>(*retNode-><a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().begin()))</div>
|
|
1930
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  {</div>
|
|
1931
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">if</span> (!retPE->getLHSVar()->isPointer() &&</div>
|
|
1932
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  !retPE->getLHSVar()->isConstDataOrAggDataButNotNullPtr())</div>
|
|
1933
|
+
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  {</div>
|
|
1934
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>()[retPE->getLHSVarID()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
|
|
1935
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  }</div>
|
|
1936
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  }</div>
|
|
1937
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  }</div>
|
|
1938
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> }</div>
|
|
1939
|
+
</div><!-- fragment -->
|
|
1940
|
+
</div>
|
|
1941
|
+
</div>
|
|
1942
|
+
<a id="a7a9a6b46b24d044316f609f71344e2bb"></a>
|
|
1943
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a7a9a6b46b24d044316f609f71344e2bb">◆ </a></span>runOnModule()</h2>
|
|
1944
|
+
|
|
1945
|
+
<div class="memitem">
|
|
1946
|
+
<div class="memproto">
|
|
1947
|
+
<table class="mlabels">
|
|
1948
|
+
<tr>
|
|
1949
|
+
<td class="mlabels-left">
|
|
1950
|
+
<table class="memname">
|
|
1951
|
+
<tr>
|
|
1952
|
+
<td class="memname">void AbstractExecution::runOnModule </td>
|
|
1953
|
+
<td>(</td>
|
|
1954
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1SVFIR.html">SVF::SVFIR</a> * </td>
|
|
1955
|
+
<td class="paramname"><em>svfModule</em></td><td>)</td>
|
|
1956
|
+
<td></td>
|
|
1957
|
+
</tr>
|
|
1958
|
+
</table>
|
|
1959
|
+
</td>
|
|
1960
|
+
<td class="mlabels-right">
|
|
1961
|
+
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
|
|
1962
|
+
</tr>
|
|
1963
|
+
</table>
|
|
1964
|
+
</div><div class="memdoc">
|
|
1965
|
+
<p>collect checkpoint</p>
|
|
1966
|
+
<p>if function contains callInst that call itself, it is a recursive function.</p>
|
|
1967
|
+
|
|
1968
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00092">92</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
1969
|
+
<div class="fragment"><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> {</div>
|
|
1970
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// 1. Start clock</span></div>
|
|
1971
|
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e">startClk</a>();</div>
|
|
1972
|
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div>
|
|
1973
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a> = svfModule;</div>
|
|
1974
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a53f3b9c51ed8648f14ecb703e9fe67ae">_ander</a> = <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">AndersenWaveDiff::createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>);</div>
|
|
1975
|
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">_api</a>-><a class="code" href="classSVF_1_1AEAPI.html#a5172791c4432a4c4ab0f7e97e7b3b596">setModule</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>);</div>
|
|
1976
|
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="comment">// init SVF Execution States</span></div>
|
|
1977
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1SVFIR2ItvExeState.html">SVFIR2ItvExeState</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>);</div>
|
|
1978
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div>
|
|
1979
|
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// init SSE External API Handler</span></div>
|
|
1980
|
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a39439604f7d397f620a7639884ea5b50">_callgraph</a> = <a class="code" href="classSVF_1_1AbstractExecution.html#a53f3b9c51ed8648f14ecb703e9fe67ae">_ander</a>-><a class="code" href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">getPTACallGraph</a>();</div>
|
|
1981
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">_icfg</a> = <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">getICFG</a>();</div>
|
|
1982
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html">CFBasicBlockGBuilder</a> CFBGBuilder;</div>
|
|
1983
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">_icfg</a>-><a class="code" href="classSVF_1_1ICFG.html#a5a00682b75726cacc1b4d88bbf40c824">updateCallGraph</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a39439604f7d397f620a7639884ea5b50">_callgraph</a>);</div>
|
|
1984
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div>
|
|
1985
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  CFBGBuilder.<a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf">build</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">_icfg</a>);</div>
|
|
1986
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a> = CFBGBuilder.<a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a879d8affb9b113c9d2d976cdd31b60f1">getCFBasicBlockGraph</a>();</div>
|
|
1987
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">_api</a>-><a class="code" href="classSVF_1_1AEAPI.html#a2dc09f4a21cf629ebe500f856cf86bb4">collectCheckPoint</a>();</div>
|
|
1988
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div>
|
|
1989
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#ae641b5687513661a2542e8318430d760">markRecursiveFuns</a>();</div>
|
|
1990
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun: <a class="code" href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">_svfir</a>-><a class="code" href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">getModule</a>()-><a class="code" href="classSVF_1_1SVFModule.html#abbaf48d9702ec1f38dc6ae137ca630a1">getFunctionSet</a>())</div>
|
|
1991
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div>
|
|
1992
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">hasGNode</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">_icfg</a>-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(fun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) )</div>
|
|
1993
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  {</div>
|
|
1994
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> *node = <a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>-><a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">_icfg</a>-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(fun)-><a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div>
|
|
1995
|
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keyword">auto</span> *wto = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockGWTO.html">CFBasicBlockGWTO</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">_CFBlockG</a>, node);</div>
|
|
1996
|
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  wto->init();</div>
|
|
1997
|
+
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a91a2739c4fec2cc29c560bcf8e5e420e">_funcToWTO</a>[fun] = wto;</div>
|
|
1998
|
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div>
|
|
1999
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div>
|
|
2000
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a46364bb8814f7bf6ddd492aa7dc58ffb">analyse</a>();</div>
|
|
2001
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">_api</a>-><a class="code" href="classSVF_1_1AEAPI.html#aa2a97be698768ddbcab0fec27bde60c8">checkPointAllSet</a>();</div>
|
|
2002
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// 5. Stop clock and report bugs</span></div>
|
|
2003
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">endClk</a>();</div>
|
|
2004
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1AEStat.html#a5b246c2175c44454236242dcf426f21f">finializeStat</a>();</div>
|
|
2005
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ac9d18f2d6853f45548f4f85fa2f661c4">Options::PStat</a>())</div>
|
|
2006
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div>
|
|
2007
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1AEStat.html#a798d07cc0a36ce0d9010ab86d1ec216f">performStat</a>();</div>
|
|
2008
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  }</div>
|
|
2009
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">_stat</a>-><a class="code" href="classSVF_1_1AEStat.html#ae24590233a864e18a6b0948bef89201a">reportBug</a>();</div>
|
|
2010
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div>
|
|
2011
|
+
</div><!-- fragment -->
|
|
2012
|
+
</div>
|
|
2013
|
+
</div>
|
|
2014
|
+
<a id="a97c5745ddcd0ce72e65dee09ff7afb42"></a>
|
|
2015
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a97c5745ddcd0ce72e65dee09ff7afb42">◆ </a></span>SkipRecursiveCall()</h2>
|
|
2016
|
+
|
|
2017
|
+
<div class="memitem">
|
|
2018
|
+
<div class="memproto">
|
|
2019
|
+
<table class="mlabels">
|
|
2020
|
+
<tr>
|
|
2021
|
+
<td class="mlabels-left">
|
|
2022
|
+
<table class="memname">
|
|
2023
|
+
<tr>
|
|
2024
|
+
<td class="memname">void AbstractExecution::SkipRecursiveCall </td>
|
|
2025
|
+
<td>(</td>
|
|
2026
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> * </td>
|
|
2027
|
+
<td class="paramname"><em>callnode</em></td><td>)</td>
|
|
2028
|
+
<td></td>
|
|
2029
|
+
</tr>
|
|
2030
|
+
</table>
|
|
2031
|
+
</td>
|
|
2032
|
+
<td class="mlabels-right">
|
|
2033
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
2034
|
+
</tr>
|
|
2035
|
+
</table>
|
|
2036
|
+
</div><div class="memdoc">
|
|
2037
|
+
<p>Check if this callnode is recursive call and skip it.</p>
|
|
2038
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
2039
|
+
<table class="params">
|
|
2040
|
+
<tr><td class="paramname">callnode</td><td><a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> which calls a recursive function </td></tr>
|
|
2041
|
+
</table>
|
|
2042
|
+
</dd>
|
|
2043
|
+
</dl>
|
|
2044
|
+
|
|
2045
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00958">958</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
2046
|
+
<div class="fragment"><div class="line"><a name="l00959"></a><span class="lineno"> 959</span> {</div>
|
|
2047
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *callfun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVFUtil::getCallee</a>(callNode->getCallSite());</div>
|
|
2048
|
+
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retNode = callNode->getRetICFGNode();</div>
|
|
2049
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">if</span> (retNode-><a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().size() > 0)</div>
|
|
2050
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  {</div>
|
|
2051
|
+
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a> *retPE = SVFUtil::dyn_cast<RetPE>(*retNode-><a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>().begin()))</div>
|
|
2052
|
+
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  {</div>
|
|
2053
|
+
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> es;</div>
|
|
2054
|
+
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  <span class="keywordflow">if</span> (!retPE->getLHSVar()->isPointer() && !retPE->getLHSVar()->isConstDataOrAggDataButNotNullPtr())</div>
|
|
2055
|
+
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>()[retPE->getLHSVarID()] = <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>();</div>
|
|
2056
|
+
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  }</div>
|
|
2057
|
+
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  }</div>
|
|
2058
|
+
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  <span class="keywordflow">if</span> (!retNode-><a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty())</div>
|
|
2059
|
+
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  {</div>
|
|
2060
|
+
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  <span class="keywordflow">if</span> (retNode-><a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().size() == 1)</div>
|
|
2061
|
+
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  {</div>
|
|
2062
|
+
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  </div>
|
|
2063
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  }</div>
|
|
2064
|
+
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <span class="keywordflow">else</span></div>
|
|
2065
|
+
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  {</div>
|
|
2066
|
+
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  <span class="keywordflow">return</span>;</div>
|
|
2067
|
+
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  }</div>
|
|
2068
|
+
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  }</div>
|
|
2069
|
+
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a7e1c3edfa546182ad394116b37b834f9">SkipRecursiveFunc</a>(callfun);</div>
|
|
2070
|
+
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> }</div>
|
|
2071
|
+
</div><!-- fragment -->
|
|
2072
|
+
</div>
|
|
2073
|
+
</div>
|
|
2074
|
+
<a id="a7e1c3edfa546182ad394116b37b834f9"></a>
|
|
2075
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a7e1c3edfa546182ad394116b37b834f9">◆ </a></span>SkipRecursiveFunc()</h2>
|
|
2076
|
+
|
|
2077
|
+
<div class="memitem">
|
|
2078
|
+
<div class="memproto">
|
|
2079
|
+
<table class="mlabels">
|
|
2080
|
+
<tr>
|
|
2081
|
+
<td class="mlabels-left">
|
|
2082
|
+
<table class="memname">
|
|
2083
|
+
<tr>
|
|
2084
|
+
<td class="memname">void AbstractExecution::SkipRecursiveFunc </td>
|
|
2085
|
+
<td>(</td>
|
|
2086
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> * </td>
|
|
2087
|
+
<td class="paramname"><em>func</em></td><td>)</td>
|
|
2088
|
+
<td></td>
|
|
2089
|
+
</tr>
|
|
2090
|
+
</table>
|
|
2091
|
+
</td>
|
|
2092
|
+
<td class="mlabels-right">
|
|
2093
|
+
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span> </td>
|
|
2094
|
+
</tr>
|
|
2095
|
+
</table>
|
|
2096
|
+
</div><div class="memdoc">
|
|
2097
|
+
<p>Check if this function is recursive function and skip it.</p>
|
|
2098
|
+
<dl class="params"><dt>Parameters</dt><dd>
|
|
2099
|
+
<table class="params">
|
|
2100
|
+
<tr><td class="paramname">func</td><td><a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a> is a recursive function </td></tr>
|
|
2101
|
+
</table>
|
|
2102
|
+
</dd>
|
|
2103
|
+
</dl>
|
|
2104
|
+
|
|
2105
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00985">985</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
2106
|
+
<div class="fragment"><div class="line"><a name="l00986"></a><span class="lineno"> 986</span> {</div>
|
|
2107
|
+
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  <span class="comment">// handle Recursive Funcs, go throw every relevant funcs/blocks.</span></div>
|
|
2108
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  <span class="comment">// for every Call Argv, Ret , Global Vars, we make it as Top value</span></div>
|
|
2109
|
+
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const SVFBasicBlock *></a> blkWorkList;</div>
|
|
2110
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList<const ICFGNode *></a> instWorklist;</div>
|
|
2111
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> * bb: func-><a class="code" href="classSVF_1_1SVFFunction.html#a90e39f78f4908f8a8ef3948d9158791c">getReachableBBs</a>())</div>
|
|
2112
|
+
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  {</div>
|
|
2113
|
+
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst: bb->getInstructionList())</div>
|
|
2114
|
+
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  {</div>
|
|
2115
|
+
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* node = <a class="code" href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">_icfg</a>-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(inst);</div>
|
|
2116
|
+
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFStmt.html">SVFStmt</a> *stmt: node-><a class="code" href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">getSVFStmts</a>())</div>
|
|
2117
|
+
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  {</div>
|
|
2118
|
+
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a> *store = SVFUtil::dyn_cast<StoreStmt>(stmt))</div>
|
|
2119
|
+
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  {</div>
|
|
2120
|
+
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFVar.html">SVFVar</a> *rhsVar = store->getRHSVar();</div>
|
|
2121
|
+
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <a class="code" href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a> lhs = store->getLHSVarID();</div>
|
|
2122
|
+
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> &curES = <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">getEs</a>();</div>
|
|
2123
|
+
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  <span class="keywordflow">if</span> (curES.<a class="code" href="classSVF_1_1IntervalExeState.html#ad485a35730353c0e945bc84a034d9e45">inVarToAddrsTable</a>(lhs))</div>
|
|
2124
|
+
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  {</div>
|
|
2125
|
+
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">if</span> (!rhsVar-><a class="code" href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">isPointer</a>() && !rhsVar-><a class="code" href="classSVF_1_1SVFVar.html#a091ef22d4fc428985d604b03f287a941">isConstDataOrAggDataButNotNullPtr</a>())</div>
|
|
2126
|
+
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  {</div>
|
|
2127
|
+
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1AddressValue.html">SVFIR2ItvExeState::Addrs</a> &addrs =curES.<a class="code" href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">getAddrs</a>(lhs);</div>
|
|
2128
|
+
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  assert(!addrs.<a class="code" href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">empty</a>());</div>
|
|
2129
|
+
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &addr: addrs)</div>
|
|
2130
|
+
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  {</div>
|
|
2131
|
+
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  curES.<a class="code" href="classSVF_1_1IntervalESBase.html#adb26b186ee31bce7449a7b36faa24cc2">store</a>(addr, <a class="code" href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">IntervalValue::top</a>());</div>
|
|
2132
|
+
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  }</div>
|
|
2133
|
+
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  }</div>
|
|
2134
|
+
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  }</div>
|
|
2135
|
+
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  }</div>
|
|
2136
|
+
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  }</div>
|
|
2137
|
+
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  }</div>
|
|
2138
|
+
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  }</div>
|
|
2139
|
+
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> }</div>
|
|
2140
|
+
</div><!-- fragment -->
|
|
2141
|
+
</div>
|
|
2142
|
+
</div>
|
|
2143
|
+
<a id="aa964763a5e9e99276707bd6678d1f37f"></a>
|
|
2144
|
+
<h2 class="memtitle"><span class="permalink"><a href="#aa964763a5e9e99276707bd6678d1f37f">◆ </a></span>widenFixpointPass()</h2>
|
|
2145
|
+
|
|
2146
|
+
<div class="memitem">
|
|
2147
|
+
<div class="memproto">
|
|
2148
|
+
<table class="mlabels">
|
|
2149
|
+
<tr>
|
|
2150
|
+
<td class="mlabels-left">
|
|
2151
|
+
<table class="memname">
|
|
2152
|
+
<tr>
|
|
2153
|
+
<td class="memname">bool AbstractExecution::widenFixpointPass </td>
|
|
2154
|
+
<td>(</td>
|
|
2155
|
+
<td class="paramtype">const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a> * </td>
|
|
2156
|
+
<td class="paramname"><em>cycle_head</em>, </td>
|
|
2157
|
+
</tr>
|
|
2158
|
+
<tr>
|
|
2159
|
+
<td class="paramkey"></td>
|
|
2160
|
+
<td></td>
|
|
2161
|
+
<td class="paramtype"><a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> & </td>
|
|
2162
|
+
<td class="paramname"><em>pre_es</em> </td>
|
|
2163
|
+
</tr>
|
|
2164
|
+
<tr>
|
|
2165
|
+
<td></td>
|
|
2166
|
+
<td>)</td>
|
|
2167
|
+
<td></td><td></td>
|
|
2168
|
+
</tr>
|
|
2169
|
+
</table>
|
|
2170
|
+
</td>
|
|
2171
|
+
<td class="mlabels-right">
|
|
2172
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
2173
|
+
</tr>
|
|
2174
|
+
</table>
|
|
2175
|
+
</div><div class="memdoc">
|
|
2176
|
+
|
|
2177
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8cpp_source.html#l00829">829</a> of file <a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a>.</p>
|
|
2178
|
+
<div class="fragment"><div class="line"><a name="l00830"></a><span class="lineno"> 830</span> {</div>
|
|
2179
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="comment">// increasing iterations</span></div>
|
|
2180
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> new_pre_es = pre_es.<a class="code" href="classSVF_1_1IntervalExeState.html#abc8edb74e55f40dbc7bb5182d4ef1199">widening</a>(<a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head]);</div>
|
|
2181
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <a class="code" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a> new_pre_vaddr_es = new_pre_es;</div>
|
|
2182
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">_svfir2ExeState</a>-><a class="code" href="classSVF_1_1SVFIR2ItvExeState.html#a198fd724be35f415851a2467c3930f76">widenAddrs</a>(new_pre_es, <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head]);</div>
|
|
2183
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  </div>
|
|
2184
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="keywordflow">if</span> (pre_es >= new_pre_es)</div>
|
|
2185
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  {</div>
|
|
2186
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="comment">// increasing iterations - fixpoint reached</span></div>
|
|
2187
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  pre_es = new_pre_es;</div>
|
|
2188
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head] = pre_es;</div>
|
|
2189
|
+
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
2190
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  }</div>
|
|
2191
|
+
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="keywordflow">else</span></div>
|
|
2192
|
+
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  {</div>
|
|
2193
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  pre_es = new_pre_es;</div>
|
|
2194
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <a class="code" href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">_postES</a>[cycle_head] = pre_es;</div>
|
|
2195
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
2196
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  }</div>
|
|
2197
|
+
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> }</div>
|
|
2198
|
+
</div><!-- fragment -->
|
|
2199
|
+
</div>
|
|
2200
|
+
</div>
|
|
2201
|
+
<h2 class="groupheader">Friends And Related Function Documentation</h2>
|
|
2202
|
+
<a id="ac0bcb586dffbfadeb33f501cafbaa1c9"></a>
|
|
2203
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ac0bcb586dffbfadeb33f501cafbaa1c9">◆ </a></span>AEAPI</h2>
|
|
2204
|
+
|
|
2205
|
+
<div class="memitem">
|
|
2206
|
+
<div class="memproto">
|
|
2207
|
+
<table class="mlabels">
|
|
2208
|
+
<tr>
|
|
2209
|
+
<td class="mlabels-left">
|
|
2210
|
+
<table class="memname">
|
|
2211
|
+
<tr>
|
|
2212
|
+
<td class="memname">friend class <a class="el" href="classSVF_1_1AEAPI.html">AEAPI</a></td>
|
|
2213
|
+
</tr>
|
|
2214
|
+
</table>
|
|
2215
|
+
</td>
|
|
2216
|
+
<td class="mlabels-right">
|
|
2217
|
+
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
|
|
2218
|
+
</tr>
|
|
2219
|
+
</table>
|
|
2220
|
+
</div><div class="memdoc">
|
|
2221
|
+
|
|
2222
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00109">109</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2223
|
+
|
|
2224
|
+
</div>
|
|
2225
|
+
</div>
|
|
2226
|
+
<a id="adc6fd1004f4277cb4d6c8bb0dacf3208"></a>
|
|
2227
|
+
<h2 class="memtitle"><span class="permalink"><a href="#adc6fd1004f4277cb4d6c8bb0dacf3208">◆ </a></span>AEStat</h2>
|
|
2228
|
+
|
|
2229
|
+
<div class="memitem">
|
|
2230
|
+
<div class="memproto">
|
|
2231
|
+
<table class="mlabels">
|
|
2232
|
+
<tr>
|
|
2233
|
+
<td class="mlabels-left">
|
|
2234
|
+
<table class="memname">
|
|
2235
|
+
<tr>
|
|
2236
|
+
<td class="memname">friend class <a class="el" href="classSVF_1_1AEStat.html">AEStat</a></td>
|
|
2237
|
+
</tr>
|
|
2238
|
+
</table>
|
|
2239
|
+
</td>
|
|
2240
|
+
<td class="mlabels-right">
|
|
2241
|
+
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
|
|
2242
|
+
</tr>
|
|
2243
|
+
</table>
|
|
2244
|
+
</div><div class="memdoc">
|
|
2245
|
+
|
|
2246
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00108">108</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2247
|
+
|
|
2248
|
+
</div>
|
|
2249
|
+
</div>
|
|
2250
|
+
<h2 class="groupheader">Member Data Documentation</h2>
|
|
2251
|
+
<a id="a53f3b9c51ed8648f14ecb703e9fe67ae"></a>
|
|
2252
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a53f3b9c51ed8648f14ecb703e9fe67ae">◆ </a></span>_ander</h2>
|
|
2253
|
+
|
|
2254
|
+
<div class="memitem">
|
|
2255
|
+
<div class="memproto">
|
|
2256
|
+
<table class="mlabels">
|
|
2257
|
+
<tr>
|
|
2258
|
+
<td class="mlabels-left">
|
|
2259
|
+
<table class="memname">
|
|
2260
|
+
<tr>
|
|
2261
|
+
<td class="memname"><a class="el" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* SVF::AbstractExecution::_ander</td>
|
|
2262
|
+
</tr>
|
|
2263
|
+
</table>
|
|
2264
|
+
</td>
|
|
2265
|
+
<td class="mlabels-right">
|
|
2266
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
2267
|
+
</tr>
|
|
2268
|
+
</table>
|
|
2269
|
+
</div><div class="memdoc">
|
|
2270
|
+
|
|
2271
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00271">271</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2272
|
+
|
|
2273
|
+
</div>
|
|
2274
|
+
</div>
|
|
2275
|
+
<a id="a26f8c21bd96ae22ca2e72af6fbfa410c"></a>
|
|
2276
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a26f8c21bd96ae22ca2e72af6fbfa410c">◆ </a></span>_api</h2>
|
|
2277
|
+
|
|
2278
|
+
<div class="memitem">
|
|
2279
|
+
<div class="memproto">
|
|
2280
|
+
<table class="mlabels">
|
|
2281
|
+
<tr>
|
|
2282
|
+
<td class="mlabels-left">
|
|
2283
|
+
<table class="memname">
|
|
2284
|
+
<tr>
|
|
2285
|
+
<td class="memname"><a class="el" href="classSVF_1_1AEAPI.html">AEAPI</a>* SVF::AbstractExecution::_api {nullptr}</td>
|
|
2286
|
+
</tr>
|
|
2287
|
+
</table>
|
|
2288
|
+
</td>
|
|
2289
|
+
<td class="mlabels-right">
|
|
2290
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2291
|
+
</tr>
|
|
2292
|
+
</table>
|
|
2293
|
+
</div><div class="memdoc">
|
|
2294
|
+
|
|
2295
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00239">239</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2296
|
+
|
|
2297
|
+
</div>
|
|
2298
|
+
</div>
|
|
2299
|
+
<a id="a790c178f8c29eecfc256a5dfd97d1637"></a>
|
|
2300
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a790c178f8c29eecfc256a5dfd97d1637">◆ </a></span>_bugLoc</h2>
|
|
2301
|
+
|
|
2302
|
+
<div class="memitem">
|
|
2303
|
+
<div class="memproto">
|
|
2304
|
+
<table class="mlabels">
|
|
2305
|
+
<tr>
|
|
2306
|
+
<td class="mlabels-left">
|
|
2307
|
+
<table class="memname">
|
|
2308
|
+
<tr>
|
|
2309
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a><<a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>> SVF::AbstractExecution::_bugLoc</td>
|
|
2310
|
+
</tr>
|
|
2311
|
+
</table>
|
|
2312
|
+
</td>
|
|
2313
|
+
<td class="mlabels-right">
|
|
2314
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2315
|
+
</tr>
|
|
2316
|
+
</table>
|
|
2317
|
+
</div><div class="memdoc">
|
|
2318
|
+
|
|
2319
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00245">245</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2320
|
+
|
|
2321
|
+
</div>
|
|
2322
|
+
</div>
|
|
2323
|
+
<a id="a39439604f7d397f620a7639884ea5b50"></a>
|
|
2324
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a39439604f7d397f620a7639884ea5b50">◆ </a></span>_callgraph</h2>
|
|
2325
|
+
|
|
2326
|
+
<div class="memitem">
|
|
2327
|
+
<div class="memproto">
|
|
2328
|
+
<table class="mlabels">
|
|
2329
|
+
<tr>
|
|
2330
|
+
<td class="mlabels-left">
|
|
2331
|
+
<table class="memname">
|
|
2332
|
+
<tr>
|
|
2333
|
+
<td class="memname"><a class="el" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* SVF::AbstractExecution::_callgraph</td>
|
|
2334
|
+
</tr>
|
|
2335
|
+
</table>
|
|
2336
|
+
</td>
|
|
2337
|
+
<td class="mlabels-right">
|
|
2338
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2339
|
+
</tr>
|
|
2340
|
+
</table>
|
|
2341
|
+
</div><div class="memdoc">
|
|
2342
|
+
|
|
2343
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00236">236</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2344
|
+
|
|
2345
|
+
</div>
|
|
2346
|
+
</div>
|
|
2347
|
+
<a id="ab9d6ebcf67ec473ce7ad5910c74eddc1"></a>
|
|
2348
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ab9d6ebcf67ec473ce7ad5910c74eddc1">◆ </a></span>_callSiteStack</h2>
|
|
2349
|
+
|
|
2350
|
+
<div class="memitem">
|
|
2351
|
+
<div class="memproto">
|
|
2352
|
+
<table class="mlabels">
|
|
2353
|
+
<tr>
|
|
2354
|
+
<td class="mlabels-left">
|
|
2355
|
+
<table class="memname">
|
|
2356
|
+
<tr>
|
|
2357
|
+
<td class="memname">std::vector<const <a class="el" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>*> SVF::AbstractExecution::_callSiteStack</td>
|
|
2358
|
+
</tr>
|
|
2359
|
+
</table>
|
|
2360
|
+
</td>
|
|
2361
|
+
<td class="mlabels-right">
|
|
2362
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2363
|
+
</tr>
|
|
2364
|
+
</table>
|
|
2365
|
+
</div><div class="memdoc">
|
|
2366
|
+
|
|
2367
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00247">247</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2368
|
+
|
|
2369
|
+
</div>
|
|
2370
|
+
</div>
|
|
2371
|
+
<a id="a640e6714576772f9f1bac826ba93707d"></a>
|
|
2372
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a640e6714576772f9f1bac826ba93707d">◆ </a></span>_CFBlockG</h2>
|
|
2373
|
+
|
|
2374
|
+
<div class="memitem">
|
|
2375
|
+
<div class="memproto">
|
|
2376
|
+
<table class="mlabels">
|
|
2377
|
+
<tr>
|
|
2378
|
+
<td class="mlabels-left">
|
|
2379
|
+
<table class="memname">
|
|
2380
|
+
<tr>
|
|
2381
|
+
<td class="memname"><a class="el" href="classSVF_1_1CFBasicBlockGraph.html">CFBasicBlockGraph</a>* SVF::AbstractExecution::_CFBlockG</td>
|
|
2382
|
+
</tr>
|
|
2383
|
+
</table>
|
|
2384
|
+
</td>
|
|
2385
|
+
<td class="mlabels-right">
|
|
2386
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
2387
|
+
</tr>
|
|
2388
|
+
</table>
|
|
2389
|
+
</div><div class="memdoc">
|
|
2390
|
+
|
|
2391
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00270">270</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2392
|
+
|
|
2393
|
+
</div>
|
|
2394
|
+
</div>
|
|
2395
|
+
<a id="a91a2739c4fec2cc29c560bcf8e5e420e"></a>
|
|
2396
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a91a2739c4fec2cc29c560bcf8e5e420e">◆ </a></span>_funcToWTO</h2>
|
|
2397
|
+
|
|
2398
|
+
<div class="memitem">
|
|
2399
|
+
<div class="memproto">
|
|
2400
|
+
<table class="mlabels">
|
|
2401
|
+
<tr>
|
|
2402
|
+
<td class="mlabels-left">
|
|
2403
|
+
<table class="memname">
|
|
2404
|
+
<tr>
|
|
2405
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*, <a class="el" href="classSVF_1_1CFBasicBlockGWTO.html">CFBasicBlockGWTO</a> *> SVF::AbstractExecution::_funcToWTO</td>
|
|
2406
|
+
</tr>
|
|
2407
|
+
</table>
|
|
2408
|
+
</td>
|
|
2409
|
+
<td class="mlabels-right">
|
|
2410
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
2411
|
+
</tr>
|
|
2412
|
+
</table>
|
|
2413
|
+
</div><div class="memdoc">
|
|
2414
|
+
|
|
2415
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00274">274</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2416
|
+
|
|
2417
|
+
</div>
|
|
2418
|
+
</div>
|
|
2419
|
+
<a id="ab5021d59a929f4eaf5e59d911036d201"></a>
|
|
2420
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ab5021d59a929f4eaf5e59d911036d201">◆ </a></span>_icfg</h2>
|
|
2421
|
+
|
|
2422
|
+
<div class="memitem">
|
|
2423
|
+
<div class="memproto">
|
|
2424
|
+
<table class="mlabels">
|
|
2425
|
+
<tr>
|
|
2426
|
+
<td class="mlabels-left">
|
|
2427
|
+
<table class="memname">
|
|
2428
|
+
<tr>
|
|
2429
|
+
<td class="memname"><a class="el" href="classSVF_1_1ICFG.html">ICFG</a>* SVF::AbstractExecution::_icfg</td>
|
|
2430
|
+
</tr>
|
|
2431
|
+
</table>
|
|
2432
|
+
</td>
|
|
2433
|
+
<td class="mlabels-right">
|
|
2434
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2435
|
+
</tr>
|
|
2436
|
+
</table>
|
|
2437
|
+
</div><div class="memdoc">
|
|
2438
|
+
|
|
2439
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00241">241</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2440
|
+
|
|
2441
|
+
</div>
|
|
2442
|
+
</div>
|
|
2443
|
+
<a id="ad36d48c0ef82de915d9339c4f47cbd70"></a>
|
|
2444
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ad36d48c0ef82de915d9339c4f47cbd70">◆ </a></span>_kind</h2>
|
|
2445
|
+
|
|
2446
|
+
<div class="memitem">
|
|
2447
|
+
<div class="memproto">
|
|
2448
|
+
<table class="mlabels">
|
|
2449
|
+
<tr>
|
|
2450
|
+
<td class="mlabels-left">
|
|
2451
|
+
<table class="memname">
|
|
2452
|
+
<tr>
|
|
2453
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88">AEKind</a> SVF::AbstractExecution::_kind</td>
|
|
2454
|
+
</tr>
|
|
2455
|
+
</table>
|
|
2456
|
+
</td>
|
|
2457
|
+
<td class="mlabels-right">
|
|
2458
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2459
|
+
</tr>
|
|
2460
|
+
</table>
|
|
2461
|
+
</div><div class="memdoc">
|
|
2462
|
+
|
|
2463
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00243">243</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2464
|
+
|
|
2465
|
+
</div>
|
|
2466
|
+
</div>
|
|
2467
|
+
<a id="a18903b2257e3a2aeec53d79bcf83e7d5"></a>
|
|
2468
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a18903b2257e3a2aeec53d79bcf83e7d5">◆ </a></span>_moduleName</h2>
|
|
2469
|
+
|
|
2470
|
+
<div class="memitem">
|
|
2471
|
+
<div class="memproto">
|
|
2472
|
+
<table class="mlabels">
|
|
2473
|
+
<tr>
|
|
2474
|
+
<td class="mlabels-left">
|
|
2475
|
+
<table class="memname">
|
|
2476
|
+
<tr>
|
|
2477
|
+
<td class="memname"><a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a> SVF::AbstractExecution::_moduleName</td>
|
|
2478
|
+
</tr>
|
|
2479
|
+
</table>
|
|
2480
|
+
</td>
|
|
2481
|
+
<td class="mlabels-right">
|
|
2482
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
2483
|
+
</tr>
|
|
2484
|
+
</table>
|
|
2485
|
+
</div><div class="memdoc">
|
|
2486
|
+
|
|
2487
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00276">276</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2488
|
+
|
|
2489
|
+
</div>
|
|
2490
|
+
</div>
|
|
2491
|
+
<a id="a55737f5c82afce29a816eb21070a2bc1"></a>
|
|
2492
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a55737f5c82afce29a816eb21070a2bc1">◆ </a></span>_nodeToBugInfo</h2>
|
|
2493
|
+
|
|
2494
|
+
<div class="memitem">
|
|
2495
|
+
<div class="memproto">
|
|
2496
|
+
<table class="mlabels">
|
|
2497
|
+
<tr>
|
|
2498
|
+
<td class="mlabels-left">
|
|
2499
|
+
<table class="memname">
|
|
2500
|
+
<tr>
|
|
2501
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><const <a class="el" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *, <a class="el" href="cJSON_8cpp.html#ae1adbce218e7a9d09164012443191d24">std::string</a>> SVF::AbstractExecution::_nodeToBugInfo</td>
|
|
2502
|
+
</tr>
|
|
2503
|
+
</table>
|
|
2504
|
+
</td>
|
|
2505
|
+
<td class="mlabels-right">
|
|
2506
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2507
|
+
</tr>
|
|
2508
|
+
</table>
|
|
2509
|
+
</div><div class="memdoc">
|
|
2510
|
+
|
|
2511
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00248">248</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2512
|
+
|
|
2513
|
+
</div>
|
|
2514
|
+
</div>
|
|
2515
|
+
<a id="a740648f04067e6587eab8f328d57ce2c"></a>
|
|
2516
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a740648f04067e6587eab8f328d57ce2c">◆ </a></span>_postES</h2>
|
|
2517
|
+
|
|
2518
|
+
<div class="memitem">
|
|
2519
|
+
<div class="memproto">
|
|
2520
|
+
<table class="mlabels">
|
|
2521
|
+
<tr>
|
|
2522
|
+
<td class="mlabels-left">
|
|
2523
|
+
<table class="memname">
|
|
2524
|
+
<tr>
|
|
2525
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>*, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a>> SVF::AbstractExecution::_postES</td>
|
|
2526
|
+
</tr>
|
|
2527
|
+
</table>
|
|
2528
|
+
</td>
|
|
2529
|
+
<td class="mlabels-right">
|
|
2530
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
2531
|
+
</tr>
|
|
2532
|
+
</table>
|
|
2533
|
+
</div><div class="memdoc">
|
|
2534
|
+
|
|
2535
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00273">273</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2536
|
+
|
|
2537
|
+
</div>
|
|
2538
|
+
</div>
|
|
2539
|
+
<a id="a209315b8ebebe7fae08ad978bc82f228"></a>
|
|
2540
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a209315b8ebebe7fae08ad978bc82f228">◆ </a></span>_preES</h2>
|
|
2541
|
+
|
|
2542
|
+
<div class="memitem">
|
|
2543
|
+
<div class="memproto">
|
|
2544
|
+
<table class="mlabels">
|
|
2545
|
+
<tr>
|
|
2546
|
+
<td class="mlabels-left">
|
|
2547
|
+
<table class="memname">
|
|
2548
|
+
<tr>
|
|
2549
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><const <a class="el" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>*, <a class="el" href="classSVF_1_1IntervalExeState.html">IntervalExeState</a>> SVF::AbstractExecution::_preES</td>
|
|
2550
|
+
</tr>
|
|
2551
|
+
</table>
|
|
2552
|
+
</td>
|
|
2553
|
+
<td class="mlabels-right">
|
|
2554
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
2555
|
+
</tr>
|
|
2556
|
+
</table>
|
|
2557
|
+
</div><div class="memdoc">
|
|
2558
|
+
|
|
2559
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00272">272</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2560
|
+
|
|
2561
|
+
</div>
|
|
2562
|
+
</div>
|
|
2563
|
+
<a id="a5ed683d635bd05f0bee10436d20deb31"></a>
|
|
2564
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a5ed683d635bd05f0bee10436d20deb31">◆ </a></span>_recoder</h2>
|
|
2565
|
+
|
|
2566
|
+
<div class="memitem">
|
|
2567
|
+
<div class="memproto">
|
|
2568
|
+
<table class="mlabels">
|
|
2569
|
+
<tr>
|
|
2570
|
+
<td class="mlabels-left">
|
|
2571
|
+
<table class="memname">
|
|
2572
|
+
<tr>
|
|
2573
|
+
<td class="memname"><a class="el" href="classSVF_1_1SVFBugReport.html">SVFBugReport</a> SVF::AbstractExecution::_recoder</td>
|
|
2574
|
+
</tr>
|
|
2575
|
+
</table>
|
|
2576
|
+
</td>
|
|
2577
|
+
<td class="mlabels-right">
|
|
2578
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2579
|
+
</tr>
|
|
2580
|
+
</table>
|
|
2581
|
+
</div><div class="memdoc">
|
|
2582
|
+
|
|
2583
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00246">246</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2584
|
+
|
|
2585
|
+
</div>
|
|
2586
|
+
</div>
|
|
2587
|
+
<a id="ac7b2e6bdccab5a507c9e8db8ea4682d3"></a>
|
|
2588
|
+
<h2 class="memtitle"><span class="permalink"><a href="#ac7b2e6bdccab5a507c9e8db8ea4682d3">◆ </a></span>_recursiveFuns</h2>
|
|
2589
|
+
|
|
2590
|
+
<div class="memitem">
|
|
2591
|
+
<div class="memproto">
|
|
2592
|
+
<table class="mlabels">
|
|
2593
|
+
<tr>
|
|
2594
|
+
<td class="mlabels-left">
|
|
2595
|
+
<table class="memname">
|
|
2596
|
+
<tr>
|
|
2597
|
+
<td class="memname"><a class="el" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set</a><const <a class="el" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*> SVF::AbstractExecution::_recursiveFuns</td>
|
|
2598
|
+
</tr>
|
|
2599
|
+
</table>
|
|
2600
|
+
</td>
|
|
2601
|
+
<td class="mlabels-right">
|
|
2602
|
+
<span class="mlabels"><span class="mlabel">private</span></span> </td>
|
|
2603
|
+
</tr>
|
|
2604
|
+
</table>
|
|
2605
|
+
</div><div class="memdoc">
|
|
2606
|
+
|
|
2607
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00275">275</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2608
|
+
|
|
2609
|
+
</div>
|
|
2610
|
+
</div>
|
|
2611
|
+
<a id="a74a55a4d4941c85bdfed81f060049bf0"></a>
|
|
2612
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a74a55a4d4941c85bdfed81f060049bf0">◆ </a></span>_stat</h2>
|
|
2613
|
+
|
|
2614
|
+
<div class="memitem">
|
|
2615
|
+
<div class="memproto">
|
|
2616
|
+
<table class="mlabels">
|
|
2617
|
+
<tr>
|
|
2618
|
+
<td class="mlabels-left">
|
|
2619
|
+
<table class="memname">
|
|
2620
|
+
<tr>
|
|
2621
|
+
<td class="memname"><a class="el" href="classSVF_1_1AEStat.html">AEStat</a>* SVF::AbstractExecution::_stat</td>
|
|
2622
|
+
</tr>
|
|
2623
|
+
</table>
|
|
2624
|
+
</td>
|
|
2625
|
+
<td class="mlabels-right">
|
|
2626
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2627
|
+
</tr>
|
|
2628
|
+
</table>
|
|
2629
|
+
</div><div class="memdoc">
|
|
2630
|
+
|
|
2631
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00242">242</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2632
|
+
|
|
2633
|
+
</div>
|
|
2634
|
+
</div>
|
|
2635
|
+
<a id="a49742e8c3a8fe598a0945a8d8ff394d0"></a>
|
|
2636
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a49742e8c3a8fe598a0945a8d8ff394d0">◆ </a></span>_svfir</h2>
|
|
2637
|
+
|
|
2638
|
+
<div class="memitem">
|
|
2639
|
+
<div class="memproto">
|
|
2640
|
+
<table class="mlabels">
|
|
2641
|
+
<tr>
|
|
2642
|
+
<td class="mlabels-left">
|
|
2643
|
+
<table class="memname">
|
|
2644
|
+
<tr>
|
|
2645
|
+
<td class="memname"><a class="el" href="classSVF_1_1SVFIR.html">SVFIR</a>* SVF::AbstractExecution::_svfir</td>
|
|
2646
|
+
</tr>
|
|
2647
|
+
</table>
|
|
2648
|
+
</td>
|
|
2649
|
+
<td class="mlabels-right">
|
|
2650
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2651
|
+
</tr>
|
|
2652
|
+
</table>
|
|
2653
|
+
</div><div class="memdoc">
|
|
2654
|
+
|
|
2655
|
+
<p>protected data members, also used in subclasses </p>
|
|
2656
|
+
|
|
2657
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00235">235</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2658
|
+
|
|
2659
|
+
</div>
|
|
2660
|
+
</div>
|
|
2661
|
+
<a id="a5e24bceb3d6961117651dbc65e9a097a"></a>
|
|
2662
|
+
<h2 class="memtitle"><span class="permalink"><a href="#a5e24bceb3d6961117651dbc65e9a097a">◆ </a></span>_svfir2ExeState</h2>
|
|
2663
|
+
|
|
2664
|
+
<div class="memitem">
|
|
2665
|
+
<div class="memproto">
|
|
2666
|
+
<table class="mlabels">
|
|
2667
|
+
<tr>
|
|
2668
|
+
<td class="mlabels-left">
|
|
2669
|
+
<table class="memname">
|
|
2670
|
+
<tr>
|
|
2671
|
+
<td class="memname"><a class="el" href="classSVF_1_1SVFIR2ItvExeState.html">SVFIR2ItvExeState</a>* SVF::AbstractExecution::_svfir2ExeState</td>
|
|
2672
|
+
</tr>
|
|
2673
|
+
</table>
|
|
2674
|
+
</td>
|
|
2675
|
+
<td class="mlabels-right">
|
|
2676
|
+
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
|
|
2677
|
+
</tr>
|
|
2678
|
+
</table>
|
|
2679
|
+
</div><div class="memdoc">
|
|
2680
|
+
|
|
2681
|
+
<p>Execution State, used to store the Interval Value of every <a class="el" href="namespaceSVF.html" title="for isBitcode">SVF</a> variable. </p>
|
|
2682
|
+
|
|
2683
|
+
<p class="definition">Definition at line <a class="el" href="AbstractExecution_8h_source.html#l00238">238</a> of file <a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a>.</p>
|
|
2684
|
+
|
|
2685
|
+
</div>
|
|
2686
|
+
</div>
|
|
2687
|
+
<hr/>The documentation for this class was generated from the following files:<ul>
|
|
2688
|
+
<li>/home/runner/work/SVF/SVF/svf/include/AE/Svfexe/<a class="el" href="AbstractExecution_8h_source.html">AbstractExecution.h</a></li>
|
|
2689
|
+
<li>/home/runner/work/SVF/SVF/svf/lib/AE/Svfexe/<a class="el" href="AbstractExecution_8cpp_source.html">AbstractExecution.cpp</a></li>
|
|
2690
|
+
</ul>
|
|
2691
|
+
</div><!-- contents -->
|
|
2692
|
+
<div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a0df409a67428e528321869d201f2a474"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a0df409a67428e528321869d201f2a474">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(const Data &data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00165">WorkList.h:165</a></div></div>
|
|
2693
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_adb82778157e0f5e7a2ea4d803bcd07ad"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#adb82778157e0f5e7a2ea4d803bcd07ad">SVF::SVFIR2ItvExeState::translateCall</a></div><div class="ttdeci">void translateCall(const CallPE *callPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00930">SVFIR2ItvExeState.cpp:930</a></div></div>
|
|
2694
|
+
<div class="ttc" id="aclassSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00364">SVFStatements.h:364</a></div></div>
|
|
2695
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_a90e39f78f4908f8a8ef3948d9158791c"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#a90e39f78f4908f8a8ef3948d9158791c">SVF::SVFFunction::getReachableBBs</a></div><div class="ttdeci">const std::vector< const SVFBasicBlock * > & getReachableBBs() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00451">SVFValue.h:451</a></div></div>
|
|
2696
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a28df4f2bd5b337468f254cd609adb25f"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a28df4f2bd5b337468f254cd609adb25f">SVF::AbstractExecution::hasBranchES</a></div><div class="ttdeci">bool hasBranchES(const IntraCFGEdge *intraEdge, IntervalExeState &es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00564">AbstractExecution.cpp:564</a></div></div>
|
|
2697
|
+
<div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00200">WorkList.h:200</a></div></div>
|
|
2698
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ad36d48c0ef82de915d9339c4f47cbd70"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ad36d48c0ef82de915d9339c4f47cbd70">SVF::AbstractExecution::_kind</a></div><div class="ttdeci">AEKind _kind</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00243">AbstractExecution.h:243</a></div></div>
|
|
2699
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_adc740771e712644d08f95fc6c488c1af"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#adc740771e712644d08f95fc6c488c1af">SVF::AbstractExecution::hasSwitchBranchES</a></div><div class="ttdeci">bool hasSwitchBranchES(const SVFVar *var, s64_t succ, IntervalExeState &es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00520">AbstractExecution.cpp:520</a></div></div>
|
|
2700
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_aff1c9582db75361b68aaaf0c4b8b6f0d"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#aff1c9582db75361b68aaaf0c4b8b6f0d">SVF::AbstractExecution::directCallFunPass</a></div><div class="ttdeci">void directCallFunPass(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00693">AbstractExecution.cpp:693</a></div></div>
|
|
2701
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html_a960ec3359dfcb5e89fb66120c868ac5e"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#a960ec3359dfcb5e89fb66120c868ac5e">SVF::IntervalExeState::load</a></div><div class="ttdeci">IntervalValue & load(u32_t addr) override</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00547">IntervalExeState.h:547</a></div></div>
|
|
2702
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a2d2131128ceb3362b5dc89317cfd88a0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a2d2131128ceb3362b5dc89317cfd88a0">SVF::SVFIR::getIndirectCallsites</a></div><div class="ttdeci">const CallSiteToFunPtrMap & getIndirectCallsites() const</div><div class="ttdoc">Add/get indirect callsites.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00337">SVFIR.h:337</a></div></div>
|
|
2703
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html_a056e0db56033ac4dc041e6d82d614dbd"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#a056e0db56033ac4dc041e6d82d614dbd">SVF::IntervalExeState::getAddrs</a></div><div class="ttdeci">Addrs & getAddrs(u32_t id) override</div><div class="ttdoc">get memory addresses of variable</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00452">IntervalExeState.h:452</a></div></div>
|
|
2704
|
+
<div class="ttc" id="aCommandLine_8h_html_a2429346d37bd4c40889bd7c6d319d9da"><div class="ttname"><a href="CommandLine_8h.html#a2429346d37bd4c40889bd7c6d319d9da">u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="CommandLine_8h_source.html#l00018">CommandLine.h:18</a></div></div>
|
|
2705
|
+
<div class="ttc" id="aclassSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00313">SVFStatements.h:313</a></div></div>
|
|
2706
|
+
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_a739ab04e16ec1156be71b29d49998a4f"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a739ab04e16ec1156be71b29d49998a4f">SVF::IntervalValue::plus_infinity</a></div><div class="ttdeci">static NumericLiteral plus_infinity()</div><div class="ttdoc">Get plus infinity +oo.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00072">IntervalValue.h:72</a></div></div>
|
|
2707
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a640e6714576772f9f1bac826ba93707d"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a640e6714576772f9f1bac826ba93707d">SVF::AbstractExecution::_CFBlockG</a></div><div class="ttdeci">CFBasicBlockGraph * _CFBlockG</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00270">AbstractExecution.h:270</a></div></div>
|
|
2708
|
+
<div class="ttc" id="aclassSVF_1_1SVFModule_html_abbaf48d9702ec1f38dc6ae137ca630a1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#abbaf48d9702ec1f38dc6ae137ca630a1">SVF::SVFModule::getFunctionSet</a></div><div class="ttdeci">const FunctionSetType & getFunctionSet() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00216">SVFModule.h:216</a></div></div>
|
|
2709
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html">SVF::CFBasicBlockGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8h_source.html#l00035">CFBasicBlockGBuilder.h:35</a></div></div>
|
|
2710
|
+
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00384">GenericGraph.h:384</a></div></div>
|
|
2711
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a319fe24ebb925f70fde574d5b17c3b98"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a319fe24ebb925f70fde574d5b17c3b98">SVF::AbstractExecution::isExtCall</a></div><div class="ttdeci">bool isExtCall(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00652">AbstractExecution.cpp:652</a></div></div>
|
|
2712
|
+
<div class="ttc" id="aclassSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00761">SVFStatements.h:761</a></div></div>
|
|
2713
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ab5021d59a929f4eaf5e59d911036d201"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ab5021d59a929f4eaf5e59d911036d201">SVF::AbstractExecution::_icfg</a></div><div class="ttdeci">ICFG * _icfg</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00241">AbstractExecution.h:241</a></div></div>
|
|
2714
|
+
<div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a5c6efcc023e90ef2e618586091958c59"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a5c6efcc023e90ef2e618586091958c59">SVF::MultiOpndStmt::getOpVarID</a></div><div class="ttdeci">NodeID getOpVarID(u32_t pos) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00284">SVFStatements.cpp:284</a></div></div>
|
|
2715
|
+
<div class="ttc" id="aclassSVF_1_1RetICFGNode_html"><div class="ttname"><a href="classSVF_1_1RetICFGNode.html">SVF::RetICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00487">ICFGNode.h:487</a></div></div>
|
|
2716
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a604126e59364cb56b44a88cae5afbfb8"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a604126e59364cb56b44a88cae5afbfb8">SVF::SVFIR2ItvExeState::translateSelect</a></div><div class="ttdeci">void translateSelect(const SelectStmt *select)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00868">SVFIR2ItvExeState.cpp:868</a></div></div>
|
|
2717
|
+
<div class="ttc" id="aclassSVF_1_1IRGraph_html_a43514023a4f4d0c32f536f51443b0efc"><div class="ttname"><a href="classSVF_1_1IRGraph.html#a43514023a4f4d0c32f536f51443b0efc">SVF::IRGraph::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const SVFValue *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00138">IRGraph.h:138</a></div></div>
|
|
2718
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a6cbc336372afb947c783fb14c45426df"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a6cbc336372afb947c783fb14c45426df">SVF::AbstractExecution::handleCallSite</a></div><div class="ttdeci">virtual void handleCallSite(const ICFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00621">AbstractExecution.cpp:621</a></div></div>
|
|
2719
|
+
<div class="ttc" id="aclassSVF_1_1CallICFGNode_html_a90fd0b8e44fba1a7eb76d15bce085d66"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#a90fd0b8e44fba1a7eb76d15bce085d66">SVF::CallICFGNode::getCallSite</a></div><div class="ttdeci">const SVFInstruction * getCallSite() const</div><div class="ttdoc">Return callsite.</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00409">ICFGNode.h:409</a></div></div>
|
|
2720
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockNode_html_ac468c52cc443f1137f6d5fb510a8ac46"><div class="ttname"><a href="classSVF_1_1CFBasicBlockNode.html#ac468c52cc443f1137f6d5fb510a8ac46">SVF::CFBasicBlockNode::hasIncomingEdge</a></div><div class="ttdeci">bool hasIncomingEdge() const</div><div class="ttdoc">Has incoming/outgoing edge set.</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00207">CFBasicBlockG.h:207</a></div></div>
|
|
2721
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ac7a25ad5cbc1a6132869ae54b805f73a"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ac7a25ad5cbc1a6132869ae54b805f73a">SVF::AbstractExecution::hasCmpBranchES</a></div><div class="ttdeci">bool hasCmpBranchES(const CmpStmt *cmpStmt, s64_t succ, IntervalExeState &es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00290">AbstractExecution.cpp:290</a></div></div>
|
|
2722
|
+
<div class="ttc" id="anamespaceSVF_html_a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1"><div class="ttname"><a href="namespaceSVF.html#a41375daa7cc99317d0aa2a21dc643b88a53d18d0ea8b11173db3d2f60f838ffe1">SVF::AEKind::AbstractExecution</a></div><div class="ttdeci">@ AbstractExecution</div></div>
|
|
2723
|
+
<div class="ttc" id="aclassSVF_1_1ICFGNode_html_a6c68f52dd90728073fb79141df9b0661"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#a6c68f52dd90728073fb79141df9b0661">SVF::ICFGNode::getSVFStmts</a></div><div class="ttdeci">const SVFStmtList & getSVFStmts() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00127">ICFGNode.h:127</a></div></div>
|
|
2724
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af7f42ee51b03b1aaaee18f10eec0c2b9"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af7f42ee51b03b1aaaee18f10eec0c2b9">SVF::SVFIR2ItvExeState::translateAddr</a></div><div class="ttdeci">void translateAddr(const AddrStmt *addr)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00469">SVFIR2ItvExeState.cpp:469</a></div></div>
|
|
2725
|
+
<div class="ttc" id="aclassSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00829">SVFStatements.h:829</a></div></div>
|
|
2726
|
+
<div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a7c9b7e5fe37ae31ba84d167945ca57df"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a7c9b7e5fe37ae31ba84d167945ca57df">SVF::PointerAnalysis::getPTACallGraph</a></div><div class="ttdeci">PTACallGraph * getPTACallGraph() const</div><div class="ttdoc">Return call graph.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00171">PointerAnalysis.h:171</a></div></div>
|
|
2727
|
+
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_a144e17cec654e83654298b379ed4ce9f"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a144e17cec654e83654298b379ed4ce9f">SVF::IntervalValue::meet_with</a></div><div class="ttdeci">void meet_with(const IntervalValue &other)</div><div class="ttdoc">Return a intersected IntervalValue.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00408">IntervalValue.h:408</a></div></div>
|
|
2728
|
+
<div class="ttc" id="aclassSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00618">SVFStatements.h:618</a></div></div>
|
|
2729
|
+
<div class="ttc" id="aclassSVF_1_1CmpStmt_html"><div class="ttname"><a href="classSVF_1_1CmpStmt.html">SVF::CmpStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00884">SVFStatements.h:884</a></div></div>
|
|
2730
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a5172791c4432a4c4ab0f7e97e7b3b596"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a5172791c4432a4c4ab0f7e97e7b3b596">SVF::AEAPI::setModule</a></div><div class="ttdeci">void setModule(SVFIR *svfModule)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00305">AbstractExecution.h:305</a></div></div>
|
|
2731
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a5e24bceb3d6961117651dbc65e9a097a"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a5e24bceb3d6961117651dbc65e9a097a">SVF::AbstractExecution::_svfir2ExeState</a></div><div class="ttdeci">SVFIR2ItvExeState * _svfir2ExeState</div><div class="ttdoc">Execution State, used to store the Interval Value of every SVF variable.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00238">AbstractExecution.h:238</a></div></div>
|
|
2732
|
+
<div class="ttc" id="aclassSVF_1_1SVFModule_html_afdb11f5fcbb6e7ed2689e3387bb78850"><div class="ttname"><a href="classSVF_1_1SVFModule.html#afdb11f5fcbb6e7ed2689e3387bb78850">SVF::SVFModule::getSVFFunction</a></div><div class="ttdeci">const SVFFunction * getSVFFunction(const std::string &name)</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00048">SVFModule.cpp:48</a></div></div>
|
|
2733
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aac5cc8767eb750bf121f1897788dee24"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aac5cc8767eb750bf121f1897788dee24">SVF::SVFIR2ItvExeState::translateCmp</a></div><div class="ttdeci">void translateCmp(const CmpStmt *cmp)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00557">SVFIR2ItvExeState.cpp:557</a></div></div>
|
|
2734
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_aa220cdcd1653998d684ec14fe729932d"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#aa220cdcd1653998d684ec14fe729932d">SVF::AbstractExecution::recursiveCallPass</a></div><div class="ttdeci">void recursiveCallPass(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00671">AbstractExecution.cpp:671</a></div></div>
|
|
2735
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aa274b5b4e18c28ec8035ca1b073aacfc"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aa274b5b4e18c28ec8035ca1b073aacfc">SVF::SVFIR2ItvExeState::translateGep</a></div><div class="ttdeci">void translateGep(const GepStmt *gep)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00842">SVFIR2ItvExeState.cpp:842</a></div></div>
|
|
2736
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_aa964763a5e9e99276707bd6678d1f37f"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#aa964763a5e9e99276707bd6678d1f37f">SVF::AbstractExecution::widenFixpointPass</a></div><div class="ttdeci">bool widenFixpointPass(const CFBasicBlockNode *cycle_head, IntervalExeState &pre_es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00829">AbstractExecution.cpp:829</a></div></div>
|
|
2737
|
+
<div class="ttc" id="aclassSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
|
|
2738
|
+
<div class="ttc" id="aclassSVF_1_1SVFVar_html_ac2db6304ea5526fb446ae882983beeb0"><div class="ttname"><a href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">SVF::SVFVar::getValue</a></div><div class="ttdeci">const SVFValue * getValue() const</div><div class="ttdoc">Get/has methods of the components.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00094">SVFVariables.h:94</a></div></div>
|
|
2739
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_a2dc09f4a21cf629ebe500f856cf86bb4"><div class="ttname"><a href="classSVF_1_1AEAPI.html#a2dc09f4a21cf629ebe500f856cf86bb4">SVF::AEAPI::collectCheckPoint</a></div><div class="ttdeci">void collectCheckPoint()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01313">AbstractExecution.cpp:1313</a></div></div>
|
|
2740
|
+
<div class="ttc" id="aclassSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
|
|
2741
|
+
<div class="ttc" id="aclassSVF_1_1AEStat_html_a798d07cc0a36ce0d9010ab86d1ec216f"><div class="ttname"><a href="classSVF_1_1AEStat.html#a798d07cc0a36ce0d9010ab86d1ec216f">SVF::AEStat::performStat</a></div><div class="ttdeci">void performStat() override</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01085">AbstractExecution.cpp:1085</a></div></div>
|
|
2742
|
+
<div class="ttc" id="aclassSVF_1_1SCCDetection_html_a123b5006a6da7053e5e357140da3c5a3"><div class="ttname"><a href="classSVF_1_1SCCDetection.html#a123b5006a6da7053e5e357140da3c5a3">SVF::SCCDetection::find</a></div><div class="ttdeci">void find(void)</div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00308">SCC.h:308</a></div></div>
|
|
2743
|
+
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_a43f48c744f7bda0dc689b8f186449371"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#a43f48c744f7bda0dc689b8f186449371">SVF::IntervalValue::minus_infinity</a></div><div class="ttdeci">static NumericLiteral minus_infinity()</div><div class="ttdoc">Get minus infinity -oo.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00066">IntervalValue.h:66</a></div></div>
|
|
2744
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ac8af7bb8a5442ffd885249cecc5c0f02"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ac8af7bb8a5442ffd885249cecc5c0f02">SVF::AbstractExecution::isGlobalEntry</a></div><div class="ttdeci">bool isGlobalEntry(const CFBasicBlockNode *block)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00282">AbstractExecution.cpp:282</a></div></div>
|
|
2745
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_ae00e5398cbeb9aa1cfc464da4250a91e"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#ae00e5398cbeb9aa1cfc464da4250a91e">SVF::SVFIR2ItvExeState::translatePhi</a></div><div class="ttdeci">void translatePhi(const PhiStmt *phi)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00896">SVFIR2ItvExeState.cpp:896</a></div></div>
|
|
2746
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a97c5745ddcd0ce72e65dee09ff7afb42"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a97c5745ddcd0ce72e65dee09ff7afb42">SVF::AbstractExecution::SkipRecursiveCall</a></div><div class="ttdeci">virtual void SkipRecursiveCall(const CallICFGNode *callnode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00958">AbstractExecution.cpp:958</a></div></div>
|
|
2747
|
+
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_af8be90fc1b61103187908dce4ba68001"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#af8be90fc1b61103187908dce4ba68001">SVF::IntervalValue::isBottom</a></div><div class="ttdeci">bool isBottom() const override</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00060">IntervalValue.h:60</a></div></div>
|
|
2748
|
+
<div class="ttc" id="aclassSVF_1_1SVFVar_html_a3b61042079a6c9dc395f38925c6a1271"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a3b61042079a6c9dc395f38925c6a1271">SVF::SVFVar::isPointer</a></div><div class="ttdeci">virtual bool isPointer() const</div><div class="ttdoc">Whether it is a pointer.</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00117">SVFVariables.h:117</a></div></div>
|
|
2749
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ac7b2e6bdccab5a507c9e8db8ea4682d3"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ac7b2e6bdccab5a507c9e8db8ea4682d3">SVF::AbstractExecution::_recursiveFuns</a></div><div class="ttdeci">Set< const SVFFunction * > _recursiveFuns</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00275">AbstractExecution.h:275</a></div></div>
|
|
2750
|
+
<div class="ttc" id="aclassSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00558">SVFStatements.h:558</a></div></div>
|
|
2751
|
+
<div class="ttc" id="aclassSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00180">GenericGraph.h:180</a></div></div>
|
|
2752
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a48fec38aad1c2a9a140ee94e9fdd7e9b"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a48fec38aad1c2a9a140ee94e9fdd7e9b">SVF::SVFIR2ItvExeState::getAddrs</a></div><div class="ttdeci">Addrs & getAddrs(u32_t id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00104">SVFIR2ItvExeState.h:104</a></div></div>
|
|
2753
|
+
<div class="ttc" id="aclassSVF_1_1WTOComponent_html"><div class="ttname"><a href="classSVF_1_1WTOComponent.html">SVF::WTOComponent</a></div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00271">WTO.h:271</a></div></div>
|
|
2754
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a91a2739c4fec2cc29c560bcf8e5e420e"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a91a2739c4fec2cc29c560bcf8e5e420e">SVF::AbstractExecution::_funcToWTO</a></div><div class="ttdeci">Map< const SVFFunction *, CFBasicBlockGWTO * > _funcToWTO</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00274">AbstractExecution.h:274</a></div></div>
|
|
2755
|
+
<div class="ttc" id="aclassSVF_1_1IntervalValue_html_add3acad151d5af6c9a5f692f7a01e65b"><div class="ttname"><a href="classSVF_1_1IntervalValue.html#add3acad151d5af6c9a5f692f7a01e65b">SVF::IntervalValue::top</a></div><div class="ttdeci">static IntervalValue top()</div><div class="ttdoc">Create the IntervalValue [-oo, +oo].</div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00083">IntervalValue.h:83</a></div></div>
|
|
2756
|
+
<div class="ttc" id="aclassSVF_1_1WTO_html_a13e9082913aa4a14065687ccdd47642d"><div class="ttname"><a href="classSVF_1_1WTO.html#a13e9082913aa4a14065687ccdd47642d">SVF::WTO::begin</a></div><div class="ttdeci">Iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00583">WTO.h:583</a></div></div>
|
|
2757
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a8f2a564370d9b9fb05e139c45eeaba68"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a8f2a564370d9b9fb05e139c45eeaba68">SVF::SVFIR2ItvExeState::translateLoad</a></div><div class="ttdeci">void translateLoad(const LoadStmt *load)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00741">SVFIR2ItvExeState.cpp:741</a></div></div>
|
|
2758
|
+
<div class="ttc" id="aclassSVF_1_1AssignStmt_html_a4cec89489e82c60c287cae3327f3f01d"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">SVF::AssignStmt::getRHSVarID</a></div><div class="ttdeci">NodeID getRHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00298">SVFStatements.h:298</a></div></div>
|
|
2759
|
+
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00241">SVFUtil.h:241</a></div></div>
|
|
2760
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html">SVF::SVFIR2ItvExeState</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00041">SVFIR2ItvExeState.h:41</a></div></div>
|
|
2761
|
+
<div class="ttc" id="aclassSVF_1_1SVFStat_html_a730cc814fede3edb563aa9957c869e9e"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a730cc814fede3edb563aa9957c869e9e">SVF::SVFStat::startClk</a></div><div class="ttdeci">virtual void startClk()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00058">SVFStat.h:58</a></div></div>
|
|
2762
|
+
<div class="ttc" id="aclassSVF_1_1WTO_html_a22b67a51964cb1d7882aab7e74b026f2"><div class="ttname"><a href="classSVF_1_1WTO.html#a22b67a51964cb1d7882aab7e74b026f2">SVF::WTO::end</a></div><div class="ttdeci">Iterator end() const</div><div class="ttdoc">End iterator over the components.</div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00589">WTO.h:589</a></div></div>
|
|
2763
|
+
<div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html">SVF::BinaryOPStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00970">SVFStatements.h:970</a></div></div>
|
|
2764
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a1d725fe50a7084bfa18bd47b941af885"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a1d725fe50a7084bfa18bd47b941af885">SVF::AbstractExecution::handleSVFStatement</a></div><div class="ttdeci">virtual void handleSVFStatement(const SVFStmt *stmt)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00899">AbstractExecution.cpp:899</a></div></div>
|
|
2765
|
+
<div class="ttc" id="aclassSVF_1_1SVFBasicBlock_html"><div class="ttname"><a href="classSVF_1_1SVFBasicBlock.html">SVF::SVFBasicBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00527">SVFValue.h:527</a></div></div>
|
|
2766
|
+
<div class="ttc" id="aclassSVF_1_1StoreStmt_html"><div class="ttname"><a href="classSVF_1_1StoreStmt.html">SVF::StoreStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00400">SVFStatements.h:400</a></div></div>
|
|
2767
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a66c426719f583653cb70189f01d6fda5"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a66c426719f583653cb70189f01d6fda5">SVF::SVFIR2ItvExeState::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00163">SVFIR2ItvExeState.h:163</a></div></div>
|
|
2768
|
+
<div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00177">SVFValue.h:177</a></div></div>
|
|
2769
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a31e299f91eed29d1a8db3b884d57d1dc"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a31e299f91eed29d1a8db3b884d57d1dc">SVF::SVFIR2ItvExeState::translateRet</a></div><div class="ttdeci">void translateRet(const RetPE *retPE)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00945">SVFIR2ItvExeState.cpp:945</a></div></div>
|
|
2770
|
+
<div class="ttc" id="aclassSVF_1_1Options_html_ab25f7ec430ba1d41597fc409b758b193"><div class="ttname"><a href="classSVF_1_1Options.html#ab25f7ec430ba1d41597fc409b758b193">SVF::Options::WidenDelay</a></div><div class="ttdeci">static const Option< u32_t > WidenDelay</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00265">Options.h:265</a></div></div>
|
|
2771
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a449ee8f244120866037c7f6d2ee5fc13"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a449ee8f244120866037c7f6d2ee5fc13">SVF::SVFIR2ItvExeState::translateBinary</a></div><div class="ttdeci">void translateBinary(const BinaryOPStmt *binary)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00495">SVFIR2ItvExeState.cpp:495</a></div></div>
|
|
2772
|
+
<div class="ttc" id="aclassSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00385">ICFGNode.h:385</a></div></div>
|
|
2773
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a7e1c3edfa546182ad394116b37b834f9"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a7e1c3edfa546182ad394116b37b834f9">SVF::AbstractExecution::SkipRecursiveFunc</a></div><div class="ttdeci">virtual void SkipRecursiveFunc(const SVFFunction *func)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00985">AbstractExecution.cpp:985</a></div></div>
|
|
2774
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a740648f04067e6587eab8f328d57ce2c"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a740648f04067e6587eab8f328d57ce2c">SVF::AbstractExecution::_postES</a></div><div class="ttdeci">Map< const CFBasicBlockNode *, IntervalExeState > _postES</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00273">AbstractExecution.h:273</a></div></div>
|
|
2775
|
+
<div class="ttc" id="aclassSVF_1_1ICFG_html_a5f2c0aaba07d6fdd63058da0fb60ca8b"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">SVF::ICFG::getICFGNode</a></div><div class="ttdeci">ICFGNode * getICFGNode(NodeID id) const</div><div class="ttdoc">Get a ICFG node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00088">ICFG.h:88</a></div></div>
|
|
2776
|
+
<div class="ttc" id="aclassSVF_1_1IntraCFGEdge_html"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html">SVF::IntraCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00113">ICFGEdge.h:113</a></div></div>
|
|
2777
|
+
<div class="ttc" id="aclassSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00297">SVFValue.h:297</a></div></div>
|
|
2778
|
+
<div class="ttc" id="aclassSVF_1_1PointerAnalysis_html_a0bddf297a2d8cd59ce9a232f0229f248"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0bddf297a2d8cd59ce9a232f0229f248">SVF::PointerAnalysis::getCallGraphSCC</a></div><div class="ttdeci">CallGraphSCC * getCallGraphSCC() const</div><div class="ttdoc">Return call graph SCC.</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00176">PointerAnalysis.h:176</a></div></div>
|
|
2779
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a53f3b9c51ed8648f14ecb703e9fe67ae"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a53f3b9c51ed8648f14ecb703e9fe67ae">SVF::AbstractExecution::_ander</a></div><div class="ttdeci">AndersenWaveDiff * _ander</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00271">AbstractExecution.h:271</a></div></div>
|
|
2780
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a209315b8ebebe7fae08ad978bc82f228"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a209315b8ebebe7fae08ad978bc82f228">SVF::AbstractExecution::_preES</a></div><div class="ttdeci">Map< const CFBasicBlockNode *, IntervalExeState > _preES</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00272">AbstractExecution.h:272</a></div></div>
|
|
2781
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_adc6fd1004f4277cb4d6c8bb0dacf3208"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#adc6fd1004f4277cb4d6c8bb0dacf3208">SVF::AbstractExecution::AEStat</a></div><div class="ttdeci">friend class AEStat</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00108">AbstractExecution.h:108</a></div></div>
|
|
2782
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_aed2e41879bae8389c49e69356b7aaac5"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#aed2e41879bae8389c49e69356b7aaac5">SVF::SVFIR2ItvExeState::translateStore</a></div><div class="ttdeci">void translateStore(const StoreStmt *store)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00783">SVFIR2ItvExeState.cpp:783</a></div></div>
|
|
2783
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a25f0496187622b156bafc49f34fffeaf"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf">SVF::CFBasicBlockGBuilder::build</a></div><div class="ttdeci">virtual void build(ICFG *icfg)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00247">CFBasicBlockGBuilder.cpp:247</a></div></div>
|
|
2784
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGraph_html_a54200b5a7c41c2ba19660da34c295e81"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGraph.html#a54200b5a7c41c2ba19660da34c295e81">SVF::CFBasicBlockGraph::getCFBasicBlockNode</a></div><div class="ttdeci">CFBasicBlockNode * getCFBasicBlockNode(u32_t id) const</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00331">CFBasicBlockG.h:331</a></div></div>
|
|
2785
|
+
<div class="ttc" id="aclassSVF_1_1WTONode_html"><div class="ttname"><a href="classSVF_1_1WTONode.html">SVF::WTONode</a></div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00045">WTO.h:45</a></div></div>
|
|
2786
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockNode_html_afdad57a83c392a8b14b838ecb58f9ff7"><div class="ttname"><a href="classSVF_1_1CFBasicBlockNode.html#afdad57a83c392a8b14b838ecb58f9ff7">SVF::CFBasicBlockNode::getICFGNodes</a></div><div class="ttdeci">const std::vector< const ICFGNode * > & getICFGNodes() const</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00153">CFBasicBlockG.h:153</a></div></div>
|
|
2787
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ae641b5687513661a2542e8318430d760"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ae641b5687513661a2542e8318430d760">SVF::AbstractExecution::markRecursiveFuns</a></div><div class="ttdeci">void markRecursiveFuns()</div><div class="ttdoc">mark recursive functions by detecting SCC in callgraph</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00153">AbstractExecution.cpp:153</a></div></div>
|
|
2788
|
+
<div class="ttc" id="aclassSVF_1_1SVFStmt_html"><div class="ttname"><a href="classSVF_1_1SVFStmt.html">SVF::SVFStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00051">SVFStatements.h:51</a></div></div>
|
|
2789
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html">SVF::IntervalExeState</a></div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00407">IntervalExeState.h:407</a></div></div>
|
|
2790
|
+
<div class="ttc" id="aclassSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
|
|
2791
|
+
<div class="ttc" id="aclassSVF_1_1AEStat_html_ae2cfe939670689a4ec5030c096a5f546"><div class="ttname"><a href="classSVF_1_1AEStat.html#ae2cfe939670689a4ec5030c096a5f546">SVF::AEStat::countStateSize</a></div><div class="ttdeci">void countStateSize()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01022">AbstractExecution.cpp:1022</a></div></div>
|
|
2792
|
+
<div class="ttc" id="aclassSVF_1_1ICFG_html_ae0b05ce161d62362642803158228e5d0"><div class="ttname"><a href="classSVF_1_1ICFG.html#ae0b05ce161d62362642803158228e5d0">SVF::ICFG::getGlobalICFGNode</a></div><div class="ttdeci">GlobalICFGNode * getGlobalICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00215">ICFG.h:215</a></div></div>
|
|
2793
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a4715ec6b1aefdfd600fda8324cde2a66"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a4715ec6b1aefdfd600fda8324cde2a66">SVF::AbstractExecution::handleBlock</a></div><div class="ttdeci">void handleBlock(const CFBasicBlockNode *block)</div><div class="ttdoc">handle instructions in svf basic blocks</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00590">AbstractExecution.cpp:590</a></div></div>
|
|
2794
|
+
<div class="ttc" id="aclassSVF_1_1WTOCycle_html_a807c883d1cfe98c791c903125742f95b"><div class="ttname"><a href="classSVF_1_1WTOCycle.html#a807c883d1cfe98c791c903125742f95b">SVF::WTOCycle::begin</a></div><div class="ttdeci">Iterator begin() const</div><div class="ttdoc">Begin iterator over the components.</div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00417">WTO.h:417</a></div></div>
|
|
2795
|
+
<div class="ttc" id="aclassSVF_1_1IntraCFGEdge_html_a2657751b285cb6db8084da38b00dcab9"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html#a2657751b285cb6db8084da38b00dcab9">SVF::IntraCFGEdge::getCondition</a></div><div class="ttdeci">const SVFValue * getCondition() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00140">ICFGEdge.h:140</a></div></div>
|
|
2796
|
+
<div class="ttc" id="aclassSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00437">SVFStatements.h:437</a></div></div>
|
|
2797
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockNode_html_a439a84d7181616f62d8ebac945dbbd59"><div class="ttname"><a href="classSVF_1_1CFBasicBlockNode.html#a439a84d7181616f62d8ebac945dbbd59">SVF::CFBasicBlockNode::begin</a></div><div class="ttdeci">std::vector< const ICFGNode * >::const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00164">CFBasicBlockG.h:164</a></div></div>
|
|
2798
|
+
<div class="ttc" id="aclassSVF_1_1IntervalValue_html"><div class="ttname"><a href="classSVF_1_1IntervalValue.html">SVF::IntervalValue</a></div><div class="ttdef"><b>Definition:</b> <a href="IntervalValue_8h_source.html#l00043">IntervalValue.h:43</a></div></div>
|
|
2799
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_acf4a6c3fe5a2239512acb791b9aba854"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#acf4a6c3fe5a2239512acb791b9aba854">SVF::AbstractExecution::extCallPass</a></div><div class="ttdeci">void extCallPass(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00658">AbstractExecution.cpp:658</a></div></div>
|
|
2800
|
+
<div class="ttc" id="aclassSVF_1_1IntervalESBase_html_adb26b186ee31bce7449a7b36faa24cc2"><div class="ttname"><a href="classSVF_1_1IntervalESBase.html#adb26b186ee31bce7449a7b36faa24cc2">SVF::IntervalESBase::store</a></div><div class="ttdeci">void store(u32_t addr, const IntervalValue &val)</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00258">IntervalExeState.h:258</a></div></div>
|
|
2801
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGWTO_html"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGWTO.html">SVF::CFBasicBlockGWTO</a></div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGWTO_8h_source.html#l00045">CFBasicBlockGWTO.h:45</a></div></div>
|
|
2802
|
+
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00406">GenericGraph.h:406</a></div></div>
|
|
2803
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_afcf2f81101f1b9580d82b5c2efb83999"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#afcf2f81101f1b9580d82b5c2efb83999">SVF::SVFIR2ItvExeState::translateCopy</a></div><div class="ttdeci">void translateCopy(const CopyStmt *copy)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00812">SVFIR2ItvExeState.cpp:812</a></div></div>
|
|
2804
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html_a46ef74cd1412790b088f1d7320f57a9f"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#a46ef74cd1412790b088f1d7320f57a9f">SVF::IntervalExeState::joinWith</a></div><div class="ttdeci">void joinWith(const IntervalExeState &other)</div><div class="ttdoc">domain join with other, important! other widen this.</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8cpp_source.html#l00297">IntervalExeState.cpp:297</a></div></div>
|
|
2805
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_af80d7665d9815a80ffdba92c3ba029d1"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#af80d7665d9815a80ffdba92c3ba029d1">SVF::SVFIR2ItvExeState::moveToGlobal</a></div><div class="ttdeci">void moveToGlobal()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00132">SVFIR2ItvExeState.cpp:132</a></div></div>
|
|
2806
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_aec702d92bbba9e847a9b3eada060a2c5"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#aec702d92bbba9e847a9b3eada060a2c5">SVF::AbstractExecution::isDirectCall</a></div><div class="ttdeci">bool isDirectCall(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00688">AbstractExecution.cpp:688</a></div></div>
|
|
2807
|
+
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00047">GeneralType.h:47</a></div></div>
|
|
2808
|
+
<div class="ttc" id="aclassSVF_1_1AddressValue_html_aa7291f4b74bb824fb38b8c383fa0b6a0"><div class="ttname"><a href="classSVF_1_1AddressValue.html#aa7291f4b74bb824fb38b8c383fa0b6a0">SVF::AddressValue::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00115">AddressValue.h:115</a></div></div>
|
|
2809
|
+
<div class="ttc" id="aclassSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00474">SVFStatements.h:474</a></div></div>
|
|
2810
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a879d8affb9b113c9d2d976cdd31b60f1"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a879d8affb9b113c9d2d976cdd31b60f1">SVF::CFBasicBlockGBuilder::getCFBasicBlockGraph</a></div><div class="ttdeci">CFBasicBlockGraph * getCFBasicBlockGraph()</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8h_source.html#l00051">CFBasicBlockGBuilder.h:51</a></div></div>
|
|
2811
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html_abc8edb74e55f40dbc7bb5182d4ef1199"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#abc8edb74e55f40dbc7bb5182d4ef1199">SVF::IntervalExeState::widening</a></div><div class="ttdeci">IntervalExeState widening(const IntervalExeState &other)</div><div class="ttdoc">domain widen with other, and return the widened domain</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8cpp_source.html#l00253">IntervalExeState.cpp:253</a></div></div>
|
|
2812
|
+
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00309">SVFUtil.h:309</a></div></div>
|
|
2813
|
+
<div class="ttc" id="aclassSVF_1_1AEStat_html_a8c69d36465485cddc17eddfdeea551e0"><div class="ttname"><a href="classSVF_1_1AEStat.html#a8c69d36465485cddc17eddfdeea551e0">SVF::AEStat::getFunctionTrace</a></div><div class="ttdeci">u32_t & getFunctionTrace()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00079">AbstractExecution.h:79</a></div></div>
|
|
2814
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_accf5896d39647e41e1408fa90935b650"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#accf5896d39647e41e1408fa90935b650">SVF::AbstractExecution::indirectCallFunPass</a></div><div class="ttdeci">void indirectCallFunPass(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00716">AbstractExecution.cpp:716</a></div></div>
|
|
2815
|
+
<div class="ttc" id="aclassSVF_1_1ExeState_html_ab72f3bc855feeda75e11768ab03ad84e"><div class="ttname"><a href="classSVF_1_1ExeState.html#ab72f3bc855feeda75e11768ab03ad84e">SVF::ExeState::getInternalID</a></div><div class="ttdeci">static u32_t getInternalID(u32_t idx)</div><div class="ttdoc">Return the internal index if idx is an address otherwise return the value of idx.</div><div class="ttdef"><b>Definition:</b> <a href="ExeState_8h_source.html#l00284">ExeState.h:284</a></div></div>
|
|
2816
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a714fa1f4794008f630de415414cf8bfd"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a714fa1f4794008f630de415414cf8bfd">SVF::AbstractExecution::handleICFGNode</a></div><div class="ttdeci">virtual void handleICFGNode(const ICFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00746">AbstractExecution.cpp:746</a></div></div>
|
|
2817
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_abda052b73e869ed6d7c139ad1528da11"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00170">SVFIR.h:170</a></div></div>
|
|
2818
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a26f8c21bd96ae22ca2e72af6fbfa410c"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a26f8c21bd96ae22ca2e72af6fbfa410c">SVF::AbstractExecution::_api</a></div><div class="ttdeci">AEAPI * _api</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00239">AbstractExecution.h:239</a></div></div>
|
|
2819
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_af64d742317f2ddad87b87012225ddaaa"><div class="ttname"><a href="classSVF_1_1AEAPI.html#af64d742317f2ddad87b87012225ddaaa">SVF::AEAPI::handleExtAPI</a></div><div class="ttdeci">virtual void handleExtAPI(const CallICFGNode *call)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01247">AbstractExecution.cpp:1247</a></div></div>
|
|
2820
|
+
<div class="ttc" id="aclassSVF_1_1WTOCycle_html"><div class="ttname"><a href="classSVF_1_1WTOCycle.html">SVF::WTOCycle</a></div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00047">WTO.h:47</a></div></div>
|
|
2821
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a8ad0f3d5a0c9de60eff91fcc0dd44aae"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a8ad0f3d5a0c9de60eff91fcc0dd44aae">SVF::AbstractExecution::CallGraphSCC</a></div><div class="ttdeci">SCCDetection< PTACallGraph * > CallGraphSCC</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00112">AbstractExecution.h:112</a></div></div>
|
|
2822
|
+
<div class="ttc" id="aclassSVF_1_1AEStat_html_afaa47798ebfde513c709b46cac05294c"><div class="ttname"><a href="classSVF_1_1AEStat.html#afaa47798ebfde513c709b46cac05294c">SVF::AEStat::getICFGNodeTrace</a></div><div class="ttdeci">u32_t & getICFGNodeTrace()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00095">AbstractExecution.h:95</a></div></div>
|
|
2823
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a74a55a4d4941c85bdfed81f060049bf0"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a74a55a4d4941c85bdfed81f060049bf0">SVF::AbstractExecution::_stat</a></div><div class="ttdeci">AEStat * _stat</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00242">AbstractExecution.h:242</a></div></div>
|
|
2824
|
+
<div class="ttc" id="aclassSVF_1_1ICFG_html_a0dca4655c2f6112a5be1f921b8e81076"><div class="ttname"><a href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">SVF::ICFG::getFunEntryICFGNode</a></div><div class="ttdeci">FunEntryICFGNode * getFunEntryICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function entry node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00270">ICFG.cpp:270</a></div></div>
|
|
2825
|
+
<div class="ttc" id="aclassSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy & getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00197">GenericGraph.h:197</a></div></div>
|
|
2826
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a331ce1725ac1441f5624a2211021f967"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a331ce1725ac1441f5624a2211021f967">SVF::AbstractExecution::narrowFixpointPass</a></div><div class="ttdeci">bool narrowFixpointPass(const CFBasicBlockNode *cycle_head, IntervalExeState &pre_es)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00851">AbstractExecution.cpp:851</a></div></div>
|
|
2827
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockNode_html"><div class="ttname"><a href="classSVF_1_1CFBasicBlockNode.html">SVF::CFBasicBlockNode</a></div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00114">CFBasicBlockG.h:114</a></div></div>
|
|
2828
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html_a052d677fb5ee940ed0686f3d67d10d19"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#a052d677fb5ee940ed0686f3d67d10d19">SVF::IntervalExeState::cpyItvToLocal</a></div><div class="ttdeci">void cpyItvToLocal(u32_t varId)</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00513">IntervalExeState.h:513</a></div></div>
|
|
2829
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_ad6e18f520f6b559f2304002792f6b701"><div class="ttname"><a href="classSVF_1_1SVFIR.html#ad6e18f520f6b559f2304002792f6b701">SVF::SVFIR::getModule</a></div><div class="ttdeci">SVFModule * getModule()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00160">SVFIR.h:160</a></div></div>
|
|
2830
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ac0bcb586dffbfadeb33f501cafbaa1c9"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ac0bcb586dffbfadeb33f501cafbaa1c9">SVF::AbstractExecution::AEAPI</a></div><div class="ttdeci">friend class AEAPI</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00109">AbstractExecution.h:109</a></div></div>
|
|
2831
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a39439604f7d397f620a7639884ea5b50"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a39439604f7d397f620a7639884ea5b50">SVF::AbstractExecution::_callgraph</a></div><div class="ttdeci">PTACallGraph * _callgraph</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00236">AbstractExecution.h:236</a></div></div>
|
|
2832
|
+
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00380">GenericGraph.h:380</a></div></div>
|
|
2833
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockNode_html_a4eb0886ab2538dbe2a3dcf8ab7fc615e"><div class="ttname"><a href="classSVF_1_1CFBasicBlockNode.html#a4eb0886ab2538dbe2a3dcf8ab7fc615e">SVF::CFBasicBlockNode::end</a></div><div class="ttdeci">std::vector< const ICFGNode * >::const_iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00169">CFBasicBlockG.h:169</a></div></div>
|
|
2834
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a46364bb8814f7bf6ddd492aa7dc58ffb"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a46364bb8814f7bf6ddd492aa7dc58ffb">SVF::AbstractExecution::analyse</a></div><div class="ttdeci">void analyse()</div><div class="ttdoc">Program entry.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00167">AbstractExecution.cpp:167</a></div></div>
|
|
2835
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a49742e8c3a8fe598a0945a8d8ff394d0"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a49742e8c3a8fe598a0945a8d8ff394d0">SVF::AbstractExecution::_svfir</a></div><div class="ttdeci">SVFIR * _svfir</div><div class="ttdoc">protected data members, also used in subclasses</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00235">AbstractExecution.h:235</a></div></div>
|
|
2836
|
+
<div class="ttc" id="aclassSVF_1_1Options_html_ac9d18f2d6853f45548f4f85fa2f661c4"><div class="ttname"><a href="classSVF_1_1Options.html#ac9d18f2d6853f45548f4f85fa2f661c4">SVF::Options::PStat</a></div><div class="ttdeci">static const Option< bool > PStat</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00119">Options.h:119</a></div></div>
|
|
2837
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a6b92cdb6c5d3ae425955864536f2cba7"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a6b92cdb6c5d3ae425955864536f2cba7">SVF::AbstractExecution::isRecursiveCall</a></div><div class="ttdeci">bool isRecursiveCall(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00665">AbstractExecution.cpp:665</a></div></div>
|
|
2838
|
+
<div class="ttc" id="aclassSVF_1_1CmpStmt_html_aa6a21fb1cfbc263bb38651176c495632"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#aa6a21fb1cfbc263bb38651176c495632">SVF::CmpStmt::getPredicate</a></div><div class="ttdeci">u32_t getPredicate() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00959">SVFStatements.h:959</a></div></div>
|
|
2839
|
+
<div class="ttc" id="aclassSVF_1_1GenericGraph_html_a6885064afa211958af7b73f0233284e5"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a6885064afa211958af7b73f0233284e5">SVF::GenericGraph::hasGNode</a></div><div class="ttdeci">bool hasGNode(NodeID id) const</div><div class="ttdoc">Has a node.</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00414">GenericGraph.h:414</a></div></div>
|
|
2840
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a56434326130c8127c823097ad764947b"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a56434326130c8127c823097ad764947b">SVF::SVFIR2ItvExeState::getEs</a></div><div class="ttdeci">IntervalExeState & getEs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00054">SVFIR2ItvExeState.h:54</a></div></div>
|
|
2841
|
+
<div class="ttc" id="aclassSVF_1_1AddressValue_html"><div class="ttname"><a href="classSVF_1_1AddressValue.html">SVF::AddressValue</a></div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00043">AddressValue.h:43</a></div></div>
|
|
2842
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ab9d6ebcf67ec473ce7ad5910c74eddc1"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ab9d6ebcf67ec473ce7ad5910c74eddc1">SVF::AbstractExecution::_callSiteStack</a></div><div class="ttdeci">std::vector< const CallICFGNode * > _callSiteStack</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00247">AbstractExecution.h:247</a></div></div>
|
|
2843
|
+
<div class="ttc" id="aclassSVF_1_1AEAPI_html_aa2a97be698768ddbcab0fec27bde60c8"><div class="ttname"><a href="classSVF_1_1AEAPI.html#aa2a97be698768ddbcab0fec27bde60c8">SVF::AEAPI::checkPointAllSet</a></div><div class="ttdeci">void checkPointAllSet()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01332">AbstractExecution.cpp:1332</a></div></div>
|
|
2844
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_adb88a8be0bc1c1ac2d1546e9191c6f93"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#adb88a8be0bc1c1ac2d1546e9191c6f93">SVF::AbstractExecution::handleFunc</a></div><div class="ttdeci">virtual void handleFunc(const SVFFunction *func)</div><div class="ttdoc">handle user defined function, ext function is not included.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00875">AbstractExecution.cpp:875</a></div></div>
|
|
2845
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockNode_html_a6bfafe540f83e097370ca0dc66422214"><div class="ttname"><a href="classSVF_1_1CFBasicBlockNode.html#a6bfafe540f83e097370ca0dc66422214">SVF::CFBasicBlockNode::getInEdges</a></div><div class="ttdeci">const CFBBEdgeSetTy & getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00199">CFBasicBlockG.h:199</a></div></div>
|
|
2846
|
+
<div class="ttc" id="acJSON_8cpp_html_a7669ee67a0563250c1efaa24d130e1ac"><div class="ttname"><a href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a></div><div class="ttdeci">copy</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00414">cJSON.cpp:414</a></div></div>
|
|
2847
|
+
<div class="ttc" id="aclassSVF_1_1IntraCFGEdge_html_a106513578790247f9d96e34c8385b3d8"><div class="ttname"><a href="classSVF_1_1IntraCFGEdge.html#a106513578790247f9d96e34c8385b3d8">SVF::IntraCFGEdge::getSuccessorCondValue</a></div><div class="ttdeci">s64_t getSuccessorCondValue() const</div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00145">ICFGEdge.h:145</a></div></div>
|
|
2848
|
+
<div class="ttc" id="aclassSVF_1_1WTOCycle_html_a03fd55dd34c48d22cefcaf6dc93f734a"><div class="ttname"><a href="classSVF_1_1WTOCycle.html#a03fd55dd34c48d22cefcaf6dc93f734a">SVF::WTOCycle::end</a></div><div class="ttdeci">Iterator end() const</div><div class="ttdoc">End iterator over the components.</div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00423">WTO.h:423</a></div></div>
|
|
2849
|
+
<div class="ttc" id="aclassSVF_1_1AEStat_html_a4a08e449307cdcb56e8e32ca346d5349"><div class="ttname"><a href="classSVF_1_1AEStat.html#a4a08e449307cdcb56e8e32ca346d5349">SVF::AEStat::getBlockTrace</a></div><div class="ttdeci">u32_t & getBlockTrace()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8h_source.html#l00087">AbstractExecution.h:87</a></div></div>
|
|
2850
|
+
<div class="ttc" id="aclassSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
|
|
2851
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_af4579490ced0a02537850d62891cf5bc"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#af4579490ced0a02537850d62891cf5bc">SVF::AbstractExecution::handleCycle</a></div><div class="ttdeci">virtual void handleCycle(const CFBasicBlockGWTOCycle *cycle)</div><div class="ttdoc">handle wto cycle (loop)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00767">AbstractExecution.cpp:767</a></div></div>
|
|
2852
|
+
<div class="ttc" id="aAbstractExecution_8cpp_html_a3b70282b79998dcb9f6df78370bc1fe9"><div class="ttname"><a href="AbstractExecution_8cpp.html#a3b70282b79998dcb9f6df78370bc1fe9">_switch_lhsrhs_predicate</a></div><div class="ttdeci">Map< s32_t, s32_t > _switch_lhsrhs_predicate</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00067">AbstractExecution.cpp:67</a></div></div>
|
|
2853
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ac73335ecb1efc6c50775a205c618201f"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ac73335ecb1efc6c50775a205c618201f">SVF::AbstractExecution::hasInEdgesES</a></div><div class="ttdeci">bool hasInEdgesES(const CFBasicBlockNode *block)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00216">AbstractExecution.cpp:216</a></div></div>
|
|
2854
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html_a1e8f41b502167283ccb87bd128f232bc"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#a1e8f41b502167283ccb87bd128f232bc">SVF::IntervalExeState::narrowing</a></div><div class="ttdeci">IntervalExeState narrowing(const IntervalExeState &other)</div><div class="ttdoc">domain narrow with other, and return the narrowed domain</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8cpp_source.html#l00271">IntervalExeState.cpp:271</a></div></div>
|
|
2855
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html_ad485a35730353c0e945bc84a034d9e45"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#ad485a35730353c0e945bc84a034d9e45">SVF::IntervalExeState::inVarToAddrsTable</a></div><div class="ttdeci">bool inVarToAddrsTable(u32_t id) const override</div><div class="ttdoc">whether the variable is in varToAddrs table</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00474">IntervalExeState.h:474</a></div></div>
|
|
2856
|
+
<div class="ttc" id="aclassSVF_1_1ICFG_html_a5a00682b75726cacc1b4d88bbf40c824"><div class="ttname"><a href="classSVF_1_1ICFG.html#a5a00682b75726cacc1b4d88bbf40c824">SVF::ICFG::updateCallGraph</a></div><div class="ttdeci">void updateCallGraph(PTACallGraph *callgraph)</div><div class="ttdoc">update ICFG for indirect calls</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00459">ICFG.cpp:459</a></div></div>
|
|
2857
|
+
<div class="ttc" id="anamespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
|
|
2858
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a103b55536f1cec38edb2f169d3f94675"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a103b55536f1cec38edb2f169d3f94675">SVF::SVFIR2ItvExeState::narrowAddrs</a></div><div class="ttdeci">void narrowAddrs(IntervalExeState &lhs, const IntervalExeState &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00197">SVFIR2ItvExeState.cpp:197</a></div></div>
|
|
2859
|
+
<div class="ttc" id="aclassSVF_1_1SVFVar_html_a091ef22d4fc428985d604b03f287a941"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a091ef22d4fc428985d604b03f287a941">SVF::SVFVar::isConstDataOrAggDataButNotNullPtr</a></div><div class="ttdeci">bool isConstDataOrAggDataButNotNullPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8cpp_source.html#l00204">SVFVariables.cpp:204</a></div></div>
|
|
2860
|
+
<div class="ttc" id="aclassSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager.</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00395">Andersen.h:395</a></div></div>
|
|
2861
|
+
<div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a71a530eb9fa9f7e273e471b4a75a039e"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">SVF::MultiOpndStmt::getResID</a></div><div class="ttdeci">NodeID getResID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00289">SVFStatements.cpp:289</a></div></div>
|
|
2862
|
+
<div class="ttc" id="aclassSVF_1_1WTOCycle_html_ace60ecb07603681de5c3020d0d3c5079"><div class="ttname"><a href="classSVF_1_1WTOCycle.html#ace60ecb07603681de5c3020d0d3c5079">SVF::WTOCycle::head</a></div><div class="ttdeci">const NodeT * head() const</div><div class="ttdoc">Return the head of the cycle.</div><div class="ttdef"><b>Definition:</b> <a href="WTO_8h_source.html#l00411">WTO.h:411</a></div></div>
|
|
2863
|
+
<div class="ttc" id="aclassSVF_1_1AEStat_html_a5b246c2175c44454236242dcf426f21f"><div class="ttname"><a href="classSVF_1_1AEStat.html#a5b246c2175c44454236242dcf426f21f">SVF::AEStat::finializeStat</a></div><div class="ttdeci">void finializeStat()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01042">AbstractExecution.cpp:1042</a></div></div>
|
|
2864
|
+
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00631">SVFValue.h:631</a></div></div>
|
|
2865
|
+
<div class="ttc" id="aAbstractExecution_8cpp_html_a6baa35cec0782ac3179849752a732e5c"><div class="ttname"><a href="AbstractExecution_8cpp.html#a6baa35cec0782ac3179849752a732e5c">_reverse_predicate</a></div><div class="ttdeci">Map< s32_t, s32_t > _reverse_predicate</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00046">AbstractExecution.cpp:46</a></div></div>
|
|
2866
|
+
<div class="ttc" id="anamespaceSVF_html_ad781b0b14e89773e774072b280658ef3"><div class="ttname"><a href="namespaceSVF.html#ad781b0b14e89773e774072b280658ef3">SVF::s64_t</a></div><div class="ttdeci">signed long long s64_t</div><div class="ttdef"><b>Definition:</b> <a href="GeneralType_8h_source.html#l00049">GeneralType.h:49</a></div></div>
|
|
2867
|
+
<div class="ttc" id="aclassSVF_1_1IntervalExeState_html_a50aee49f7f34e05f7e2cb28ae55099f8"><div class="ttname"><a href="classSVF_1_1IntervalExeState.html#a50aee49f7f34e05f7e2cb28ae55099f8">SVF::IntervalExeState::inLocToValTable</a></div><div class="ttdeci">bool inLocToValTable(u32_t id) const override</div><div class="ttdoc">whether the memory address stores interval value</div><div class="ttdef"><b>Definition:</b> <a href="IntervalExeState_8h_source.html#l00495">IntervalExeState.h:495</a></div></div>
|
|
2868
|
+
<div class="ttc" id="aclassSVF_1_1CallICFGNode_html_ae23a7540609879ac0379fc53b4e7eead"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html#ae23a7540609879ac0379fc53b4e7eead">SVF::CallICFGNode::getRetICFGNode</a></div><div class="ttdeci">const RetICFGNode * getRetICFGNode() const</div><div class="ttdoc">Return callsite.</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00415">ICFGNode.h:415</a></div></div>
|
|
2869
|
+
<div class="ttc" id="aclassSVF_1_1SVFStat_html_a1b7f1e3381de87f75f06cddb9c6c1ec1"><div class="ttname"><a href="classSVF_1_1SVFStat.html#a1b7f1e3381de87f75f06cddb9c6c1ec1">SVF::SVFStat::endClk</a></div><div class="ttdeci">virtual void endClk()</div><div class="ttdef"><b>Definition:</b> <a href="SVFStat_8h_source.html#l00063">SVFStat.h:63</a></div></div>
|
|
2870
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a2e9ecde8db07741daa112649c432cbfd"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a2e9ecde8db07741daa112649c432cbfd">SVF::SVFIR2ItvExeState::setEs</a></div><div class="ttdeci">void setEs(const IntervalExeState &es)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8h_source.html#l00049">SVFIR2ItvExeState.h:49</a></div></div>
|
|
2871
|
+
<div class="ttc" id="aclassSVF_1_1AEStat_html_ae24590233a864e18a6b0948bef89201a"><div class="ttname"><a href="classSVF_1_1AEStat.html#ae24590233a864e18a6b0948bef89201a">SVF::AEStat::reportBug</a></div><div class="ttdeci">void reportBug()</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l01122">AbstractExecution.cpp:1122</a></div></div>
|
|
2872
|
+
<div class="ttc" id="aclassSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy & getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00193">GenericGraph.h:193</a></div></div>
|
|
2873
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_a7efff2047b2b6017fdd210a8679817cd"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#a7efff2047b2b6017fdd210a8679817cd">SVF::AbstractExecution::handleGlobalNode</a></div><div class="ttdeci">virtual void handleGlobalNode()</div><div class="ttdoc">Global ICFGNode is handled at the entry of the program,.</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00178">AbstractExecution.cpp:178</a></div></div>
|
|
2874
|
+
<div class="ttc" id="aclassSVF_1_1AbstractExecution_html_ad1baaa8eaad68b215f63941776e79ccf"><div class="ttname"><a href="classSVF_1_1AbstractExecution.html#ad1baaa8eaad68b215f63941776e79ccf">SVF::AbstractExecution::isIndirectCall</a></div><div class="ttdeci">bool isIndirectCall(const CallICFGNode *callNode)</div><div class="ttdef"><b>Definition:</b> <a href="AbstractExecution_8cpp_source.html#l00710">AbstractExecution.cpp:710</a></div></div>
|
|
2875
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR2ItvExeState_html_a198fd724be35f415851a2467c3930f76"><div class="ttname"><a href="classSVF_1_1SVFIR2ItvExeState.html#a198fd724be35f415851a2467c3930f76">SVF::SVFIR2ItvExeState::widenAddrs</a></div><div class="ttdeci">void widenAddrs(IntervalExeState &lhs, const IntervalExeState &rhs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR2ItvExeState_8cpp_source.html#l00159">SVFIR2ItvExeState.cpp:159</a></div></div>
|
|
2876
|
+
<div class="ttc" id="aclassSVF_1_1AddressValue_html_aed0b4789beda4980e4e215a65350f323"><div class="ttname"><a href="classSVF_1_1AddressValue.html#aed0b4789beda4980e4e215a65350f323">SVF::AddressValue::begin</a></div><div class="ttdeci">AddrSet::const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="AddressValue_8h_source.html#l00105">AddressValue.h:105</a></div></div>
|
|
2877
|
+
<!-- start footer part -->
|
|
2878
|
+
<hr class="footer"/><address class="footer"><small>
|
|
2879
|
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
|
2880
|
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
2881
|
+
</a> 1.8.17
|
|
2882
|
+
</small></address>
|
|
2883
|
+
</body>
|
|
2884
|
+
</html>
|