svf-tools 1.0.786 → 1.0.788
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +128 -122
- package/SVF-doxygen/html/CDGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8cpp.html +92 -0
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8cpp_source.html +291 -0
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8h.html +98 -0
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8h_source.html +154 -0
- package/SVF-doxygen/html/CFBasicBlockG_8cpp_source.html +49 -184
- package/SVF-doxygen/html/CFBasicBlockG_8h.html +0 -2
- package/SVF-doxygen/html/CFBasicBlockG_8h_source.html +509 -506
- package/SVF-doxygen/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/CHG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFValue_8cpp_source.html +144 -141
- package/SVF-doxygen/html/SVFValue_8h_source.html +9 -9
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/VFG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/WTO_8h_source.html +424 -372
- package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +119 -113
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGBuilder-members.html +4 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGBuilder.html +302 -124
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO-members.html +48 -47
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO.html +306 -236
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTOCycle.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTONode.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO_1_1TailBuilder-members.html +15 -14
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO_1_1TailBuilder.html +90 -44
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGWTO_1_1WTOCycleDepthBuilder.html +26 -26
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGraph-members.html +32 -36
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGraph.html +121 -254
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockNode-members.html +46 -47
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockNode.html +185 -225
- package/SVF-doxygen/html/classSVF_1_1CHGraph.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1SVFBasicBlock.html +63 -63
- package/SVF-doxygen/html/classSVF_1_1SVFFunction.html +28 -28
- package/SVF-doxygen/html/classSVF_1_1SVFG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFInstruction.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SVFLoopAndDomInfo.html +25 -22
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1VFG.html +1 -1
- package/SVF-doxygen/html/dir_445b24f35a8ddd2effd3d23ee1278e0a.html +2 -0
- package/SVF-doxygen/html/dir_fee120689dee99ef16f8bfcaa7a76083.html +2 -0
- package/SVF-doxygen/html/files.html +35 -33
- package/SVF-doxygen/html/functions.html +3 -4
- package/SVF-doxygen/html/functions_a.html +19 -10
- package/SVF-doxygen/html/functions_b.html +6 -6
- package/SVF-doxygen/html/functions_c.html +29 -29
- package/SVF-doxygen/html/functions_func.html +15 -6
- package/SVF-doxygen/html/functions_func_b.html +1 -1
- package/SVF-doxygen/html/functions_func_c.html +21 -21
- package/SVF-doxygen/html/functions_func_g.html +13 -14
- package/SVF-doxygen/html/functions_func_h.html +5 -8
- package/SVF-doxygen/html/functions_func_i.html +10 -7
- package/SVF-doxygen/html/functions_func_s.html +22 -25
- package/SVF-doxygen/html/functions_func_t.html +1 -1
- package/SVF-doxygen/html/functions_g.html +10 -11
- package/SVF-doxygen/html/functions_h.html +3 -6
- package/SVF-doxygen/html/functions_i.html +10 -7
- package/SVF-doxygen/html/functions_l.html +3 -3
- package/SVF-doxygen/html/functions_n.html +4 -4
- package/SVF-doxygen/html/functions_o.html +19 -19
- package/SVF-doxygen/html/functions_p.html +21 -17
- package/SVF-doxygen/html/functions_r.html +1 -1
- package/SVF-doxygen/html/functions_s.html +14 -17
- package/SVF-doxygen/html/functions_t.html +4 -4
- package/SVF-doxygen/html/functions_v.html +3 -3
- package/SVF-doxygen/html/functions_vars.html +3 -4
- package/SVF-doxygen/html/functions_w.html +7 -7
- package/SVF-doxygen/html/namespaceSVF.html +1 -1
- package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +2 -2
- package/SVF-doxygen/html/search/all_0.js +123 -124
- package/SVF-doxygen/html/search/all_1.js +479 -476
- package/SVF-doxygen/html/search/all_10.js +324 -324
- package/SVF-doxygen/html/search/all_11.js +224 -224
- package/SVF-doxygen/html/search/all_12.js +541 -542
- package/SVF-doxygen/html/search/all_13.js +190 -190
- package/SVF-doxygen/html/search/all_14.js +67 -67
- package/SVF-doxygen/html/search/all_15.js +170 -170
- package/SVF-doxygen/html/search/all_16.js +63 -63
- package/SVF-doxygen/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/search/all_19.js +11 -11
- package/SVF-doxygen/html/search/all_1a.js +172 -172
- package/SVF-doxygen/html/search/all_2.js +167 -167
- package/SVF-doxygen/html/search/all_3.js +642 -640
- package/SVF-doxygen/html/search/all_4.js +233 -233
- package/SVF-doxygen/html/search/all_5.js +121 -121
- package/SVF-doxygen/html/search/all_6.js +225 -225
- package/SVF-doxygen/html/search/all_7.js +1038 -1038
- package/SVF-doxygen/html/search/all_8.js +194 -195
- package/SVF-doxygen/html/search/all_9.js +608 -607
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/search/all_c.js +116 -116
- package/SVF-doxygen/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/search/all_e.js +207 -207
- package/SVF-doxygen/html/search/all_f.js +116 -116
- package/SVF-doxygen/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +80 -80
- package/SVF-doxygen/html/search/classes_3.js +37 -37
- package/SVF-doxygen/html/search/classes_4.js +9 -9
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +104 -104
- package/SVF-doxygen/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +21 -21
- package/SVF-doxygen/html/search/defines_4.js +2 -2
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +55 -53
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +12 -12
- package/SVF-doxygen/html/search/functions_1.js +359 -356
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +138 -138
- package/SVF-doxygen/html/search/functions_12.js +276 -277
- package/SVF-doxygen/html/search/functions_13.js +58 -58
- package/SVF-doxygen/html/search/functions_14.js +39 -39
- package/SVF-doxygen/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/search/functions_16.js +32 -32
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +172 -172
- package/SVF-doxygen/html/search/functions_2.js +86 -86
- package/SVF-doxygen/html/search/functions_3.js +257 -257
- package/SVF-doxygen/html/search/functions_4.js +75 -75
- package/SVF-doxygen/html/search/functions_5.js +53 -53
- package/SVF-doxygen/html/search/functions_6.js +59 -59
- package/SVF-doxygen/html/search/functions_7.js +849 -849
- package/SVF-doxygen/html/search/functions_8.js +146 -147
- package/SVF-doxygen/html/search/functions_9.js +426 -425
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +26 -26
- package/SVF-doxygen/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/search/related_d.js +11 -11
- 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 +18 -18
- package/SVF-doxygen/html/search/typedefs_1.js +26 -26
- package/SVF-doxygen/html/search/typedefs_10.js +61 -61
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/search/typedefs_13.js +35 -35
- package/SVF-doxygen/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/search/typedefs_2.js +129 -129
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/search/typedefs_6.js +55 -55
- package/SVF-doxygen/html/search/typedefs_7.js +42 -42
- 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 +15 -15
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +151 -152
- package/SVF-doxygen/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/search/variables_2.js +37 -37
- package/SVF-doxygen/html/search/variables_3.js +142 -142
- package/SVF-doxygen/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/search/variables_5.js +39 -39
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/search/variables_9.js +77 -77
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +30 -30
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html +93 -40
- 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/package.json +1 -1
- package/svf/include/AbstractExecution/WTO.h +56 -10
- package/svf/include/Graphs/CFBasicBlockG.h +62 -50
- package/svf/include/Util/CFBasicBlockGBuilder.h +59 -0
- package/svf/lib/Graphs/CFBasicBlockG.cpp +0 -111
- package/svf/lib/SVFIR/SVFValue.cpp +2 -0
- package/svf/lib/Util/CDGBuilder.cpp +5 -0
- package/svf/lib/Util/CFBasicBlockGBuilder.cpp +183 -0
package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html
CHANGED
|
@@ -175,7 +175,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
175
175
|
</table>
|
|
176
176
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
177
177
|
<div class="textblock">
|
|
178
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
178
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00502">502</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
179
179
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
180
180
|
<a id="a10af45bcbdbb34263454107c0e5184d4"></a>
|
|
181
181
|
<h2 class="memtitle"><span class="permalink"><a href="#a10af45bcbdbb34263454107c0e5184d4">◆ </a></span>NodeType</h2>
|
|
@@ -189,7 +189,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
189
189
|
</table>
|
|
190
190
|
</div><div class="memdoc">
|
|
191
191
|
|
|
192
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
192
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00505">505</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
193
193
|
|
|
194
194
|
</div>
|
|
195
195
|
</div>
|
|
@@ -218,11 +218,11 @@ Additional Inherited Members</h2></td></tr>
|
|
|
218
218
|
</table>
|
|
219
219
|
</div><div class="memdoc">
|
|
220
220
|
|
|
221
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
222
|
-
<div class="fragment"><div class="line"><a name="
|
|
223
|
-
<div class="line"><a name="
|
|
224
|
-
<div class="line"><a name="
|
|
225
|
-
<div class="line"><a name="
|
|
221
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00507">507</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
222
|
+
<div class="fragment"><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  :</div>
|
|
223
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  DOTGraphTraits<SVF::SVFIR *>(<a class="code" href="structSVF_1_1DefaultDOTGraphTraits.html#acc82bc6228128e5bb98a6b00d6dc5f77">isSimple</a>)</div>
|
|
224
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  {</div>
|
|
225
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  }</div>
|
|
226
226
|
</div><!-- fragment -->
|
|
227
227
|
</div>
|
|
228
228
|
</div>
|
|
@@ -269,10 +269,18 @@ template<class EdgeIter > </div>
|
|
|
269
269
|
</table>
|
|
270
270
|
</div><div class="memdoc">
|
|
271
271
|
|
|
272
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
273
|
-
<div class="fragment"><div class="line"><a name="
|
|
274
|
-
<div class="line"><a name="
|
|
275
|
-
<div class="line"><a name="
|
|
272
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00577">577</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
273
|
+
<div class="fragment"><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  {</div>
|
|
274
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  CFBasicBlockEdge* edge = *(EI.getCurrent());</div>
|
|
275
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  assert(edge && <span class="stringliteral">"No edge found!!"</span>);</div>
|
|
276
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">if</span> (SVFUtil::isa<CallCFGEdge>(edge->getICFGEdge()))</div>
|
|
277
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=solid,color=red"</span>;</div>
|
|
278
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa<RetCFGEdge>(edge->getICFGEdge()))</div>
|
|
279
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=solid,color=blue"</span>;</div>
|
|
280
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">else</span></div>
|
|
281
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="keywordflow">return</span> <span class="stringliteral">"style=solid"</span>;</div>
|
|
282
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
|
|
283
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  }</div>
|
|
276
284
|
</div><!-- fragment -->
|
|
277
285
|
</div>
|
|
278
286
|
</div>
|
|
@@ -312,10 +320,20 @@ template<class EdgeIter > </div>
|
|
|
312
320
|
</table>
|
|
313
321
|
</div><div class="memdoc">
|
|
314
322
|
|
|
315
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
316
|
-
<div class="fragment"><div class="line"><a name="
|
|
317
|
-
<div class="line"><a name="
|
|
318
|
-
<div class="line"><a name="
|
|
323
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00591">591</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
324
|
+
<div class="fragment"><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  {</div>
|
|
325
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  CFBasicBlockEdge* edge = *(EI.getCurrent());</div>
|
|
326
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  assert(edge && <span class="stringliteral">"No edge found!!"</span>);</div>
|
|
327
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  </div>
|
|
328
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
329
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  std::stringstream rawstr(str);</div>
|
|
330
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> CallCFGEdge* dirCall = SVFUtil::dyn_cast<CallCFGEdge>(edge->getICFGEdge()))</div>
|
|
331
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  rawstr << dirCall->getCallSite();</div>
|
|
332
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> RetCFGEdge* dirRet = SVFUtil::dyn_cast<RetCFGEdge>(edge->getICFGEdge()))</div>
|
|
333
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  rawstr << dirRet->getCallSite();</div>
|
|
334
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  </div>
|
|
335
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
336
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div>
|
|
319
337
|
</div><!-- fragment -->
|
|
320
338
|
</div>
|
|
321
339
|
</div>
|
|
@@ -345,10 +363,10 @@ template<class EdgeIter > </div>
|
|
|
345
363
|
|
|
346
364
|
<p>Return name of the graph. </p>
|
|
347
365
|
|
|
348
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
349
|
-
<div class="fragment"><div class="line"><a name="
|
|
350
|
-
<div class="line"><a name="
|
|
351
|
-
<div class="line"><a name="
|
|
366
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00513">513</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
367
|
+
<div class="fragment"><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div>
|
|
368
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">return</span> <span class="stringliteral">"CFBasicBlockGraph"</span>;</div>
|
|
369
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  }</div>
|
|
352
370
|
</div><!-- fragment -->
|
|
353
371
|
</div>
|
|
354
372
|
</div>
|
|
@@ -386,13 +404,47 @@ template<class EdgeIter > </div>
|
|
|
386
404
|
</table>
|
|
387
405
|
</div><div class="memdoc">
|
|
388
406
|
|
|
389
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
390
|
-
<div class="fragment"><div class="line"><a name="
|
|
391
|
-
<div class="line"><a name="
|
|
392
|
-
<div class="line"><a name="
|
|
393
|
-
<div class="line"><a name="
|
|
394
|
-
<div class="line"><a name="
|
|
395
|
-
<div class="line"><a name="
|
|
407
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00534">534</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
408
|
+
<div class="fragment"><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  {</div>
|
|
409
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
410
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  std::stringstream rawstr(str);</div>
|
|
411
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="keywordflow">if</span>(node->getICFGNodes().size() == 1)</div>
|
|
412
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  {</div>
|
|
413
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keyword">const</span> ICFGNode* <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> = node->getICFGNodes()[0];</div>
|
|
414
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">if</span>(SVFUtil::isa<IntraICFGNode>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>))</div>
|
|
415
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  {</div>
|
|
416
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div>
|
|
417
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  }</div>
|
|
418
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<FunEntryICFGNode>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>))</div>
|
|
419
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  {</div>
|
|
420
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  rawstr << <span class="stringliteral">"color=yellow"</span>;</div>
|
|
421
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  }</div>
|
|
422
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<FunExitICFGNode>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>))</div>
|
|
423
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  {</div>
|
|
424
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  rawstr << <span class="stringliteral">"color=green"</span>;</div>
|
|
425
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  }</div>
|
|
426
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<CallICFGNode>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>))</div>
|
|
427
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  {</div>
|
|
428
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  rawstr << <span class="stringliteral">"color=red"</span>;</div>
|
|
429
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  }</div>
|
|
430
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<RetICFGNode>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>))</div>
|
|
431
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  {</div>
|
|
432
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  rawstr << <span class="stringliteral">"color=blue"</span>;</div>
|
|
433
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  }</div>
|
|
434
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa<GlobalICFGNode>(<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>))</div>
|
|
435
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  {</div>
|
|
436
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  rawstr << <span class="stringliteral">"color=purple"</span>;</div>
|
|
437
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }</div>
|
|
438
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keywordflow">else</span></div>
|
|
439
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  assert(<span class="keyword">false</span> && <span class="stringliteral">"no such kind of node!!"</span>);</div>
|
|
440
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  }</div>
|
|
441
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">else</span></div>
|
|
442
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  {</div>
|
|
443
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  rawstr << <span class="stringliteral">"color=black"</span>;</div>
|
|
444
|
+
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  }</div>
|
|
445
|
+
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  rawstr << <span class="stringliteral">""</span>;</div>
|
|
446
|
+
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
447
|
+
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  }</div>
|
|
396
448
|
</div><!-- fragment -->
|
|
397
449
|
</div>
|
|
398
450
|
</div>
|
|
@@ -430,10 +482,10 @@ template<class EdgeIter > </div>
|
|
|
430
482
|
</table>
|
|
431
483
|
</div><div class="memdoc">
|
|
432
484
|
|
|
433
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
434
|
-
<div class="fragment"><div class="line"><a name="
|
|
435
|
-
<div class="line"><a name="
|
|
436
|
-
<div class="line"><a name="
|
|
485
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00518">518</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
486
|
+
<div class="fragment"><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  {</div>
|
|
487
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="keywordflow">return</span> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html#a66e6c63670681d78c6bd42f828b274c0">getSimpleNodeLabel</a>(node, graph);</div>
|
|
488
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  }</div>
|
|
437
489
|
</div><!-- fragment -->
|
|
438
490
|
</div>
|
|
439
491
|
</div>
|
|
@@ -473,15 +525,15 @@ template<class EdgeIter > </div>
|
|
|
473
525
|
|
|
474
526
|
<p>Return the label of an <a class="el" href="classSVF_1_1ICFG.html">ICFG</a> node. </p>
|
|
475
527
|
|
|
476
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
477
|
-
<div class="fragment"><div class="line"><a name="
|
|
478
|
-
<div class="line"><a name="
|
|
479
|
-
<div class="line"><a name="
|
|
480
|
-
<div class="line"><a name="
|
|
481
|
-
<div class="line"><a name="
|
|
482
|
-
<div class="line"><a name="
|
|
483
|
-
<div class="line"><a name="
|
|
484
|
-
<div class="line"><a name="
|
|
528
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00524">524</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
529
|
+
<div class="fragment"><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  {</div>
|
|
530
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
531
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  std::stringstream rawstr(str);</div>
|
|
532
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  rawstr << <span class="stringliteral">"NodeID: "</span> << node->getId() << <span class="stringliteral">"\n"</span>;</div>
|
|
533
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  rawstr << node->toString();</div>
|
|
534
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  </div>
|
|
535
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
536
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  }</div>
|
|
485
537
|
</div><!-- fragment -->
|
|
486
538
|
</div>
|
|
487
539
|
</div>
|
|
@@ -489,8 +541,9 @@ template<class EdgeIter > </div>
|
|
|
489
541
|
<li>/home/runner/work/SVF/SVF/svf/include/Graphs/<a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a></li>
|
|
490
542
|
</ul>
|
|
491
543
|
</div><!-- contents -->
|
|
544
|
+
<div class="ttc" id="acJSON_8cpp_html_ab6e2ea6dc7bd57d1483413449998230a"><div class="ttname"><a href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a></div><div class="ttdeci">cJSON * n</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02558">cJSON.cpp:2558</a></div></div>
|
|
492
545
|
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
493
|
-
<div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4_html_a66e6c63670681d78c6bd42f828b274c0"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html#a66e6c63670681d78c6bd42f828b274c0">SVF::DOTGraphTraits< SVF::CFBasicBlockGraph * >::getSimpleNodeLabel</a></div><div class="ttdeci">static std::string getSimpleNodeLabel(NodeType *node, SVF::CFBasicBlockGraph *)</div><div class="ttdoc">Return the label of an ICFG node.</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#
|
|
546
|
+
<div class="ttc" id="astructSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4_html_a66e6c63670681d78c6bd42f828b274c0"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html#a66e6c63670681d78c6bd42f828b274c0">SVF::DOTGraphTraits< SVF::CFBasicBlockGraph * >::getSimpleNodeLabel</a></div><div class="ttdeci">static std::string getSimpleNodeLabel(NodeType *node, SVF::CFBasicBlockGraph *)</div><div class="ttdoc">Return the label of an ICFG node.</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00524">CFBasicBlockG.h:524</a></div></div>
|
|
494
547
|
<div class="ttc" id="astructSVF_1_1DefaultDOTGraphTraits_html_acc82bc6228128e5bb98a6b00d6dc5f77"><div class="ttname"><a href="structSVF_1_1DefaultDOTGraphTraits.html#acc82bc6228128e5bb98a6b00d6dc5f77">SVF::DefaultDOTGraphTraits::isSimple</a></div><div class="ttdeci">bool isSimple()</div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00035">DOTGraphTraits.h:35</a></div></div>
|
|
495
548
|
<!-- start footer part -->
|
|
496
549
|
<hr class="footer"/><address class="footer"><small>
|
|
@@ -95,7 +95,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
95
95
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
96
96
|
<div class="textblock"><p><a class="el" href="structSVF_1_1Inverse.html">Inverse</a> <a class="el" href="structSVF_1_1GenericGraphTraits.html">GenericGraphTraits</a> specializations for call graph node, it is used for inverse ICFGTraversal. </p>
|
|
97
97
|
|
|
98
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
98
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00485">485</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
99
99
|
</div><hr/>The documentation for this struct was generated from the following file:<ul>
|
|
100
100
|
<li>/home/runner/work/SVF/SVF/svf/include/Graphs/<a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a></li>
|
|
101
101
|
</ul>
|
package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFBasicBlockGraph_01_5_01_4.html
CHANGED
|
@@ -94,7 +94,7 @@ Public Types</h2></td></tr>
|
|
|
94
94
|
</table>
|
|
95
95
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
96
96
|
<div class="textblock">
|
|
97
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
97
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00491">491</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
98
98
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
99
99
|
<a id="a0d7eb2f1c00f0499d99f5508ce5055f5"></a>
|
|
100
100
|
<h2 class="memtitle"><span class="permalink"><a href="#a0d7eb2f1c00f0499d99f5508ce5055f5">◆ </a></span>NodeRef</h2>
|
|
@@ -108,7 +108,7 @@ Public Types</h2></td></tr>
|
|
|
108
108
|
</table>
|
|
109
109
|
</div><div class="memdoc">
|
|
110
110
|
|
|
111
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
111
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00494">494</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
112
112
|
|
|
113
113
|
</div>
|
|
114
114
|
</div>
|
package/SVF-doxygen/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFBasicBlockNode_01_5_01_4.html
CHANGED
|
@@ -91,7 +91,7 @@ Additional Inherited Members</h2></td></tr>
|
|
|
91
91
|
</table>
|
|
92
92
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
93
93
|
<div class="textblock">
|
|
94
|
-
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#
|
|
94
|
+
<p class="definition">Definition at line <a class="el" href="CFBasicBlockG_8h_source.html#l00478">478</a> of file <a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a>.</p>
|
|
95
95
|
</div><hr/>The documentation for this struct was generated from the following file:<ul>
|
|
96
96
|
<li>/home/runner/work/SVF/SVF/svf/include/Graphs/<a class="el" href="CFBasicBlockG_8h_source.html">CFBasicBlockG.h</a></li>
|
|
97
97
|
</ul>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.788",
|
|
4
4
|
"description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -492,11 +492,12 @@ protected:
|
|
|
492
492
|
NodeRefToCycleDepthNumber _nodeToCDN;
|
|
493
493
|
CycleDepthNumber _num;
|
|
494
494
|
CFBasicBlockNodes _stack;
|
|
495
|
+
CFBasicBlockGraph* _graph;
|
|
495
496
|
|
|
496
497
|
public:
|
|
497
498
|
explicit CFBasicBlockGWTO() : _num(0) {}
|
|
498
499
|
|
|
499
|
-
explicit CFBasicBlockGWTO(const CFBasicBlockNode *entry) : _num(0)
|
|
500
|
+
explicit CFBasicBlockGWTO(CFBasicBlockGraph* graph, const CFBasicBlockNode *entry) : _num(0), _graph(graph)
|
|
500
501
|
{
|
|
501
502
|
build(entry);
|
|
502
503
|
}
|
|
@@ -652,12 +653,13 @@ protected:
|
|
|
652
653
|
const CFBasicBlockGWTOCycleDepth &_headWTOCycleDepth;
|
|
653
654
|
const CFBasicBlockNode *_head;
|
|
654
655
|
NodeRefToWTOCycleDepthPtr &_nodeToWTOCycleDepth;
|
|
656
|
+
CFBasicBlockGraph* _graph;
|
|
655
657
|
|
|
656
658
|
public:
|
|
657
659
|
|
|
658
|
-
explicit TailBuilder(NodeRefToWTOCycleDepthPtr &nodeToWTOCycleDepth, NodeRefSet &tails, const CFBasicBlockNode *head,
|
|
660
|
+
explicit TailBuilder(CFBasicBlockGraph* graph, NodeRefToWTOCycleDepthPtr &nodeToWTOCycleDepth, NodeRefSet &tails, const CFBasicBlockNode *head,
|
|
659
661
|
const CFBasicBlockGWTOCycleDepth &headWTOCycleDepth) : _tails(tails), _headWTOCycleDepth(headWTOCycleDepth), _head(head), _nodeToWTOCycleDepth(
|
|
660
|
-
nodeToWTOCycleDepth)
|
|
662
|
+
nodeToWTOCycleDepth), _graph(graph)
|
|
661
663
|
{
|
|
662
664
|
}
|
|
663
665
|
|
|
@@ -671,15 +673,27 @@ protected:
|
|
|
671
673
|
|
|
672
674
|
virtual void visit(const CFBasicBlockGWTONode &node) override
|
|
673
675
|
{
|
|
674
|
-
|
|
676
|
+
if(const CallICFGNode* callNode = SVFUtil::dyn_cast<CallICFGNode>(node.node()->getICFGNodes().front()))
|
|
675
677
|
{
|
|
676
|
-
const CFBasicBlockNode *succ =
|
|
678
|
+
const CFBasicBlockNode *succ = _graph->getCFBasicBlockNode(callNode->getRetICFGNode()->getId());
|
|
677
679
|
const CFBasicBlockGWTOCycleDepth &succNesting = getWTOCycleDepth(succ);
|
|
678
680
|
if (succ != _head && succNesting <= _headWTOCycleDepth)
|
|
679
681
|
{
|
|
680
682
|
_tails.insert(node.node());
|
|
681
683
|
}
|
|
682
684
|
}
|
|
685
|
+
else
|
|
686
|
+
{
|
|
687
|
+
for (const auto &edge: node.node()->getOutEdges())
|
|
688
|
+
{
|
|
689
|
+
const CFBasicBlockNode *succ = edge->getDstNode();
|
|
690
|
+
const CFBasicBlockGWTOCycleDepth &succNesting = getWTOCycleDepth(succ);
|
|
691
|
+
if (succ != _head && succNesting <= _headWTOCycleDepth)
|
|
692
|
+
{
|
|
693
|
+
_tails.insert(node.node());
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
}
|
|
683
697
|
}
|
|
684
698
|
|
|
685
699
|
protected:
|
|
@@ -751,14 +765,25 @@ protected:
|
|
|
751
765
|
const CFBasicBlockGWTOCycle *component(const CFBasicBlockNode *node)
|
|
752
766
|
{
|
|
753
767
|
WTOCompRefList partition;
|
|
754
|
-
|
|
768
|
+
if (const CallICFGNode* callNode = SVFUtil::dyn_cast<CallICFGNode>(node->getICFGNodes().front()))
|
|
755
769
|
{
|
|
756
|
-
const CFBasicBlockNode *succ = (
|
|
770
|
+
const CFBasicBlockNode *succ = _graph->getCFBasicBlockNode(callNode->getRetICFGNode()->getId());
|
|
757
771
|
if (getCDN(succ) == 0)
|
|
758
772
|
{
|
|
759
773
|
visit(succ, partition);
|
|
760
774
|
}
|
|
761
775
|
}
|
|
776
|
+
else
|
|
777
|
+
{
|
|
778
|
+
for (auto it = node->getOutEdges().begin(), et = node->getOutEdges().end(); it != et; ++it)
|
|
779
|
+
{
|
|
780
|
+
const CFBasicBlockNode *succ = (*it)->getDstNode();
|
|
781
|
+
if (getCDN(succ) == 0)
|
|
782
|
+
{
|
|
783
|
+
visit(succ, partition);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
762
787
|
const CFBasicBlockGWTOCycle *ptr = newCycle(node, partition);
|
|
763
788
|
_headToCycle.emplace(node, ptr);
|
|
764
789
|
return ptr;
|
|
@@ -776,9 +801,9 @@ protected:
|
|
|
776
801
|
head = _num;
|
|
777
802
|
setCDN(node, head);
|
|
778
803
|
loop = false;
|
|
779
|
-
|
|
804
|
+
if (const CallICFGNode* callNode = SVFUtil::dyn_cast<CallICFGNode>(node->getICFGNodes().front()))
|
|
780
805
|
{
|
|
781
|
-
const CFBasicBlockNode *succ = (
|
|
806
|
+
const CFBasicBlockNode *succ = _graph->getCFBasicBlockNode(callNode->getRetICFGNode()->getId());
|
|
782
807
|
CycleDepthNumber succ_dfn = getCDN(succ);
|
|
783
808
|
if (succ_dfn == CycleDepthNumber(0))
|
|
784
809
|
{
|
|
@@ -794,6 +819,27 @@ protected:
|
|
|
794
819
|
loop = true;
|
|
795
820
|
}
|
|
796
821
|
}
|
|
822
|
+
else
|
|
823
|
+
{
|
|
824
|
+
for (auto it = node->getOutEdges().begin(), et = node->getOutEdges().end(); it != et; ++it)
|
|
825
|
+
{
|
|
826
|
+
const CFBasicBlockNode *succ = (*it)->getDstNode();
|
|
827
|
+
CycleDepthNumber succ_dfn = getCDN(succ);
|
|
828
|
+
if (succ_dfn == CycleDepthNumber(0))
|
|
829
|
+
{
|
|
830
|
+
min = visit(succ, partition);
|
|
831
|
+
}
|
|
832
|
+
else
|
|
833
|
+
{
|
|
834
|
+
min = succ_dfn;
|
|
835
|
+
}
|
|
836
|
+
if (min <= head)
|
|
837
|
+
{
|
|
838
|
+
head = min;
|
|
839
|
+
loop = true;
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
}
|
|
797
843
|
if (head == getCDN(node))
|
|
798
844
|
{
|
|
799
845
|
setCDN(node, UINT_MAX);
|
|
@@ -831,7 +877,7 @@ protected:
|
|
|
831
877
|
for (const auto &head: _headToCycle)
|
|
832
878
|
{
|
|
833
879
|
NodeRefSet tails;
|
|
834
|
-
TailBuilder builder(_nodeToDepth, tails, head.first, getWTOCycleDepth(head.first));
|
|
880
|
+
TailBuilder builder(_graph, _nodeToDepth, tails, head.first, getWTOCycleDepth(head.first));
|
|
835
881
|
for (auto it = head.second->begin(), eit = head.second->end(); it != eit; ++it)
|
|
836
882
|
{
|
|
837
883
|
(*it)->accept(&builder);
|
|
@@ -127,8 +127,6 @@ public:
|
|
|
127
127
|
{
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
CFBasicBlockNode(const SVFBasicBlock* bb);
|
|
131
|
-
|
|
132
130
|
friend std::ostream &operator<<(std::ostream &o, const CFBasicBlockNode &node)
|
|
133
131
|
{
|
|
134
132
|
o << node.toString();
|
|
@@ -143,10 +141,9 @@ public:
|
|
|
143
141
|
return (*_icfgNodes.begin())->getBB()->getName();
|
|
144
142
|
}
|
|
145
143
|
|
|
146
|
-
inline const
|
|
144
|
+
inline const std::vector<const ICFGNode*>& getICFGNodes() const
|
|
147
145
|
{
|
|
148
|
-
|
|
149
|
-
return (*_icfgNodes.begin())->getBB();
|
|
146
|
+
return _icfgNodes;
|
|
150
147
|
}
|
|
151
148
|
|
|
152
149
|
inline const SVFFunction *getFunction() const
|
|
@@ -355,7 +352,6 @@ class CFBasicBlockGraph : public GenericCFBasicBlockGTy
|
|
|
355
352
|
private:
|
|
356
353
|
u32_t _totalCFBasicBlockNode{0};
|
|
357
354
|
u32_t _totalCFBasicBlockEdge{0};
|
|
358
|
-
Map<const SVFFunction*, CFBasicBlockNode*> _funToFirstNode;
|
|
359
355
|
public:
|
|
360
356
|
|
|
361
357
|
CFBasicBlockGraph() = default;
|
|
@@ -379,27 +375,6 @@ public:
|
|
|
379
375
|
return hasGNode(id);
|
|
380
376
|
}
|
|
381
377
|
|
|
382
|
-
inline CFBasicBlockNode* getFirstCFBasicBlockNode(const SVFFunction* fun) const
|
|
383
|
-
{
|
|
384
|
-
if (fun && _funToFirstNode.find(fun) != _funToFirstNode.end())
|
|
385
|
-
{
|
|
386
|
-
return _funToFirstNode.at(fun);
|
|
387
|
-
}
|
|
388
|
-
else
|
|
389
|
-
{
|
|
390
|
-
return nullptr;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
inline bool hasFirstCFBasicBlockNode(const SVFFunction* fun) const
|
|
394
|
-
{
|
|
395
|
-
return fun && _funToFirstNode.find(fun) != _funToFirstNode.end();
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
inline void setFirstCFBasicBlockNode(const Map<const SVFFunction*, CFBasicBlockNode*>& svfNodeMap)
|
|
399
|
-
{
|
|
400
|
-
_funToFirstNode = svfNodeMap;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
378
|
|
|
404
379
|
bool hasCFBasicBlockEdge(CFBasicBlockNode *src, CFBasicBlockNode *dst, ICFGEdge *icfgEdge)
|
|
405
380
|
{
|
|
@@ -490,24 +465,6 @@ public:
|
|
|
490
465
|
}
|
|
491
466
|
};
|
|
492
467
|
|
|
493
|
-
class CFBasicBlockGBuilder
|
|
494
|
-
{
|
|
495
|
-
|
|
496
|
-
private:
|
|
497
|
-
CFBasicBlockGraph* _CFBasicBlockG;
|
|
498
|
-
|
|
499
|
-
public:
|
|
500
|
-
CFBasicBlockGBuilder() : _CFBasicBlockG() {}
|
|
501
|
-
|
|
502
|
-
virtual void build(SVFModule* module);
|
|
503
|
-
|
|
504
|
-
virtual void build(ICFG* icfg);
|
|
505
|
-
|
|
506
|
-
inline CFBasicBlockGraph* getCFBasicBlockGraph()
|
|
507
|
-
{
|
|
508
|
-
return _CFBasicBlockG;
|
|
509
|
-
}
|
|
510
|
-
};
|
|
511
468
|
}
|
|
512
469
|
|
|
513
470
|
|
|
@@ -537,6 +494,10 @@ struct GenericGraphTraits<SVF::CFBasicBlockGraph *>
|
|
|
537
494
|
typedef SVF::CFBasicBlockNode *NodeRef;
|
|
538
495
|
};
|
|
539
496
|
|
|
497
|
+
} // End namespace SVF
|
|
498
|
+
|
|
499
|
+
namespace SVF
|
|
500
|
+
{
|
|
540
501
|
template<>
|
|
541
502
|
struct DOTGraphTraits<SVF::CFBasicBlockGraph *> : public DOTGraphTraits<SVF::SVFIR *>
|
|
542
503
|
{
|
|
@@ -574,22 +535,73 @@ struct DOTGraphTraits<SVF::CFBasicBlockGraph *> : public DOTGraphTraits<SVF::SVF
|
|
|
574
535
|
{
|
|
575
536
|
std::string str;
|
|
576
537
|
std::stringstream rawstr(str);
|
|
577
|
-
|
|
538
|
+
if(node->getICFGNodes().size() == 1)
|
|
539
|
+
{
|
|
540
|
+
const ICFGNode* n = node->getICFGNodes()[0];
|
|
541
|
+
if(SVFUtil::isa<IntraICFGNode>(n))
|
|
542
|
+
{
|
|
543
|
+
rawstr << "color=black";
|
|
544
|
+
}
|
|
545
|
+
else if(SVFUtil::isa<FunEntryICFGNode>(n))
|
|
546
|
+
{
|
|
547
|
+
rawstr << "color=yellow";
|
|
548
|
+
}
|
|
549
|
+
else if(SVFUtil::isa<FunExitICFGNode>(n))
|
|
550
|
+
{
|
|
551
|
+
rawstr << "color=green";
|
|
552
|
+
}
|
|
553
|
+
else if(SVFUtil::isa<CallICFGNode>(n))
|
|
554
|
+
{
|
|
555
|
+
rawstr << "color=red";
|
|
556
|
+
}
|
|
557
|
+
else if(SVFUtil::isa<RetICFGNode>(n))
|
|
558
|
+
{
|
|
559
|
+
rawstr << "color=blue";
|
|
560
|
+
}
|
|
561
|
+
else if(SVFUtil::isa<GlobalICFGNode>(n))
|
|
562
|
+
{
|
|
563
|
+
rawstr << "color=purple";
|
|
564
|
+
}
|
|
565
|
+
else
|
|
566
|
+
assert(false && "no such kind of node!!");
|
|
567
|
+
}
|
|
568
|
+
else
|
|
569
|
+
{
|
|
570
|
+
rawstr << "color=black";
|
|
571
|
+
}
|
|
572
|
+
rawstr << "";
|
|
578
573
|
return rawstr.str();
|
|
579
574
|
}
|
|
580
575
|
|
|
581
576
|
template<class EdgeIter>
|
|
582
577
|
static std::string getEdgeAttributes(NodeType *, EdgeIter EI, SVF::CFBasicBlockGraph *)
|
|
583
578
|
{
|
|
584
|
-
|
|
579
|
+
CFBasicBlockEdge* edge = *(EI.getCurrent());
|
|
580
|
+
assert(edge && "No edge found!!");
|
|
581
|
+
if (SVFUtil::isa<CallCFGEdge>(edge->getICFGEdge()))
|
|
582
|
+
return "style=solid,color=red";
|
|
583
|
+
else if (SVFUtil::isa<RetCFGEdge>(edge->getICFGEdge()))
|
|
584
|
+
return "style=solid,color=blue";
|
|
585
|
+
else
|
|
586
|
+
return "style=solid";
|
|
587
|
+
return "";
|
|
585
588
|
}
|
|
586
589
|
|
|
587
590
|
template<class EdgeIter>
|
|
588
591
|
static std::string getEdgeSourceLabel(NodeType *, EdgeIter EI)
|
|
589
592
|
{
|
|
590
|
-
|
|
593
|
+
CFBasicBlockEdge* edge = *(EI.getCurrent());
|
|
594
|
+
assert(edge && "No edge found!!");
|
|
595
|
+
|
|
596
|
+
std::string str;
|
|
597
|
+
std::stringstream rawstr(str);
|
|
598
|
+
if (const CallCFGEdge* dirCall = SVFUtil::dyn_cast<CallCFGEdge>(edge->getICFGEdge()))
|
|
599
|
+
rawstr << dirCall->getCallSite();
|
|
600
|
+
else if (const RetCFGEdge* dirRet = SVFUtil::dyn_cast<RetCFGEdge>(edge->getICFGEdge()))
|
|
601
|
+
rawstr << dirRet->getCallSite();
|
|
602
|
+
|
|
603
|
+
return rawstr.str();
|
|
591
604
|
}
|
|
592
605
|
};
|
|
593
|
-
|
|
594
|
-
} // End namespace SVF
|
|
606
|
+
}
|
|
595
607
|
#endif //SVF_CFBASICBLOCKG_H
|