svf-tools 1.0.784 → 1.0.786
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/CFBasicBlockG_8cpp_source.html +56 -43
- package/SVF-doxygen/html/CFBasicBlockG_8h_source.html +505 -494
- package/SVF-doxygen/html/WTO_8h_source.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockEdge-members.html +27 -26
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockEdge.html +62 -19
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGBuilder.html +53 -41
- 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_1CFBasicBlockGraph-members.html +6 -5
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGraph.html +169 -136
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockNode.html +177 -177
- package/SVF-doxygen/html/functions.html +3 -3
- package/SVF-doxygen/html/functions_b.html +3 -3
- package/SVF-doxygen/html/functions_c.html +29 -29
- package/SVF-doxygen/html/functions_f.html +3 -3
- package/SVF-doxygen/html/functions_func_c.html +21 -21
- package/SVF-doxygen/html/functions_func_g.html +11 -8
- package/SVF-doxygen/html/functions_func_h.html +4 -1
- package/SVF-doxygen/html/functions_func_s.html +25 -22
- package/SVF-doxygen/html/functions_g.html +7 -4
- package/SVF-doxygen/html/functions_h.html +3 -0
- package/SVF-doxygen/html/functions_i.html +6 -6
- 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 +18 -18
- package/SVF-doxygen/html/functions_p.html +12 -12
- package/SVF-doxygen/html/functions_r.html +5 -3
- package/SVF-doxygen/html/functions_s.html +21 -18
- package/SVF-doxygen/html/functions_t.html +10 -10
- package/SVF-doxygen/html/functions_v.html +3 -3
- package/SVF-doxygen/html/functions_vars.html +3 -3
- package/SVF-doxygen/html/namespaceSVF.html +2 -2
- package/SVF-doxygen/html/search/all_0.js +18 -18
- 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 +542 -541
- 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 +1 -1
- package/SVF-doxygen/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/search/all_7.js +592 -591
- package/SVF-doxygen/html/search/all_8.js +195 -194
- package/SVF-doxygen/html/search/all_9.js +607 -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 +53 -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 +356 -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 +277 -276
- 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 -848
- package/SVF-doxygen/html/search/functions_8.js +147 -146
- package/SVF-doxygen/html/search/functions_9.js +425 -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 +152 -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 +40 -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/Graphs/CFBasicBlockG.h +16 -7
- package/svf/lib/Graphs/CFBasicBlockG.cpp +14 -2
|
@@ -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#l00528">528</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#l00534">534</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#l00537">537</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#l00521">521</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.786",
|
|
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": {
|
|
@@ -71,6 +71,11 @@ public:
|
|
|
71
71
|
{
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
+
CFBasicBlockEdge(CFBasicBlockNode* src, CFBasicBlockNode* dst)
|
|
75
|
+
: GenericCFBasicBlockEdgeTy(src, dst, 0), _icfgEdge(nullptr)
|
|
76
|
+
{
|
|
77
|
+
}
|
|
78
|
+
|
|
74
79
|
friend std::ostream &operator<<(std::ostream &o, const CFBasicBlockEdge &edge)
|
|
75
80
|
{
|
|
76
81
|
o << edge.toString();
|
|
@@ -350,8 +355,7 @@ class CFBasicBlockGraph : public GenericCFBasicBlockGTy
|
|
|
350
355
|
private:
|
|
351
356
|
u32_t _totalCFBasicBlockNode{0};
|
|
352
357
|
u32_t _totalCFBasicBlockEdge{0};
|
|
353
|
-
Map<const
|
|
354
|
-
|
|
358
|
+
Map<const SVFFunction*, CFBasicBlockNode*> _funToFirstNode;
|
|
355
359
|
public:
|
|
356
360
|
|
|
357
361
|
CFBasicBlockGraph() = default;
|
|
@@ -375,23 +379,28 @@ public:
|
|
|
375
379
|
return hasGNode(id);
|
|
376
380
|
}
|
|
377
381
|
|
|
378
|
-
inline CFBasicBlockNode*
|
|
382
|
+
inline CFBasicBlockNode* getFirstCFBasicBlockNode(const SVFFunction* fun) const
|
|
379
383
|
{
|
|
380
|
-
if (
|
|
384
|
+
if (fun && _funToFirstNode.find(fun) != _funToFirstNode.end())
|
|
381
385
|
{
|
|
382
|
-
return
|
|
386
|
+
return _funToFirstNode.at(fun);
|
|
383
387
|
}
|
|
384
388
|
else
|
|
385
389
|
{
|
|
386
390
|
return nullptr;
|
|
387
391
|
}
|
|
388
392
|
}
|
|
393
|
+
inline bool hasFirstCFBasicBlockNode(const SVFFunction* fun) const
|
|
394
|
+
{
|
|
395
|
+
return fun && _funToFirstNode.find(fun) != _funToFirstNode.end();
|
|
396
|
+
}
|
|
389
397
|
|
|
390
|
-
inline
|
|
398
|
+
inline void setFirstCFBasicBlockNode(const Map<const SVFFunction*, CFBasicBlockNode*>& svfNodeMap)
|
|
391
399
|
{
|
|
392
|
-
|
|
400
|
+
_funToFirstNode = svfNodeMap;
|
|
393
401
|
}
|
|
394
402
|
|
|
403
|
+
|
|
395
404
|
bool hasCFBasicBlockEdge(CFBasicBlockNode *src, CFBasicBlockNode *dst, ICFGEdge *icfgEdge)
|
|
396
405
|
{
|
|
397
406
|
CFBasicBlockEdge edge(src, dst, icfgEdge);
|
|
@@ -130,13 +130,13 @@ void CFBasicBlockGBuilder::build(SVFModule* module)
|
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
-
_CFBasicBlockG->_bbToNode = bbToNode;
|
|
134
133
|
}
|
|
135
134
|
|
|
136
135
|
void CFBasicBlockGBuilder::build(ICFG* icfg)
|
|
137
136
|
{
|
|
138
137
|
_CFBasicBlockG = new CFBasicBlockGraph();
|
|
139
138
|
Map<const SVFBasicBlock*, CFBasicBlockNode*> bbToNode;
|
|
139
|
+
Map<const SVFFunction*, CFBasicBlockNode*> funToFirstNode;
|
|
140
140
|
for (const auto& node : *icfg)
|
|
141
141
|
{
|
|
142
142
|
CFBasicBlockNode* pNode = nullptr;
|
|
@@ -153,6 +153,11 @@ void CFBasicBlockGBuilder::build(ICFG* icfg)
|
|
|
153
153
|
pNode = bbToNode[node.second->getBB()];
|
|
154
154
|
pNode->addNode(node.second);
|
|
155
155
|
}
|
|
156
|
+
const SVFFunction* fun = node.second->getFun();
|
|
157
|
+
if (funToFirstNode.find(fun) == funToFirstNode.end())
|
|
158
|
+
{
|
|
159
|
+
funToFirstNode[fun] = nullptr;
|
|
160
|
+
}
|
|
156
161
|
}
|
|
157
162
|
}
|
|
158
163
|
|
|
@@ -174,6 +179,13 @@ void CFBasicBlockGBuilder::build(ICFG* icfg)
|
|
|
174
179
|
}
|
|
175
180
|
}
|
|
176
181
|
}
|
|
177
|
-
|
|
182
|
+
|
|
183
|
+
for (auto it = funToFirstNode.begin(); it != funToFirstNode.end(); ++it)
|
|
184
|
+
{
|
|
185
|
+
const SVFFunction* fun = it->first;
|
|
186
|
+
const SVFBasicBlock* bb = *fun->getBasicBlockList().begin();
|
|
187
|
+
funToFirstNode[fun] = bbToNode[bb];
|
|
188
|
+
}
|
|
189
|
+
_CFBasicBlockG->_funToFirstNode = funToFirstNode;
|
|
178
190
|
}
|
|
179
191
|
}
|