svf-tools 1.0.818 → 1.0.820
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/CFBasicBlockGBuilder_8cpp.html +1 -0
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8cpp_source.html +212 -175
- package/SVF-doxygen/html/CFBasicBlockGBuilder_8h_source.html +5 -5
- package/SVF-doxygen/html/SVFBugReport_8cpp_source.html +81 -69
- package/SVF-doxygen/html/SVFBugReport_8h_source.html +135 -121
- package/SVF-doxygen/html/classSVF_1_1CFBasicBlockGBuilder.html +190 -161
- package/SVF-doxygen/html/classSVF_1_1DoubleFreeChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FileChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFBugReport-members.html +9 -5
- package/SVF-doxygen/html/classSVF_1_1SVFBugReport.html +307 -161
- package/SVF-doxygen/html/functions_c.html +24 -19
- package/SVF-doxygen/html/functions_func_i.html +1 -1
- package/SVF-doxygen/html/functions_func_s.html +25 -22
- package/SVF-doxygen/html/functions_i.html +1 -1
- package/SVF-doxygen/html/functions_l.html +3 -3
- package/SVF-doxygen/html/functions_m.html +4 -3
- package/SVF-doxygen/html/functions_n.html +4 -4
- package/SVF-doxygen/html/functions_o.html +4 -4
- package/SVF-doxygen/html/functions_p.html +11 -11
- package/SVF-doxygen/html/functions_r.html +4 -6
- package/SVF-doxygen/html/functions_s.html +26 -21
- package/SVF-doxygen/html/functions_t.html +8 -5
- package/SVF-doxygen/html/functions_v.html +6 -6
- package/SVF-doxygen/html/functions_vars_c.html +3 -0
- package/SVF-doxygen/html/functions_vars_m.html +1 -0
- package/SVF-doxygen/html/functions_vars_t.html +3 -0
- package/SVF-doxygen/html/functions_w.html +1 -1
- package/SVF-doxygen/html/search/all_10.js +324 -324
- package/SVF-doxygen/html/search/all_11.js +222 -222
- package/SVF-doxygen/html/search/all_12.js +545 -544
- package/SVF-doxygen/html/search/all_13.js +192 -191
- package/SVF-doxygen/html/search/all_14.js +67 -67
- package/SVF-doxygen/html/search/all_15.js +167 -167
- 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_3.js +138 -137
- package/SVF-doxygen/html/search/all_4.js +233 -233
- package/SVF-doxygen/html/search/all_5.js +119 -119
- package/SVF-doxygen/html/search/all_6.js +225 -225
- package/SVF-doxygen/html/search/all_7.js +1044 -1044
- package/SVF-doxygen/html/search/all_8.js +197 -197
- 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 +115 -115
- package/SVF-doxygen/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +80 -80
- package/SVF-doxygen/html/search/classes_3.js +37 -37
- package/SVF-doxygen/html/search/classes_4.js +9 -9
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +104 -104
- package/SVF-doxygen/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +21 -21
- package/SVF-doxygen/html/search/defines_4.js +2 -2
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +7 -7
- package/SVF-doxygen/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +55 -55
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +12 -12
- package/SVF-doxygen/html/search/functions_1.js +360 -360
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +138 -138
- package/SVF-doxygen/html/search/functions_12.js +280 -279
- package/SVF-doxygen/html/search/functions_13.js +59 -59
- package/SVF-doxygen/html/search/functions_14.js +39 -39
- package/SVF-doxygen/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/search/functions_16.js +32 -32
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +172 -172
- package/SVF-doxygen/html/search/functions_2.js +87 -87
- package/SVF-doxygen/html/search/functions_3.js +257 -257
- package/SVF-doxygen/html/search/functions_4.js +75 -75
- package/SVF-doxygen/html/search/functions_5.js +53 -53
- package/SVF-doxygen/html/search/functions_6.js +59 -59
- package/SVF-doxygen/html/search/functions_7.js +854 -854
- package/SVF-doxygen/html/search/functions_8.js +149 -149
- package/SVF-doxygen/html/search/functions_9.js +423 -423
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +26 -26
- package/SVF-doxygen/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/search/functions_e.js +35 -35
- package/SVF-doxygen/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/search/related_d.js +12 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_0.js +19 -19
- package/SVF-doxygen/html/search/typedefs_1.js +26 -26
- package/SVF-doxygen/html/search/typedefs_10.js +61 -61
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/search/typedefs_13.js +33 -33
- package/SVF-doxygen/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/search/typedefs_2.js +129 -129
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/search/typedefs_6.js +55 -55
- package/SVF-doxygen/html/search/typedefs_7.js +44 -44
- package/SVF-doxygen/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/search/typedefs_d.js +14 -14
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +151 -151
- package/SVF-doxygen/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/search/variables_11.js +44 -44
- package/SVF-doxygen/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/search/variables_13.js +76 -75
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/search/variables_2.js +38 -38
- package/SVF-doxygen/html/search/variables_3.js +143 -142
- package/SVF-doxygen/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/search/variables_5.js +37 -37
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +34 -34
- package/SVF-doxygen/html/search/variables_8.js +7 -7
- 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 +56 -56
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +29 -29
- package/package.json +1 -1
- package/svf/include/Util/SVFBugReport.h +10 -0
- package/svf/lib/Util/CFBasicBlockGBuilder.cpp +56 -28
- package/svf/lib/Util/SVFBugReport.cpp +46 -32
|
@@ -99,197 +99,234 @@ $(function() {
|
|
|
99
99
|
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></div>
|
|
100
100
|
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include "<a class="code" href="CFBasicBlockGBuilder_8h.html">Util/CFBasicBlockGBuilder.h</a>"</span></div>
|
|
101
101
|
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div>
|
|
102
|
-
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="
|
|
103
|
-
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> 
|
|
104
|
-
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> 
|
|
105
|
-
<div class="line"><a name="
|
|
106
|
-
<div class="line"><a name="
|
|
107
|
-
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> 
|
|
108
|
-
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> 
|
|
109
|
-
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> 
|
|
110
|
-
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> 
|
|
111
|
-
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> 
|
|
112
|
-
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> 
|
|
113
|
-
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> 
|
|
114
|
-
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> 
|
|
115
|
-
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> 
|
|
116
|
-
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> 
|
|
117
|
-
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> 
|
|
118
|
-
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <
|
|
119
|
-
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> 
|
|
120
|
-
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> 
|
|
121
|
-
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> 
|
|
122
|
-
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> 
|
|
123
|
-
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> 
|
|
124
|
-
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> 
|
|
125
|
-
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> 
|
|
126
|
-
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> 
|
|
127
|
-
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> 
|
|
128
|
-
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> 
|
|
129
|
-
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> 
|
|
130
|
-
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> 
|
|
131
|
-
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> 
|
|
132
|
-
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <
|
|
133
|
-
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> 
|
|
134
|
-
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> 
|
|
135
|
-
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> 
|
|
136
|
-
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> 
|
|
137
|
-
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> 
|
|
138
|
-
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> 
|
|
139
|
-
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> 
|
|
140
|
-
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> 
|
|
141
|
-
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> 
|
|
142
|
-
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> 
|
|
143
|
-
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> 
|
|
144
|
-
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> 
|
|
145
|
-
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> 
|
|
146
|
-
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> 
|
|
147
|
-
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <
|
|
148
|
-
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> 
|
|
149
|
-
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> 
|
|
150
|
-
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> 
|
|
151
|
-
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> 
|
|
152
|
-
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> 
|
|
153
|
-
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div>
|
|
154
|
-
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> 
|
|
155
|
-
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> 
|
|
156
|
-
<div class="line"><a name="
|
|
157
|
-
<div class="line"><a name="
|
|
158
|
-
<div class="line"><a name="
|
|
159
|
-
<div class="line"><a name="
|
|
160
|
-
<div class="line"><a name="
|
|
161
|
-
<div class="line"><a name="
|
|
162
|
-
<div class="line"><a name="
|
|
163
|
-
<div class="line"><a name="
|
|
164
|
-
<div class="line"><a name="
|
|
165
|
-
<div class="line"><a name="
|
|
166
|
-
<div class="line"><a name="
|
|
167
|
-
<div class="line"><a name="
|
|
168
|
-
<div class="line"><a name="
|
|
169
|
-
<div class="line"><a name="
|
|
170
|
-
<div class="line"><a name="
|
|
171
|
-
<div class="line"><a name="
|
|
172
|
-
<div class="line"><a name="
|
|
173
|
-
<div class="line"><a name="
|
|
174
|
-
<div class="line"><a name="
|
|
175
|
-
<div class="line"><a name="
|
|
176
|
-
<div class="line"><a name="
|
|
177
|
-
<div class="line"><a name="
|
|
178
|
-
<div class="line"><a name="
|
|
179
|
-
<div class="line"><a name="
|
|
180
|
-
<div class="line"><a name="
|
|
181
|
-
<div class="line"><a name="
|
|
182
|
-
<div class="line"><a name="
|
|
183
|
-
<div class="line"><a name="
|
|
184
|
-
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> 
|
|
185
|
-
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> 
|
|
186
|
-
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> 
|
|
187
|
-
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> 
|
|
188
|
-
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> 
|
|
189
|
-
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> 
|
|
190
|
-
<div class="line"><a name="
|
|
191
|
-
<div class="line"><a name="
|
|
192
|
-
<div class="line"><a name="
|
|
193
|
-
<div class="line"><a name="
|
|
194
|
-
<div class="line"><a name="
|
|
195
|
-
<div class="line"><a name="
|
|
196
|
-
<div class="line"><a name="
|
|
197
|
-
<div class="line"><a name="
|
|
198
|
-
<div class="line"><a name="
|
|
199
|
-
<div class="line"><a name="
|
|
200
|
-
<div class="line"><a name="
|
|
201
|
-
<div class="line"><a name="
|
|
202
|
-
<div class="line"><a name="
|
|
203
|
-
<div class="line"><a name="
|
|
204
|
-
<div class="line"><a name="
|
|
205
|
-
<div class="line"><a name="
|
|
206
|
-
<div class="line"><a name="
|
|
207
|
-
<div class="line"><a name="
|
|
208
|
-
<div class="line"><a name="
|
|
209
|
-
<div class="line"><a name="
|
|
210
|
-
<div class="line"><a name="
|
|
211
|
-
<div class="line"><a name="
|
|
212
|
-
<div class="line"><a name="
|
|
213
|
-
<div class="line"><a name="
|
|
214
|
-
<div class="line"><a name="
|
|
215
|
-
<div class="line"><a name="
|
|
216
|
-
<div class="line"><a name="
|
|
217
|
-
<div class="line"><a name="
|
|
218
|
-
<div class="line"><a name="
|
|
219
|
-
<div class="line"><a name="
|
|
220
|
-
<div class="line"><a name="
|
|
221
|
-
<div class="line"><a name="
|
|
222
|
-
<div class="line"><a name="
|
|
223
|
-
<div class="line"><a name="
|
|
224
|
-
<div class="line"><a name="
|
|
102
|
+
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include <<a class="code" href="SVFIR_8h.html">SVFIR/SVFIR.h</a>></span></div>
|
|
103
|
+
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div>
|
|
104
|
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
|
|
105
|
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> {</div>
|
|
106
|
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  </div>
|
|
107
|
+
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6"> 42</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">CFBasicBlockGBuilder::initCFBasicBlockGNodes</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
|
|
108
|
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector<CFBasicBlockNode *>> &bbToNodes)</div>
|
|
109
|
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div>
|
|
110
|
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &func : *<a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">PAG::getPAG</a>()->getModule())</div>
|
|
111
|
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div>
|
|
112
|
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>& bb: *func)</div>
|
|
113
|
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div>
|
|
114
|
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span>& inst: *bb)</div>
|
|
115
|
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div>
|
|
116
|
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17">SVFUtil::isIntrinsicInst</a>(inst)) <span class="keywordflow">continue</span>;</div>
|
|
117
|
+
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* icfgNode = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5f2c0aaba07d6fdd63058da0fb60ca8b">getICFGNode</a>(inst);</div>
|
|
118
|
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</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>(icfgNode))</div>
|
|
119
|
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  {</div>
|
|
120
|
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="comment">// Create a new CFBasicBlockNode for the CallICFGNode</span></div>
|
|
121
|
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>* pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({callNode});</div>
|
|
122
|
+
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  bbToNodes[bb].push_back(pNode);</div>
|
|
123
|
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
|
|
124
|
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div>
|
|
125
|
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="comment">// Create a new CFBasicBlockNode for the corresponding RetICFGNode</span></div>
|
|
126
|
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keyword">auto</span> *retNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({callNode->getRetICFGNode()});</div>
|
|
127
|
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  bbToNodes[bb].push_back(retNode);</div>
|
|
128
|
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(retNode);</div>
|
|
129
|
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  }</div>
|
|
130
|
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">else</span></div>
|
|
131
|
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  {</div>
|
|
132
|
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">if</span> (bbToNodes.find(bb) == bbToNodes.end())</div>
|
|
133
|
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div>
|
|
134
|
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="comment">// Create a new CFBasicBlockNode for the non-CallICFGNode</span></div>
|
|
135
|
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>* pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({icfgNode});</div>
|
|
136
|
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  bbToNodes[bb] = {pNode};</div>
|
|
137
|
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
|
|
138
|
+
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div>
|
|
139
|
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">else</span></div>
|
|
140
|
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div>
|
|
141
|
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>* pNode = bbToNodes[bb].back();</div>
|
|
142
|
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">if</span> (!SVFUtil::isa<RetICFGNode>(pNode-><a class="code" href="classSVF_1_1CFBasicBlockNode.html#afdad57a83c392a8b14b838ecb58f9ff7">getICFGNodes</a>()[0]))</div>
|
|
143
|
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div>
|
|
144
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="comment">// Add the non-CallICFGNode to the existing CFBasicBlockNode</span></div>
|
|
145
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  pNode-><a class="code" href="classSVF_1_1CFBasicBlockNode.html#a5374f4567cee38325f61940f4edbb142">addNode</a>(icfgNode);</div>
|
|
146
|
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div>
|
|
147
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">else</span></div>
|
|
148
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div>
|
|
149
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="comment">// Create a new CFBasicBlockNode for the non-CallICFGNode</span></div>
|
|
150
|
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({icfgNode});</div>
|
|
151
|
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  bbToNodes[bb].push_back(pNode);</div>
|
|
152
|
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
|
|
153
|
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  }</div>
|
|
154
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  }</div>
|
|
155
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div>
|
|
156
|
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div>
|
|
157
|
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  }</div>
|
|
158
|
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  </div>
|
|
159
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a>* funEntryNode = icfg-><a class="code" href="classSVF_1_1ICFG.html#a0dca4655c2f6112a5be1f921b8e81076">getFunEntryICFGNode</a>(func))</div>
|
|
160
|
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  {</div>
|
|
161
|
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb = funEntryNode->getBB())</div>
|
|
162
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  {</div>
|
|
163
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  std::vector<CFBasicBlockNode *>& <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a> = bbToNodes[bb];</div>
|
|
164
|
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>* pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({funEntryNode});</div>
|
|
165
|
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>.insert(<a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>.begin(), pNode);</div>
|
|
166
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
|
|
167
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div>
|
|
168
|
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  }</div>
|
|
169
|
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div>
|
|
170
|
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1FunExitICFGNode.html">FunExitICFGNode</a>* funExitNode = icfg-><a class="code" href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">getFunExitICFGNode</a>(func))</div>
|
|
171
|
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  {</div>
|
|
172
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb = funExitNode->getBB())</div>
|
|
173
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  {</div>
|
|
174
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  std::vector<CFBasicBlockNode *>& <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a> = bbToNodes[bb];</div>
|
|
175
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>* pNode = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockNode.html">CFBasicBlockNode</a>({funExitNode});</div>
|
|
176
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">nodes</a>.push_back(pNode);</div>
|
|
177
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">addCFBBNode</a>(pNode);</div>
|
|
178
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div>
|
|
179
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div>
|
|
180
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  }</div>
|
|
181
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> }</div>
|
|
182
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div>
|
|
183
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  </div>
|
|
184
|
+
<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608"> 125</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">CFBasicBlockGBuilder::addInterBBEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
|
|
185
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector<CFBasicBlockNode *>> &bbToNodes)</div>
|
|
186
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> {</div>
|
|
187
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// Connect inter-BB BBNodes</span></div>
|
|
188
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &node : *icfg)</div>
|
|
189
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div>
|
|
190
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &succ : node.second->getOutEdges())</div>
|
|
191
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  {</div>
|
|
192
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// Check if it's an intraCFGEdge in case of recursive functions</span></div>
|
|
193
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// if recursive functions, node_fun == succ_fun but they are different call context</span></div>
|
|
194
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// edges related to recursive functions would be added in addInterProceduralEdge()</span></div>
|
|
195
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span> (succ->isIntraCFGEdge())</div>
|
|
196
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div>
|
|
197
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *node_fun = node.second->getFun();</div>
|
|
198
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a> *succ_fun = succ->getDstNode()->getFun();</div>
|
|
199
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *node_bb = node.second->getBB();</div>
|
|
200
|
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *succ_bb = succ->getDstNode()->getBB();</div>
|
|
201
|
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> (node_fun == succ_fun)</div>
|
|
202
|
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  {</div>
|
|
203
|
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span> (node_bb != succ_bb)</div>
|
|
204
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  {</div>
|
|
205
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="comment">// Create a new CFBasicBlockEdge connecting the last node of the source BB</span></div>
|
|
206
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="comment">// and the first node of the destination BB</span></div>
|
|
207
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(</div>
|
|
208
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  bbToNodes[node_bb].back(),</div>
|
|
209
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  bbToNodes[succ_bb].front(), succ);</div>
|
|
210
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
|
|
211
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  }</div>
|
|
212
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  }</div>
|
|
213
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div>
|
|
214
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  }</div>
|
|
215
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  }</div>
|
|
216
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> }</div>
|
|
217
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div>
|
|
218
|
+
<div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31"> 165</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">CFBasicBlockGBuilder::addIntraBBEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
|
|
219
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector<CFBasicBlockNode *>> &bbToNodes)</div>
|
|
220
|
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> {</div>
|
|
221
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// Connect intra-BB BBNodes</span></div>
|
|
222
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &bbNodes : bbToNodes)</div>
|
|
223
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div>
|
|
224
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < bbNodes.second.size() - 1; ++i)</div>
|
|
225
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  {</div>
|
|
226
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// Check if an intraCFGEdge exists between the last node of the source BB and the first node of the destination BB</span></div>
|
|
227
|
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ICFGEdge.html">ICFGEdge</a> *icfgEdge = icfg-><a class="code" href="classSVF_1_1ICFG.html#a5dd4ac55123501c47c628adcf27e2475">getICFGEdge</a>(</div>
|
|
228
|
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<span class="keyword">></span>(bbNodes.second[i]->getICFGNodes().back()),</div>
|
|
229
|
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a> *<span class="keyword">></span>(bbNodes.second[i + 1]->getICFGNodes().front()),</div>
|
|
230
|
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <a class="code" href="classSVF_1_1ICFGEdge.html#a395c34788e98950bc43e8cb44313e429acb8fba7c61b08ec952f1b65643d7a84b">ICFGEdge::IntraCF</a>))</div>
|
|
225
231
|
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div>
|
|
226
|
-
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <
|
|
227
|
-
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> 
|
|
228
|
-
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> 
|
|
229
|
-
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> 
|
|
230
|
-
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> 
|
|
231
|
-
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> 
|
|
232
|
-
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> 
|
|
233
|
-
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> 
|
|
234
|
-
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> 
|
|
235
|
-
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> 
|
|
236
|
-
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> 
|
|
237
|
-
<div class="line"><a name="
|
|
238
|
-
<div class="line"><a name="
|
|
239
|
-
<div class="line"><a name="
|
|
240
|
-
<div class="line"><a name="
|
|
241
|
-
<div class="line"><a name="
|
|
242
|
-
<div class="line"><a name="
|
|
243
|
-
<div class="line"><a name="
|
|
244
|
-
<div class="line"><a name="
|
|
245
|
-
<div class="line"><a name="
|
|
246
|
-
<div class="line"><a name="
|
|
247
|
-
<div class="line"><a name="
|
|
248
|
-
<div class="line"><a name="
|
|
249
|
-
<div class="line"><a name="
|
|
250
|
-
<div class="line"><a name="
|
|
251
|
-
<div class="line"><a name="
|
|
252
|
-
<div class="line"><a name="
|
|
253
|
-
<div class="line"><a name="
|
|
254
|
-
<div class="line"><a name="
|
|
255
|
-
<div class="line"><a name="
|
|
256
|
-
<div class="line"><a name="
|
|
257
|
-
<div class="line"><a name="
|
|
258
|
-
<div class="line"><a name="
|
|
259
|
-
<div class="line"><a name="
|
|
260
|
-
<div class="line"><a name="
|
|
261
|
-
<div class="line"><a name="
|
|
262
|
-
<div class="line"><a name="
|
|
263
|
-
<div class="line"><a name="
|
|
264
|
-
<div class="line"><a name="
|
|
265
|
-
<div class="line"><a name="
|
|
266
|
-
<div class="line"><a name="
|
|
267
|
-
<div class="line"><a name="
|
|
268
|
-
<div class="line"><a name="
|
|
269
|
-
<div class="line"><a name="
|
|
270
|
-
<div class="line"><a name="
|
|
271
|
-
<div class="line"><a name="
|
|
272
|
-
<div class="line"><a name="
|
|
232
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbNodes.second[i], bbNodes.second[i + 1], icfgEdge);</div>
|
|
233
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
|
|
234
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  }</div>
|
|
235
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">else</span></div>
|
|
236
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div>
|
|
237
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// No intra-procedural edge found, possibly an external API call</span></div>
|
|
238
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div>
|
|
239
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div>
|
|
240
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  }</div>
|
|
241
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> }</div>
|
|
242
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  </div>
|
|
243
|
+
<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913"> 196</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">CFBasicBlockGBuilder::addInterProceduralEdge</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg,</div>
|
|
244
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map</a><<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a> *, std::vector<CFBasicBlockNode *>> &bbToNodes)</div>
|
|
245
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> {</div>
|
|
246
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// Connect inter-procedural BBNodes</span></div>
|
|
247
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &bbNodes : bbToNodes)</div>
|
|
248
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  {</div>
|
|
249
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < bbNodes.second.size(); ++i)</div>
|
|
250
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div>
|
|
251
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *callICFGNode = SVFUtil::dyn_cast<CallICFGNode>(</div>
|
|
252
|
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  bbNodes.second[i]->getICFGNodes().front()))</div>
|
|
253
|
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  {</div>
|
|
254
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &icfgEdge : callICFGNode->getOutEdges())</div>
|
|
255
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  {</div>
|
|
256
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallCFGEdge.html">CallCFGEdge</a> *callEdge = SVFUtil::dyn_cast<CallCFGEdge>(icfgEdge))</div>
|
|
257
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  {</div>
|
|
258
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbNodes.second[i],</div>
|
|
259
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  bbToNodes[callEdge->getDstNode()->getBB()].front(),</div>
|
|
260
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  callEdge);</div>
|
|
261
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
|
|
262
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div>
|
|
263
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  }</div>
|
|
264
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div>
|
|
265
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetICFGNode.html">RetICFGNode</a> *retICFGNode = SVFUtil::dyn_cast<RetICFGNode>(</div>
|
|
266
|
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  bbNodes.second[i]->getICFGNodes().front()))</div>
|
|
267
|
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  {</div>
|
|
268
|
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &icfgEdge : retICFGNode->getInEdges())</div>
|
|
269
|
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  {</div>
|
|
270
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetCFGEdge.html">RetCFGEdge</a> *retEdge = SVFUtil::dyn_cast<RetCFGEdge>(icfgEdge))</div>
|
|
271
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  {</div>
|
|
272
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// no return function</span></div>
|
|
273
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span>(!retEdge->getSrcNode()->getFun()->hasReturn()) <span class="keywordflow">continue</span>;</div>
|
|
274
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a> *pEdge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockEdge.html">CFBasicBlockEdge</a>(bbToNodes[retEdge->getSrcNode()->getBB()].back(),</div>
|
|
275
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  bbNodes.second[i],</div>
|
|
276
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  retEdge);</div>
|
|
277
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a>-><a class="code" href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">addCFBBEdge</a>(pEdge);</div>
|
|
278
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div>
|
|
279
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div>
|
|
280
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  }</div>
|
|
281
|
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keywordflow">else</span></div>
|
|
282
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  {</div>
|
|
283
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="comment">// Other nodes are intra-procedural</span></div>
|
|
284
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  }</div>
|
|
285
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div>
|
|
286
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div>
|
|
287
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> }</div>
|
|
288
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  </div>
|
|
289
|
+
<div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf"> 247</a></span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a25f0496187622b156bafc49f34fffeaf">CFBasicBlockGBuilder::build</a>(<a class="code" href="classSVF_1_1ICFG.html">ICFG</a> *icfg)</div>
|
|
290
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> {</div>
|
|
291
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">_CFBasicBlockG</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CFBasicBlockGraph.html">CFBasicBlockGraph</a>();</div>
|
|
292
|
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const SVFBasicBlock *, std::vector<CFBasicBlockNode *></a>> bbToNodes;</div>
|
|
293
|
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  </div>
|
|
294
|
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">initCFBasicBlockGNodes</a>(icfg, bbToNodes);</div>
|
|
295
|
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">addInterBBEdge</a>(icfg, bbToNodes);</div>
|
|
296
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">addIntraBBEdge</a>(icfg, bbToNodes);</div>
|
|
297
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <a class="code" href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">addInterProceduralEdge</a>(icfg, bbToNodes);</div>
|
|
298
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> }</div>
|
|
299
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div>
|
|
300
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> }</div>
|
|
273
301
|
</div><!-- fragment --></div><!-- contents -->
|
|
274
|
-
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a43c0cba051306acc6440f60165b835e6"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">SVF::CFBasicBlockGBuilder::initCFBasicBlockGNodes</a></div><div class="ttdeci">void initCFBasicBlockGNodes(ICFG *icfg, Map< const SVFBasicBlock *, std::vector< CFBasicBlockNode * >> &bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#
|
|
302
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a43c0cba051306acc6440f60165b835e6"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a43c0cba051306acc6440f60165b835e6">SVF::CFBasicBlockGBuilder::initCFBasicBlockGNodes</a></div><div class="ttdeci">void initCFBasicBlockGNodes(ICFG *icfg, Map< const SVFBasicBlock *, std::vector< CFBasicBlockNode * >> &bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00042">CFBasicBlockGBuilder.cpp:42</a></div></div>
|
|
275
303
|
<div class="ttc" id="aclassSVF_1_1CallCFGEdge_html"><div class="ttname"><a href="classSVF_1_1CallCFGEdge.html">SVF::CallCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00176">ICFGEdge.h:176</a></div></div>
|
|
276
304
|
<div class="ttc" id="aclassSVF_1_1ICFGEdge_html"><div class="ttname"><a href="classSVF_1_1ICFGEdge.html">SVF::ICFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00044">ICFGEdge.h:44</a></div></div>
|
|
305
|
+
<div class="ttc" id="aclassSVF_1_1FunEntryICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunEntryICFGNode.html">SVF::FunEntryICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00261">ICFGNode.h:261</a></div></div>
|
|
277
306
|
<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>
|
|
278
307
|
<div class="ttc" id="anamespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
|
|
279
|
-
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a2c9f8c120522e31124364f485e873608"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">SVF::CFBasicBlockGBuilder::addInterBBEdge</a></div><div class="ttdeci">void addInterBBEdge(ICFG *icfg, Map< const SVFBasicBlock *, std::vector< CFBasicBlockNode * >> &bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#
|
|
308
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a2c9f8c120522e31124364f485e873608"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a2c9f8c120522e31124364f485e873608">SVF::CFBasicBlockGBuilder::addInterBBEdge</a></div><div class="ttdeci">void addInterBBEdge(ICFG *icfg, Map< const SVFBasicBlock *, std::vector< CFBasicBlockNode * >> &bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00125">CFBasicBlockGBuilder.cpp:125</a></div></div>
|
|
280
309
|
<div class="ttc" id="aclassSVF_1_1CFBasicBlockEdge_html"><div class="ttname"><a href="classSVF_1_1CFBasicBlockEdge.html">SVF::CFBasicBlockEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00043">CFBasicBlockG.h:43</a></div></div>
|
|
281
310
|
<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>
|
|
282
311
|
<div class="ttc" id="aclassSVF_1_1RetCFGEdge_html"><div class="ttname"><a href="classSVF_1_1RetCFGEdge.html">SVF::RetCFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGEdge_8h_source.html#l00227">ICFGEdge.h:227</a></div></div>
|
|
283
312
|
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGraph_html_acd6a4b291c9aab8abdc466f985975d0d"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGraph.html#acd6a4b291c9aab8abdc466f985975d0d">SVF::CFBasicBlockGraph::addCFBBEdge</a></div><div class="ttdeci">bool addCFBBEdge(CFBasicBlockEdge *edge)</div><div class="ttdoc">Add ICFGEdgeWrapper.</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00452">CFBasicBlockG.h:452</a></div></div>
|
|
284
313
|
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGraph_html_a4a7a6e00d13b4099c34a3015b4f06a67"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGraph.html#a4a7a6e00d13b4099c34a3015b4f06a67">SVF::CFBasicBlockGraph::addCFBBNode</a></div><div class="ttdeci">virtual void addCFBBNode(CFBasicBlockNode *node)</div><div class="ttdoc">Add a ICFGNodeWrapper.</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00462">CFBasicBlockG.h:462</a></div></div>
|
|
285
|
-
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_ae6c8497f1cd2e3ca63b899ea11757b31"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">SVF::CFBasicBlockGBuilder::addIntraBBEdge</a></div><div class="ttdeci">void addIntraBBEdge(ICFG *icfg, Map< const SVFBasicBlock *, std::vector< CFBasicBlockNode * >> &bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#
|
|
314
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_ae6c8497f1cd2e3ca63b899ea11757b31"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#ae6c8497f1cd2e3ca63b899ea11757b31">SVF::CFBasicBlockGBuilder::addIntraBBEdge</a></div><div class="ttdeci">void addIntraBBEdge(ICFG *icfg, Map< const SVFBasicBlock *, std::vector< CFBasicBlockNode * >> &bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00165">CFBasicBlockGBuilder.cpp:165</a></div></div>
|
|
315
|
+
<div class="ttc" id="aclassSVF_1_1ICFG_html_af1b2d2839f811a00103df87342dfc919"><div class="ttname"><a href="classSVF_1_1ICFG.html#af1b2d2839f811a00103df87342dfc919">SVF::ICFG::getFunExitICFGNode</a></div><div class="ttdeci">FunExitICFGNode * getFunExitICFGNode(const SVFFunction *fun)</div><div class="ttdoc">Add a function exit node.</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00279">ICFG.cpp:279</a></div></div>
|
|
286
316
|
<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#l00522">SVFValue.h:522</a></div></div>
|
|
317
|
+
<div class="ttc" id="aclassSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00114">SVFIR.h:114</a></div></div>
|
|
287
318
|
<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>
|
|
288
|
-
<div class="ttc" id="
|
|
319
|
+
<div class="ttc" id="anamespaceSVF_html_ae6c7046834fe00382052ece7d06eb0ac"><div class="ttname"><a href="namespaceSVF.html#ae6c7046834fe00382052ece7d06eb0ac">SVF::nodes</a></div><div class="ttdeci">iter_range< typename GenericGraphTraits< GraphType >::nodes_iterator > nodes(const GraphType &G)</div><div class="ttdef"><b>Definition:</b> <a href="GraphTraits_8h_source.html#l00111">GraphTraits.h:111</a></div></div>
|
|
320
|
+
<div class="ttc" id="aSVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
|
|
321
|
+
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a2a72cd05458304eaae145532448cf913"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a2a72cd05458304eaae145532448cf913">SVF::CFBasicBlockGBuilder::addInterProceduralEdge</a></div><div class="ttdeci">void addInterProceduralEdge(ICFG *icfg, Map< const SVFBasicBlock *, std::vector< CFBasicBlockNode * >> &bbToNodes)</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8cpp_source.html#l00196">CFBasicBlockGBuilder.cpp:196</a></div></div>
|
|
322
|
+
<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>
|
|
289
323
|
<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>
|
|
290
|
-
<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#
|
|
324
|
+
<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>
|
|
291
325
|
<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#l00147">CFBasicBlockG.h:147</a></div></div>
|
|
326
|
+
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_abb2bbf6e0dc5adae2140a519259e6f17"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17">SVF::SVFUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const SVFInstruction *inst)</div><div class="ttdoc">Return true if it is an llvm intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00247">SVFUtil.cpp:247</a></div></div>
|
|
327
|
+
<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>
|
|
292
328
|
<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>
|
|
329
|
+
<div class="ttc" id="aclassSVF_1_1FunExitICFGNode_html"><div class="ttname"><a href="classSVF_1_1FunExitICFGNode.html">SVF::FunExitICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00324">ICFGNode.h:324</a></div></div>
|
|
293
330
|
<div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
|
|
294
331
|
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGBuilder_html_a4a298a45e54cbaf41cdf44aeea1a63f3"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGBuilder.html#a4a298a45e54cbaf41cdf44aeea1a63f3">SVF::CFBasicBlockGBuilder::_CFBasicBlockG</a></div><div class="ttdeci">CFBasicBlockGraph * _CFBasicBlockG</div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockGBuilder_8h_source.html#l00039">CFBasicBlockGBuilder.h:39</a></div></div>
|
|
295
332
|
<div class="ttc" id="aclassSVF_1_1CFBasicBlockGraph_html"><div class="ttname"><a href="classSVF_1_1CFBasicBlockGraph.html">SVF::CFBasicBlockGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="CFBasicBlockG_8h_source.html#l00350">CFBasicBlockG.h:350</a></div></div>
|