svf-tools 1.0.741 → 1.0.742
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/html/CHGBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +988 -992
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +38 -38
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFType_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +4 -4
- package/SVF-doxygen/html/html/namespaceSVF.html +34 -34
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +855 -859
- package/package.json +1 -1
- package/svf-llvm/lib/LLVMUtil.cpp +6 -10
- package/svf-llvm/lib/SymbolTableBuilder.cpp +1 -1
|
@@ -117,980 +117,976 @@ $(function() {
|
|
|
117
117
|
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div>
|
|
118
118
|
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794"> 54</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aca11801ed6ef6ff8d2a1e85bc0fc5794">LLVMUtil::isObject</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* ref)</div>
|
|
119
119
|
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div>
|
|
120
|
-
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="
|
|
121
|
-
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> 
|
|
122
|
-
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> 
|
|
123
|
-
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> 
|
|
124
|
-
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> 
|
|
125
|
-
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> 
|
|
126
|
-
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> 
|
|
127
|
-
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> 
|
|
128
|
-
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> 
|
|
129
|
-
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  </div>
|
|
130
|
-
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> 
|
|
131
|
-
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> 
|
|
132
|
-
<div class="line"><a name="
|
|
133
|
-
<div class="line"><a name="l00072"></a><span class="lineno"
|
|
134
|
-
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> 
|
|
135
|
-
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> 
|
|
136
|
-
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <
|
|
137
|
-
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <a class="code" href="namespaceSVF.html#
|
|
138
|
-
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> 
|
|
139
|
-
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> 
|
|
140
|
-
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> 
|
|
141
|
-
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> 
|
|
142
|
-
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  bbVec.
|
|
143
|
-
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> 
|
|
144
|
-
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> 
|
|
145
|
-
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> 
|
|
146
|
-
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> 
|
|
147
|
-
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> 
|
|
148
|
-
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> 
|
|
149
|
-
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> 
|
|
150
|
-
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> 
|
|
151
|
-
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> 
|
|
152
|
-
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> 
|
|
153
|
-
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> 
|
|
154
|
-
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="
|
|
155
|
-
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> 
|
|
156
|
-
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> 
|
|
157
|
-
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> 
|
|
158
|
-
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> 
|
|
159
|
-
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> 
|
|
160
|
-
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> 
|
|
161
|
-
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> 
|
|
162
|
-
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> 
|
|
163
|
-
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> 
|
|
164
|
-
<div class="line"><a name="
|
|
165
|
-
<div class="line"><a name="l00107"></a><span class="lineno"
|
|
166
|
-
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> 
|
|
167
|
-
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="
|
|
168
|
-
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> 
|
|
169
|
-
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> 
|
|
170
|
-
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> 
|
|
171
|
-
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> 
|
|
172
|
-
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> 
|
|
173
|
-
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> 
|
|
174
|
-
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  bbVec.
|
|
175
|
-
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> 
|
|
176
|
-
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> 
|
|
177
|
-
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> 
|
|
178
|
-
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> 
|
|
179
|
-
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> 
|
|
180
|
-
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> 
|
|
181
|
-
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> 
|
|
182
|
-
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> 
|
|
183
|
-
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> 
|
|
184
|
-
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> 
|
|
185
|
-
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  </div>
|
|
186
|
-
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> 
|
|
187
|
-
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> 
|
|
188
|
-
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> 
|
|
189
|
-
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="
|
|
190
|
-
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> 
|
|
191
|
-
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> 
|
|
192
|
-
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> 
|
|
193
|
-
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> 
|
|
194
|
-
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> 
|
|
195
|
-
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> 
|
|
196
|
-
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> 
|
|
197
|
-
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> 
|
|
198
|
-
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> 
|
|
199
|
-
<div class="line"><a name="
|
|
200
|
-
<div class="line"><a name="l00145"></a><span class="lineno"
|
|
201
|
-
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> 
|
|
202
|
-
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> 
|
|
203
|
-
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> 
|
|
204
|
-
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> 
|
|
205
|
-
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> 
|
|
206
|
-
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> 
|
|
207
|
-
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> 
|
|
208
|
-
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> 
|
|
209
|
-
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> 
|
|
210
|
-
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> 
|
|
211
|
-
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> 
|
|
212
|
-
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> 
|
|
213
|
-
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="
|
|
214
|
-
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> 
|
|
215
|
-
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> 
|
|
216
|
-
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> 
|
|
217
|
-
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="
|
|
218
|
-
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> 
|
|
219
|
-
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> 
|
|
220
|
-
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> 
|
|
221
|
-
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> 
|
|
222
|
-
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> 
|
|
223
|
-
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> 
|
|
224
|
-
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> 
|
|
225
|
-
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> 
|
|
226
|
-
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> 
|
|
227
|
-
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> 
|
|
228
|
-
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> 
|
|
229
|
-
<div class="line"><a name="
|
|
230
|
-
<div class="line"><a name="l00178"></a><span class="lineno"
|
|
231
|
-
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> 
|
|
232
|
-
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> 
|
|
233
|
-
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> 
|
|
234
|
-
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> 
|
|
235
|
-
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> 
|
|
236
|
-
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> 
|
|
237
|
-
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> 
|
|
238
|
-
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> 
|
|
239
|
-
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> 
|
|
240
|
-
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> 
|
|
241
|
-
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> 
|
|
242
|
-
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> 
|
|
243
|
-
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> 
|
|
244
|
-
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> 
|
|
245
|
-
<div class="line"><a name="l00193"></a><span class="lineno"
|
|
246
|
-
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> 
|
|
247
|
-
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> 
|
|
248
|
-
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  func->getIntrinsicID() == llvm::Intrinsic::
|
|
249
|
-
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  func->getIntrinsicID() == llvm::Intrinsic::
|
|
250
|
-
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  func->getIntrinsicID() == llvm::Intrinsic::
|
|
251
|
-
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> 
|
|
252
|
-
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> 
|
|
253
|
-
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> 
|
|
254
|
-
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> 
|
|
255
|
-
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> 
|
|
256
|
-
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> 
|
|
257
|
-
<div class="line"><a name="
|
|
258
|
-
<div class="line"><a name="l00207"></a><span class="lineno"
|
|
259
|
-
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> 
|
|
260
|
-
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> 
|
|
261
|
-
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> 
|
|
262
|
-
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="
|
|
263
|
-
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> 
|
|
264
|
-
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> 
|
|
265
|
-
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> 
|
|
266
|
-
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> 
|
|
267
|
-
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> 
|
|
268
|
-
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> 
|
|
269
|
-
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> 
|
|
270
|
-
<div class="line"><a name="
|
|
271
|
-
<div class="line"><a name="l00223"></a><span class="lineno"
|
|
272
|
-
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> 
|
|
273
|
-
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> 
|
|
274
|
-
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> 
|
|
275
|
-
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> 
|
|
276
|
-
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> 
|
|
277
|
-
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> 
|
|
278
|
-
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> 
|
|
279
|
-
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> 
|
|
280
|
-
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> 
|
|
281
|
-
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> 
|
|
282
|
-
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> 
|
|
283
|
-
<div class="line"><a name="l00235"></a><span class="lineno"
|
|
284
|
-
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> 
|
|
285
|
-
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> 
|
|
286
|
-
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> 
|
|
287
|
-
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> 
|
|
288
|
-
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> 
|
|
289
|
-
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> 
|
|
290
|
-
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> 
|
|
291
|
-
<div class="line"><a name="l00243"></a><span class="lineno"
|
|
292
|
-
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> 
|
|
293
|
-
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> 
|
|
294
|
-
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> 
|
|
295
|
-
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> 
|
|
296
|
-
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> 
|
|
297
|
-
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> 
|
|
298
|
-
<div class="line"><a name="
|
|
299
|
-
<div class="line"><a name="l00254"></a><span class="lineno"
|
|
300
|
-
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> 
|
|
301
|
-
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> 
|
|
302
|
-
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> 
|
|
303
|
-
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> 
|
|
304
|
-
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> 
|
|
305
|
-
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> 
|
|
306
|
-
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> 
|
|
307
|
-
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> 
|
|
308
|
-
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> 
|
|
309
|
-
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> 
|
|
310
|
-
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> 
|
|
311
|
-
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> 
|
|
312
|
-
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> 
|
|
313
|
-
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> 
|
|
314
|
-
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> 
|
|
315
|
-
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> 
|
|
316
|
-
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> 
|
|
317
|
-
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> 
|
|
318
|
-
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> 
|
|
319
|
-
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> 
|
|
320
|
-
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> 
|
|
321
|
-
<div class="line"><a name="
|
|
322
|
-
<div class="line"><a name="l00278"></a><span class="lineno"
|
|
323
|
-
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> 
|
|
324
|
-
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> 
|
|
325
|
-
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> 
|
|
326
|
-
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">const</span> <a class="code" href="
|
|
327
|
-
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="
|
|
328
|
-
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> 
|
|
329
|
-
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> 
|
|
330
|
-
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> 
|
|
331
|
-
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> 
|
|
332
|
-
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> 
|
|
333
|
-
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> 
|
|
334
|
-
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> 
|
|
335
|
-
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="
|
|
336
|
-
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="
|
|
337
|
-
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> 
|
|
338
|
-
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> 
|
|
339
|
-
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">const</span> <a class="code" href="
|
|
340
|
-
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="
|
|
341
|
-
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> 
|
|
342
|
-
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> 
|
|
343
|
-
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> 
|
|
344
|
-
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> 
|
|
345
|
-
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> 
|
|
346
|
-
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> 
|
|
347
|
-
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> 
|
|
120
|
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(ref) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVFUtil::isStaticExtCall</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFInstruction(SVFUtil::cast<Instruction>(ref))) )</div>
|
|
121
|
+
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
122
|
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Instruction>(ref) && <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFInstruction(SVFUtil::cast<Instruction>(ref))))</div>
|
|
123
|
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
124
|
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalVariable>(ref))</div>
|
|
125
|
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
126
|
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span> (SVFUtil::isa<Function, AllocaInst>(ref))</div>
|
|
127
|
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
128
|
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div>
|
|
129
|
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
130
|
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div>
|
|
131
|
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div>
|
|
132
|
+
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da"> 71</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">LLVMUtil::getFunReachableBBs</a> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun, std::vector<const SVFBasicBlock*> &reachableBBs)</div>
|
|
133
|
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div>
|
|
134
|
+
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  assert(!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getSVFFunction(fun)) && <span class="stringliteral">"The calling function cannot be an external function."</span>);</div>
|
|
135
|
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="comment">//initial DominatorTree</span></div>
|
|
136
|
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <a class="code" href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">DominatorTree</a> dt;</div>
|
|
137
|
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  dt.recalculate(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&<span class="keyword">></span>(*fun));</div>
|
|
138
|
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div>
|
|
139
|
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> visited;</div>
|
|
140
|
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  std::vector<const BasicBlock*> bbVec;</div>
|
|
141
|
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  bbVec.push_back(&fun->getEntryBlock());</div>
|
|
142
|
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">while</span>(!bbVec.empty())</div>
|
|
143
|
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  {</div>
|
|
144
|
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div>
|
|
145
|
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  bbVec.pop_back();</div>
|
|
146
|
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* svfbb = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">getSVFBasicBlock</a>(bb);</div>
|
|
147
|
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  reachableBBs.push_back(svfbb);</div>
|
|
148
|
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">DomTreeNode</a> *dtNode = dt.getNode(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>*<span class="keyword">></span>(bb)))</div>
|
|
149
|
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  {</div>
|
|
150
|
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordflow">for</span> (DomTreeNode::iterator DI = dtNode->begin(), DE = dtNode->end();</div>
|
|
151
|
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  DI != DE; ++DI)</div>
|
|
152
|
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div>
|
|
153
|
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*DI)->getBlock();</div>
|
|
154
|
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div>
|
|
155
|
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  visited.insert(succbb);</div>
|
|
156
|
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">else</span></div>
|
|
157
|
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keywordflow">continue</span>;</div>
|
|
158
|
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  bbVec.push_back(succbb);</div>
|
|
159
|
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div>
|
|
160
|
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  }</div>
|
|
161
|
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  }</div>
|
|
162
|
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> }</div>
|
|
163
|
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div>
|
|
164
|
+
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed"> 106</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">LLVMUtil::functionDoesNotRet</a> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
|
|
165
|
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> {</div>
|
|
166
|
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">getSVFFunction</a>(fun);</div>
|
|
167
|
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVFUtil::isExtCall</a>(svffun))</div>
|
|
168
|
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  {</div>
|
|
169
|
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">return</span> fun-><a class="code" href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">getReturnType</a>()->isVoidTy();</div>
|
|
170
|
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  }</div>
|
|
171
|
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  std::vector<const BasicBlock*> bbVec;</div>
|
|
172
|
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<const BasicBlock*></a> visited;</div>
|
|
173
|
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  bbVec.push_back(&fun->getEntryBlock());</div>
|
|
174
|
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="keywordflow">while</span>(!bbVec.empty())</div>
|
|
175
|
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  {</div>
|
|
176
|
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bbVec.back();</div>
|
|
177
|
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  bbVec.pop_back();</div>
|
|
178
|
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb->begin(), eit = bb->end();</div>
|
|
179
|
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  it != eit; ++it)</div>
|
|
180
|
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div>
|
|
181
|
+
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>(SVFUtil::isa<ReturnInst>(*it))</div>
|
|
182
|
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
183
|
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div>
|
|
184
|
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  </div>
|
|
185
|
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> sit = succ_begin(bb), esit = succ_end(bb);</div>
|
|
186
|
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  sit != esit; ++sit)</div>
|
|
187
|
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  {</div>
|
|
188
|
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succbb = (*sit);</div>
|
|
189
|
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(visited.find(succbb)==visited.end())</div>
|
|
190
|
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  visited.insert(succbb);</div>
|
|
191
|
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">else</span></div>
|
|
192
|
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">continue</span>;</div>
|
|
193
|
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  bbVec.push_back(succbb);</div>
|
|
194
|
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div>
|
|
195
|
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div>
|
|
196
|
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
197
|
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> }</div>
|
|
198
|
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div>
|
|
199
|
+
<div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b"> 144</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">LLVMUtil::isUncalledFunction</a> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
|
|
200
|
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> {</div>
|
|
201
|
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span>(fun->hasAddressTaken())</div>
|
|
202
|
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
203
|
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">LLVMUtil::isProgEntryFunction</a>(fun))</div>
|
|
204
|
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
205
|
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">for</span> (Value::const_user_iterator i = fun->user_begin(), e = fun->user_end(); i != e; ++i)</div>
|
|
206
|
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  {</div>
|
|
207
|
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(*i))</div>
|
|
208
|
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
209
|
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div>
|
|
210
|
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->hasDeclaration(fun))</div>
|
|
211
|
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div>
|
|
212
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">LLVMModuleSet::FunctionSetType</a> &decls = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#aa4a604e47daaaf95babc7aca68991000">getDeclaration</a>(fun);</div>
|
|
213
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">for</span> (LLVMModuleSet::FunctionSetType::const_iterator it = decls.begin(),</div>
|
|
214
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  eit = decls.end(); it != eit; ++it)</div>
|
|
215
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div>
|
|
216
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* decl = *it;</div>
|
|
217
|
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span>(decl->hasAddressTaken())</div>
|
|
218
|
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
219
|
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span> (Value::const_user_iterator i = decl->user_begin(), e = decl->user_end(); i != e; ++i)</div>
|
|
220
|
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  {</div>
|
|
221
|
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">LLVMUtil::isCallSite</a>(*i))</div>
|
|
222
|
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
223
|
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div>
|
|
224
|
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div>
|
|
225
|
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  }</div>
|
|
226
|
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
227
|
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div>
|
|
228
|
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div>
|
|
229
|
+
<div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be"> 177</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">LLVMUtil::isPtrInUncalledFunction</a> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value)</div>
|
|
230
|
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> {</div>
|
|
231
|
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(value))</div>
|
|
232
|
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div>
|
|
233
|
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(inst->getParent()->getParent()))</div>
|
|
234
|
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
235
|
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  }</div>
|
|
236
|
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* arg = SVFUtil::dyn_cast<Argument>(value))</div>
|
|
237
|
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  {</div>
|
|
238
|
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">isUncalledFunction</a>(arg->getParent()))</div>
|
|
239
|
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
240
|
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  }</div>
|
|
241
|
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
242
|
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> }</div>
|
|
243
|
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  </div>
|
|
244
|
+
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b"> 192</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">LLVMUtil::isIntrinsicFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func)</div>
|
|
245
|
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> {</div>
|
|
246
|
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span> (func && (func->getIntrinsicID() == llvm::Intrinsic::donothing ||</div>
|
|
247
|
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  func->getIntrinsicID() == llvm::Intrinsic::dbg_addr ||</div>
|
|
248
|
+
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  func->getIntrinsicID() == llvm::Intrinsic::dbg_declare ||</div>
|
|
249
|
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  func->getIntrinsicID() == llvm::Intrinsic::dbg_label ||</div>
|
|
250
|
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  func->getIntrinsicID() == llvm::Intrinsic::dbg_value))</div>
|
|
251
|
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  {</div>
|
|
252
|
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
253
|
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div>
|
|
254
|
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
255
|
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> }</div>
|
|
256
|
+
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  </div>
|
|
257
|
+
<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1"> 206</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div>
|
|
258
|
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> {</div>
|
|
259
|
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* call = SVFUtil::dyn_cast<CallBase>(inst))</div>
|
|
260
|
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  {</div>
|
|
261
|
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = call->getCalledFunction();</div>
|
|
262
|
+
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">isIntrinsicFun</a>(func))</div>
|
|
263
|
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  {</div>
|
|
264
|
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
265
|
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  }</div>
|
|
266
|
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div>
|
|
267
|
+
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
268
|
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div>
|
|
269
|
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div>
|
|
270
|
+
<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f"> 222</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">LLVMUtil::stripConstantCasts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
271
|
+
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> {</div>
|
|
272
|
+
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (SVFUtil::isa<GlobalValue>(val) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">isInt2PtrConstantExpr</a>(val))</div>
|
|
273
|
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordflow">return</span> val;</div>
|
|
274
|
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *CE = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
275
|
+
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div>
|
|
276
|
+
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="keywordflow">if</span> (Instruction::isCast(CE->getOpcode()))</div>
|
|
277
|
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(CE->getOperand(0));</div>
|
|
278
|
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div>
|
|
279
|
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordflow">return</span> val;</div>
|
|
280
|
+
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> }</div>
|
|
281
|
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  </div>
|
|
282
|
+
<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f"> 234</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">LLVMUtil::viewCFG</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
|
|
283
|
+
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> {</div>
|
|
284
|
+
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
|
|
285
|
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  {</div>
|
|
286
|
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  fun->viewCFG();</div>
|
|
287
|
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  }</div>
|
|
288
|
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> }</div>
|
|
289
|
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  </div>
|
|
290
|
+
<div class="line"><a name="l00242"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd"> 242</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">LLVMUtil::viewCFGOnly</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
|
|
291
|
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> {</div>
|
|
292
|
+
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="keywordflow">if</span> (fun != <span class="keyword">nullptr</span>)</div>
|
|
293
|
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  {</div>
|
|
294
|
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  fun->viewCFGOnly();</div>
|
|
295
|
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  }</div>
|
|
296
|
+
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> }</div>
|
|
297
|
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div>
|
|
298
|
+
<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c"> 253</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">LLVMUtil::stripAllCasts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
299
|
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> {</div>
|
|
300
|
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div>
|
|
301
|
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  {</div>
|
|
302
|
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">CastInst</a> *ci = SVFUtil::dyn_cast<CastInst>(val))</div>
|
|
303
|
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  {</div>
|
|
304
|
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  val = ci->getOperand(0);</div>
|
|
305
|
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  }</div>
|
|
306
|
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">ConstantExpr</a> *ce = SVFUtil::dyn_cast<ConstantExpr>(val))</div>
|
|
307
|
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  {</div>
|
|
308
|
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordflow">if</span>(ce->isCast())</div>
|
|
309
|
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  val = ce->getOperand(0);</div>
|
|
310
|
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordflow">else</span></div>
|
|
311
|
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordflow">return</span> val;</div>
|
|
312
|
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  }</div>
|
|
313
|
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="keywordflow">else</span></div>
|
|
314
|
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  {</div>
|
|
315
|
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordflow">return</span> val;</div>
|
|
316
|
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  }</div>
|
|
317
|
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  }</div>
|
|
318
|
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
319
|
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> }</div>
|
|
320
|
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div>
|
|
321
|
+
<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7"> 277</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector<const SVFInstruction*>& instList)</div>
|
|
322
|
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> {</div>
|
|
323
|
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</div>
|
|
324
|
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div>
|
|
325
|
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst->getNextNode();</div>
|
|
326
|
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(nextInst);</div>
|
|
327
|
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
328
|
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
329
|
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">else</span></div>
|
|
330
|
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  instList.push_back(svfNextInst);</div>
|
|
331
|
+
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  }</div>
|
|
332
|
+
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">else</span></div>
|
|
333
|
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  {</div>
|
|
334
|
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst->getParent();</div>
|
|
335
|
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
336
|
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
|
|
337
|
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  {</div>
|
|
338
|
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &((*it)->front());</div>
|
|
339
|
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfNextInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(nextInst);</div>
|
|
340
|
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
341
|
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
342
|
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordflow">else</span></div>
|
|
343
|
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  instList.push_back(svfNextInst);</div>
|
|
344
|
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  }</div>
|
|
345
|
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  }</div>
|
|
346
|
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> }</div>
|
|
347
|
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  </div>
|
|
348
348
|
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  </div>
|
|
349
|
-
<div class="line"><a name="
|
|
350
|
-
<div class="line"><a name="l00307"></a><span class="lineno"
|
|
351
|
-
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> 
|
|
352
|
-
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  </div>
|
|
353
|
-
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> 
|
|
354
|
-
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> 
|
|
355
|
-
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">const</span> <a class="code" href="
|
|
356
|
-
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="
|
|
357
|
-
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> 
|
|
358
|
-
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> 
|
|
359
|
-
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> 
|
|
360
|
-
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> 
|
|
361
|
-
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> 
|
|
362
|
-
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> 
|
|
363
|
-
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> 
|
|
364
|
-
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="
|
|
365
|
-
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="
|
|
366
|
-
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> 
|
|
367
|
-
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> 
|
|
368
|
-
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">const</span> <a class="code" href="
|
|
369
|
-
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="
|
|
370
|
-
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> 
|
|
371
|
-
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> 
|
|
372
|
-
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> 
|
|
373
|
-
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> 
|
|
374
|
-
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> 
|
|
375
|
-
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> 
|
|
376
|
-
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> 
|
|
377
|
-
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> 
|
|
378
|
-
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="comment"
|
|
379
|
-
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="comment"> *
|
|
380
|
-
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment"> *
|
|
381
|
-
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment">
|
|
382
|
-
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="
|
|
383
|
-
<div class="line"><a name="l00340"></a><span class="lineno"
|
|
384
|
-
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> 
|
|
385
|
-
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <
|
|
386
|
-
<div class="line"><a name="
|
|
387
|
-
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> 
|
|
388
|
-
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> 
|
|
389
|
-
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> 
|
|
390
|
-
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> 
|
|
391
|
-
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="
|
|
392
|
-
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> 
|
|
393
|
-
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> 
|
|
394
|
-
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> 
|
|
395
|
-
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> 
|
|
396
|
-
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> 
|
|
397
|
-
<div class="line"><a name="
|
|
398
|
-
<div class="line"><a name="l00359"></a><span class="lineno"
|
|
399
|
-
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> 
|
|
400
|
-
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keyword">const</span> <a class="code" href="
|
|
401
|
-
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="
|
|
402
|
-
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> 
|
|
403
|
-
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> 
|
|
404
|
-
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> 
|
|
405
|
-
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> 
|
|
406
|
-
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> 
|
|
407
|
-
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> 
|
|
408
|
-
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> 
|
|
409
|
-
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> 
|
|
410
|
-
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> 
|
|
411
|
-
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> 
|
|
412
|
-
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="
|
|
413
|
-
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="
|
|
414
|
-
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <
|
|
415
|
-
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> 
|
|
416
|
-
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> 
|
|
417
|
-
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> 
|
|
418
|
-
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> 
|
|
419
|
-
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> 
|
|
420
|
-
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> 
|
|
421
|
-
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  </div>
|
|
422
|
-
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> 
|
|
423
|
-
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> 
|
|
424
|
-
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> 
|
|
425
|
-
<div class="line"><a name="
|
|
426
|
-
<div class="line"><a name="l00390"></a><span class="lineno"
|
|
427
|
-
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> 
|
|
428
|
-
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <a class="code" href="namespaceSVF.html#
|
|
429
|
-
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> 
|
|
430
|
-
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> 
|
|
431
|
-
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> 
|
|
432
|
-
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> 
|
|
433
|
-
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> 
|
|
434
|
-
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="comment"
|
|
435
|
-
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment"> *
|
|
436
|
-
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="comment"> * llvm::
|
|
437
|
-
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="comment">
|
|
438
|
-
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> <span class="
|
|
439
|
-
<div class="line"><a name="l00403"></a><span class="lineno"
|
|
440
|
-
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> 
|
|
441
|
-
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> 
|
|
442
|
-
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> 
|
|
443
|
-
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> 
|
|
444
|
-
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> 
|
|
445
|
-
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> 
|
|
446
|
-
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> 
|
|
447
|
-
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> 
|
|
448
|
-
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span> 
|
|
449
|
-
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span> 
|
|
450
|
-
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> 
|
|
451
|
-
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> 
|
|
349
|
+
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd"> 306</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector<const SVFInstruction*>& instList)</div>
|
|
350
|
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> {</div>
|
|
351
|
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div>
|
|
352
|
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordflow">if</span> (curInst != &(curInst->getParent()->front()))</div>
|
|
353
|
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  {</div>
|
|
354
|
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst->getPrevNode();</div>
|
|
355
|
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(prevInst);</div>
|
|
356
|
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
357
|
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
358
|
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="keywordflow">else</span></div>
|
|
359
|
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  instList.push_back(svfPrevInst);</div>
|
|
360
|
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  }</div>
|
|
361
|
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="keywordflow">else</span></div>
|
|
362
|
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div>
|
|
363
|
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB = curInst->getParent();</div>
|
|
364
|
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
365
|
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
|
|
366
|
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  {</div>
|
|
367
|
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &((*it)->back());</div>
|
|
368
|
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfPrevInst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(prevInst);</div>
|
|
369
|
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
370
|
+
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
371
|
+
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">else</span></div>
|
|
372
|
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  instList.push_back(svfPrevInst);</div>
|
|
373
|
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  }</div>
|
|
374
|
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  }</div>
|
|
375
|
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> }</div>
|
|
376
|
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  </div>
|
|
377
|
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="comment">/*</span></div>
|
|
378
|
+
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="comment"> * Get the first dominated cast instruction for heap allocations since they typically come from void* (i8*)</span></div>
|
|
379
|
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="comment"> * for example, %4 = call align 16 i8* @malloc(i64 10); %5 = bitcast i8* %4 to i32*</span></div>
|
|
380
|
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment"> * return %5 whose type is i32* but not %4 whose type is i8*</span></div>
|
|
381
|
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="comment"> */</span></div>
|
|
382
|
+
<div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b"> 339</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">LLVMUtil::getUniqueUseViaCastInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
383
|
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> {</div>
|
|
384
|
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a> * <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast<PointerType>(val->getType());</div>
|
|
385
|
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> && <span class="stringliteral">"this value should be a pointer type!"</span>);</div>
|
|
386
|
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a3d9e7f32dc17fe8d40f8d6a011403b91">IntegerType</a> *IT = SVFUtil::dyn_cast<IntegerType>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)))</div>
|
|
387
|
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  {</div>
|
|
388
|
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="keywordflow">if</span> (IT->getBitWidth() == 8 && val->getNumUses()==1)</div>
|
|
389
|
+
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  {</div>
|
|
390
|
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">Use</a> *u = &*val->use_begin();</div>
|
|
391
|
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="keywordflow">return</span> SVFUtil::dyn_cast<BitCastInst>(u->getUser());</div>
|
|
392
|
+
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div>
|
|
393
|
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div>
|
|
394
|
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
|
|
395
|
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> }</div>
|
|
396
|
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  </div>
|
|
397
|
+
<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47"> 358</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47">LLVMUtil::getTypeOfHeapAlloc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</div>
|
|
398
|
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> {</div>
|
|
399
|
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast<PointerType>(inst->getType());</div>
|
|
400
|
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* svfinst = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">getSVFInstruction</a>(inst);</div>
|
|
401
|
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVFUtil::isHeapAllocExtCallViaRet</a>(svfinst))</div>
|
|
402
|
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  {</div>
|
|
403
|
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* v = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">getUniqueUseViaCastInst</a>(inst))</div>
|
|
404
|
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  {</div>
|
|
405
|
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* newTy = SVFUtil::dyn_cast<PointerType>(v->getType()))</div>
|
|
406
|
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = newTy;</div>
|
|
407
|
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  }</div>
|
|
408
|
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  }</div>
|
|
409
|
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVFUtil::isHeapAllocExtCallViaArg</a>(svfinst))</div>
|
|
410
|
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  {</div>
|
|
411
|
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">LLVMUtil::getLLVMCallSite</a>(inst);</div>
|
|
412
|
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="keywordtype">int</span> arg_pos = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a73215bac62f1340a58f6c7f2ba9b0e7b">SVFUtil::getHeapAllocHoldingArgPosition</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVFUtil::getSVFCallSite</a>(svfinst));</div>
|
|
413
|
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* arg = cs->getArgOperand(arg_pos);</div>
|
|
414
|
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = SVFUtil::dyn_cast<PointerType>(arg->getType());</div>
|
|
415
|
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  }</div>
|
|
416
|
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">else</span></div>
|
|
417
|
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div>
|
|
418
|
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  assert( <span class="keyword">false</span> && <span class="stringliteral">"not a heap allocation instruction?"</span>);</div>
|
|
419
|
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  }</div>
|
|
420
|
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  </div>
|
|
421
|
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  assert(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> && <span class="stringliteral">"not a pointer type?"</span>);</div>
|
|
422
|
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>);</div>
|
|
423
|
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> }</div>
|
|
424
|
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  </div>
|
|
425
|
+
<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987"> 389</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">LLVMUtil::getBBPredecessorNum</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* BB)</div>
|
|
426
|
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> {</div>
|
|
427
|
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = 0;</div>
|
|
428
|
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), et = pred_end(BB); it != et; ++it)</div>
|
|
429
|
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  num++;</div>
|
|
430
|
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="keywordflow">return</span> num;</div>
|
|
431
|
+
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> }</div>
|
|
432
|
+
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  </div>
|
|
433
|
+
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="comment">/*</span></div>
|
|
434
|
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="comment"> * Reference functions:</span></div>
|
|
435
|
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment"> * llvm::parseIRFile (lib/IRReader/IRReader.cpp)</span></div>
|
|
436
|
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="comment"> * llvm::parseIR (lib/IRReader/IRReader.cpp)</span></div>
|
|
437
|
+
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> <span class="comment"> */</span></div>
|
|
438
|
+
<div class="line"><a name="l00402"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41"> 402</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &filename)</div>
|
|
439
|
+
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> {</div>
|
|
440
|
+
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>> FileOrErr = llvm::MemoryBuffer::getFileOrSTDIN(filename);</div>
|
|
441
|
+
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">if</span> (FileOrErr.getError())</div>
|
|
442
|
+
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
443
|
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  llvm::MemoryBufferRef Buffer = FileOrErr.get()->getMemBufferRef();</div>
|
|
444
|
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferStart =</div>
|
|
445
|
+
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferStart();</div>
|
|
446
|
+
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *bufferEnd =</div>
|
|
447
|
+
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer.getBufferEnd();</div>
|
|
448
|
+
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="keywordflow">return</span> llvm::isBitcode(bufferStart, bufferEnd) ? <a class="code" href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a> :</div>
|
|
449
|
+
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  Buffer.getBuffer().startswith(<span class="stringliteral">"; ModuleID ="</span>);</div>
|
|
450
|
+
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> }</div>
|
|
451
|
+
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  </div>
|
|
452
452
|
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  </div>
|
|
453
|
-
<div class="line"><a name="
|
|
454
|
-
<div class="line"><a name="l00420"></a><span class="lineno"
|
|
455
|
-
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> 
|
|
456
|
-
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> 
|
|
457
|
-
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="
|
|
458
|
-
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> 
|
|
459
|
-
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> 
|
|
460
|
-
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <a class="code" href="
|
|
461
|
-
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> 
|
|
462
|
-
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> 
|
|
463
|
-
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> 
|
|
464
|
-
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> 
|
|
465
|
-
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> 
|
|
466
|
-
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> 
|
|
467
|
-
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> 
|
|
468
|
-
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> 
|
|
469
|
-
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> 
|
|
470
|
-
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> 
|
|
471
|
-
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> 
|
|
472
|
-
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> 
|
|
473
|
-
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> 
|
|
474
|
-
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> 
|
|
475
|
-
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> 
|
|
476
|
-
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> 
|
|
477
|
-
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> 
|
|
478
|
-
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> 
|
|
479
|
-
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> 
|
|
453
|
+
<div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732"> 419</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keywordtype">int</span> &arg_num, <span class="keywordtype">char</span> **arg_value,</div>
|
|
454
|
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  std::vector<std::string> &moduleNameVec)</div>
|
|
455
|
+
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> {</div>
|
|
456
|
+
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="keywordtype">bool</span> first_ir_file = <span class="keyword">true</span>;</div>
|
|
457
|
+
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < argc; ++i)</div>
|
|
458
|
+
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  {</div>
|
|
459
|
+
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> argument(argv[i]);</div>
|
|
460
|
+
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">LLVMUtil::isIRFile</a>(argument))</div>
|
|
461
|
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  {</div>
|
|
462
|
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span> (find(moduleNameVec.begin(), moduleNameVec.end(), argument)</div>
|
|
463
|
+
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  == moduleNameVec.end())</div>
|
|
464
|
+
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  moduleNameVec.push_back(argument);</div>
|
|
465
|
+
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="keywordflow">if</span> (first_ir_file)</div>
|
|
466
|
+
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  {</div>
|
|
467
|
+
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  arg_value[arg_num] = argv[i];</div>
|
|
468
|
+
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  arg_num++;</div>
|
|
469
|
+
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>  first_ir_file = <span class="keyword">false</span>;</div>
|
|
470
|
+
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  }</div>
|
|
471
|
+
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  }</div>
|
|
472
|
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keywordflow">else</span></div>
|
|
473
|
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  {</div>
|
|
474
|
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  arg_value[arg_num] = argv[i];</div>
|
|
475
|
+
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  arg_num++;</div>
|
|
476
|
+
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  }</div>
|
|
477
|
+
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  }</div>
|
|
478
|
+
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> }</div>
|
|
479
|
+
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  </div>
|
|
480
480
|
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  </div>
|
|
481
|
-
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> 
|
|
482
|
-
<div class="line"><a name="l00448"></a><span class="lineno"
|
|
483
|
-
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> 
|
|
484
|
-
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  </div>
|
|
485
|
-
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="
|
|
486
|
-
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> 
|
|
487
|
-
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> 
|
|
488
|
-
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> 
|
|
489
|
-
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> 
|
|
490
|
-
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> 
|
|
491
|
-
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> 
|
|
492
|
-
<div class="line"><a name="l00458"></a><span class="lineno"
|
|
493
|
-
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> 
|
|
494
|
-
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  </div>
|
|
495
|
-
<div class="line"><a name="
|
|
496
|
-
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> 
|
|
497
|
-
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> 
|
|
498
|
-
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span> 
|
|
499
|
-
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> 
|
|
500
|
-
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> 
|
|
501
|
-
<div class="line"><a name="
|
|
502
|
-
<div class="line"><a name="l00472"></a><span class="lineno"
|
|
503
|
-
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> {
|
|
504
|
-
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> 
|
|
505
|
-
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  </div>
|
|
506
|
-
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> 
|
|
507
|
-
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> 
|
|
508
|
-
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span> 
|
|
509
|
-
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  </div>
|
|
510
|
-
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> 
|
|
511
|
-
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> 
|
|
512
|
-
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> 
|
|
513
|
-
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> 
|
|
514
|
-
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> 
|
|
515
|
-
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> 
|
|
516
|
-
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> 
|
|
517
|
-
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> 
|
|
518
|
-
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> 
|
|
519
|
-
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> 
|
|
520
|
-
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> 
|
|
521
|
-
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> 
|
|
522
|
-
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span> 
|
|
523
|
-
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> 
|
|
524
|
-
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> 
|
|
525
|
-
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> 
|
|
526
|
-
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> 
|
|
527
|
-
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordtype">unsigned</span>
|
|
528
|
-
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <
|
|
529
|
-
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <
|
|
530
|
-
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="
|
|
531
|
-
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> 
|
|
532
|
-
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> 
|
|
533
|
-
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="
|
|
534
|
-
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> 
|
|
535
|
-
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> 
|
|
536
|
-
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> 
|
|
537
|
-
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> 
|
|
538
|
-
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> 
|
|
539
|
-
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span> 
|
|
540
|
-
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> 
|
|
541
|
-
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> 
|
|
542
|
-
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> 
|
|
543
|
-
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> 
|
|
544
|
-
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> 
|
|
545
|
-
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> 
|
|
546
|
-
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> 
|
|
547
|
-
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> 
|
|
548
|
-
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> 
|
|
549
|
-
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> 
|
|
550
|
-
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> 
|
|
551
|
-
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> 
|
|
552
|
-
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> 
|
|
553
|
-
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> 
|
|
554
|
-
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> 
|
|
555
|
-
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> 
|
|
556
|
-
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> 
|
|
557
|
-
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> 
|
|
558
|
-
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> 
|
|
559
|
-
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> 
|
|
560
|
-
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <
|
|
561
|
-
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> 
|
|
562
|
-
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> 
|
|
563
|
-
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> 
|
|
564
|
-
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> 
|
|
565
|
-
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  llvm::
|
|
566
|
-
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> 
|
|
567
|
-
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> 
|
|
568
|
-
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> 
|
|
569
|
-
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  </div>
|
|
570
|
-
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> 
|
|
571
|
-
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> 
|
|
572
|
-
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> 
|
|
573
|
-
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> 
|
|
574
|
-
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> 
|
|
575
|
-
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> 
|
|
576
|
-
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> 
|
|
577
|
-
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> 
|
|
578
|
-
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> 
|
|
579
|
-
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> 
|
|
580
|
-
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> 
|
|
581
|
-
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> 
|
|
582
|
-
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> 
|
|
583
|
-
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> 
|
|
584
|
-
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span> 
|
|
585
|
-
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> 
|
|
586
|
-
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> 
|
|
587
|
-
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> 
|
|
588
|
-
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> 
|
|
589
|
-
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> 
|
|
590
|
-
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> 
|
|
591
|
-
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> 
|
|
592
|
-
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> 
|
|
593
|
-
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> 
|
|
594
|
-
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  }
|
|
595
|
-
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> 
|
|
596
|
-
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  </div>
|
|
597
|
-
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> 
|
|
598
|
-
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> 
|
|
599
|
-
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> 
|
|
600
|
-
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> 
|
|
481
|
+
<div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d"> 447</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div>
|
|
482
|
+
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> {</div>
|
|
483
|
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  </div>
|
|
484
|
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// if the type has size then simply return it, otherwise just return 0</span></div>
|
|
485
|
+
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="keywordflow">if</span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>->isSized())</div>
|
|
486
|
+
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule())->getTypeStoreSize(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>*<span class="keyword">></span>(<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>));</div>
|
|
487
|
+
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="keywordflow">else</span></div>
|
|
488
|
+
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="keywordflow">return</span> 0;</div>
|
|
489
|
+
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> }</div>
|
|
490
|
+
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  </div>
|
|
491
|
+
<div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b5fdf455c5dd40c0baa60185e5e41c6"> 457</a></span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">LLVMUtil::getTypeSizeInBytes</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *sty, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> field_idx)</div>
|
|
492
|
+
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> {</div>
|
|
493
|
+
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  </div>
|
|
494
|
+
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">StructLayout</a> *stTySL = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">getDataLayout</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getMainLLVMModule())->getStructLayout( <span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *<span class="keyword">></span>(sty) );</div>
|
|
495
|
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keywordflow">if</span>(sty->isOpaque())</div>
|
|
496
|
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="keywordflow">return</span> 0;</div>
|
|
497
|
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="keywordflow">else</span></div>
|
|
498
|
+
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="keywordflow">return</span> stTySL->getElementOffset(field_idx);</div>
|
|
499
|
+
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> }</div>
|
|
500
|
+
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  </div>
|
|
501
|
+
<div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8"> 471</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">LLVMUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val )</div>
|
|
502
|
+
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> {</div>
|
|
503
|
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">"{ empty val }"</span>;</div>
|
|
504
|
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  </div>
|
|
505
|
+
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
506
|
+
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  std::stringstream rawstr(str);</div>
|
|
507
|
+
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  rawstr << <span class="stringliteral">"{ "</span>;</div>
|
|
508
|
+
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  </div>
|
|
509
|
+
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast<Instruction>(val))</div>
|
|
510
|
+
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  {</div>
|
|
511
|
+
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="keywordflow">if</span> (SVFUtil::isa<AllocaInst>(inst))</div>
|
|
512
|
+
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  {</div>
|
|
513
|
+
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(<span class="keyword">const_cast<</span><a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>*<span class="keyword">></span>(inst)))</div>
|
|
514
|
+
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  {</div>
|
|
515
|
+
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast<llvm::DbgDeclareInst>(DII))</div>
|
|
516
|
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  {</div>
|
|
517
|
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  llvm::DIVariable *DIVar = SVFUtil::cast<llvm::DIVariable>(DDI->getVariable());</div>
|
|
518
|
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DIVar->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DIVar->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
519
|
+
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="keywordflow">break</span>;</div>
|
|
520
|
+
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  }</div>
|
|
521
|
+
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  }</div>
|
|
522
|
+
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  }</div>
|
|
523
|
+
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst->getMetadata(<span class="stringliteral">"dbg"</span>)) <span class="comment">// Here I is an LLVM instruction</span></div>
|
|
524
|
+
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  {</div>
|
|
525
|
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  llvm::DILocation* Loc = SVFUtil::cast<llvm::DILocation>(N); <span class="comment">// DILocation is in DebugInfo.h</span></div>
|
|
526
|
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="keywordtype">unsigned</span> Line = Loc->getLine();</div>
|
|
527
|
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="keywordtype">unsigned</span> Column = Loc->getColumn();</div>
|
|
528
|
+
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc->getFilename().str();</div>
|
|
529
|
+
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div>
|
|
530
|
+
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">if</span>(File.empty() || Line == 0)</div>
|
|
531
|
+
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  {</div>
|
|
532
|
+
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="keyword">auto</span> inlineLoc = Loc->getInlinedAt();</div>
|
|
533
|
+
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span>(inlineLoc)</div>
|
|
534
|
+
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  {</div>
|
|
535
|
+
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  Line = inlineLoc->getLine();</div>
|
|
536
|
+
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  Column = inlineLoc->getColumn();</div>
|
|
537
|
+
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  File = inlineLoc->getFilename().str();</div>
|
|
538
|
+
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  }</div>
|
|
539
|
+
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  }</div>
|
|
540
|
+
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << Line << <span class="stringliteral">", \"cl\": "</span> << Column << <span class="stringliteral">", \"fl\": \""</span> << File << <span class="stringliteral">"\""</span>;</div>
|
|
541
|
+
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  }</div>
|
|
542
|
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  }</div>
|
|
543
|
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast<Argument>(val))</div>
|
|
544
|
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  {</div>
|
|
545
|
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keywordflow">if</span> (argument->getArgNo()%10 == 1)</div>
|
|
546
|
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"st"</span>;</div>
|
|
547
|
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument->getArgNo()%10 == 2)</div>
|
|
548
|
+
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"nd"</span>;</div>
|
|
549
|
+
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument->getArgNo()%10 == 3)</div>
|
|
550
|
+
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"rd"</span>;</div>
|
|
551
|
+
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="keywordflow">else</span></div>
|
|
552
|
+
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  rawstr << argument->getArgNo() << <span class="stringliteral">"th"</span>;</div>
|
|
553
|
+
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  rawstr << <span class="stringliteral">" arg "</span> << argument->getParent()->getName().str() << <span class="stringliteral">" "</span></div>
|
|
554
|
+
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(argument->getParent());</div>
|
|
555
|
+
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  }</div>
|
|
556
|
+
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
557
|
+
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  {</div>
|
|
558
|
+
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  rawstr << <span class="stringliteral">"Glob "</span>;</div>
|
|
559
|
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar->getParent()->getNamedMetadata(<span class="stringliteral">"llvm.dbg.cu"</span>);</div>
|
|
560
|
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="keywordflow">if</span>(CU_Nodes)</div>
|
|
561
|
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  {</div>
|
|
562
|
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes->getNumOperands(); i != e; ++i)</div>
|
|
563
|
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  {</div>
|
|
564
|
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  llvm::DICompileUnit *CUNode = SVFUtil::cast<llvm::DICompileUnit>(CU_Nodes->getOperand(i));</div>
|
|
565
|
+
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode->getGlobalVariables())</div>
|
|
566
|
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  {</div>
|
|
567
|
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  llvm::DIGlobalVariable * DGV = GV->getVariable();</div>
|
|
568
|
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  </div>
|
|
569
|
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">if</span>(DGV->getName() == gvar->getName())</div>
|
|
570
|
+
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  {</div>
|
|
571
|
+
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << DGV->getLine() << <span class="stringliteral">", \"fl\": \""</span> << DGV->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
572
|
+
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  }</div>
|
|
573
|
+
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  </div>
|
|
574
|
+
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  }</div>
|
|
575
|
+
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  }</div>
|
|
576
|
+
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  }</div>
|
|
577
|
+
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  }</div>
|
|
578
|
+
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast<Function>(val))</div>
|
|
579
|
+
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  {</div>
|
|
580
|
+
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  rawstr << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">getSourceLocOfFunction</a>(func);</div>
|
|
581
|
+
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  }</div>
|
|
582
|
+
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast<BasicBlock>(val))</div>
|
|
583
|
+
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  {</div>
|
|
584
|
+
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  rawstr << <span class="stringliteral">"\"basic block\": "</span> << bb->getName().str() << <span class="stringliteral">", \"location\": "</span> << <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">getSourceLoc</a>(bb->getFirstNonPHI());</div>
|
|
585
|
+
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  }</div>
|
|
586
|
+
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val))</div>
|
|
587
|
+
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  {</div>
|
|
588
|
+
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  rawstr << <span class="stringliteral">"constant data"</span>;</div>
|
|
589
|
+
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  }</div>
|
|
590
|
+
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  <span class="keywordflow">else</span></div>
|
|
591
|
+
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  {</div>
|
|
592
|
+
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  rawstr << <span class="stringliteral">"N/A"</span>;</div>
|
|
593
|
+
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  }</div>
|
|
594
|
+
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  rawstr << <span class="stringliteral">" }"</span>;</div>
|
|
595
|
+
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  </div>
|
|
596
|
+
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">"{ }"</span>)</div>
|
|
597
|
+
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
|
|
598
|
+
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
599
|
+
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> }</div>
|
|
600
|
+
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  </div>
|
|
601
601
|
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  </div>
|
|
602
|
-
<div class="line"><a name="
|
|
603
|
-
<div class="line"><a name="l00576"></a><span class="lineno"
|
|
604
|
-
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> 
|
|
605
|
-
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span> 
|
|
606
|
-
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span> 
|
|
607
|
-
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> 
|
|
608
|
-
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="comment"> *
|
|
609
|
-
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="comment">
|
|
610
|
-
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span> 
|
|
611
|
-
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> 
|
|
612
|
-
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> 
|
|
613
|
-
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> 
|
|
614
|
-
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> 
|
|
615
|
-
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> 
|
|
616
|
-
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> 
|
|
617
|
-
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> 
|
|
618
|
-
<div class="line"><a name="
|
|
619
|
-
<div class="line"><a name="l00593"></a><span class="lineno"
|
|
620
|
-
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> 
|
|
621
|
-
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> 
|
|
622
|
-
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> 
|
|
623
|
-
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="
|
|
624
|
-
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> 
|
|
625
|
-
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> 
|
|
626
|
-
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> 
|
|
627
|
-
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> 
|
|
628
|
-
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> 
|
|
629
|
-
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> 
|
|
630
|
-
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> 
|
|
631
|
-
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="
|
|
632
|
-
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="
|
|
633
|
-
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> 
|
|
634
|
-
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> 
|
|
635
|
-
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="
|
|
636
|
-
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> 
|
|
637
|
-
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> 
|
|
638
|
-
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> 
|
|
639
|
-
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> 
|
|
640
|
-
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> 
|
|
641
|
-
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> 
|
|
642
|
-
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> 
|
|
602
|
+
<div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c"> 575</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">LLVMUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
603
|
+
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> {</div>
|
|
604
|
+
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
605
|
+
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  std::stringstream rawstr(str);</div>
|
|
606
|
+
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="comment">/*</span></div>
|
|
607
|
+
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div>
|
|
608
|
+
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="comment"> * looks like the relevant</span></div>
|
|
609
|
+
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="comment"> */</span></div>
|
|
610
|
+
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getSubprogram())</div>
|
|
611
|
+
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  {</div>
|
|
612
|
+
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="keywordflow">if</span> (SP->describes(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>))</div>
|
|
613
|
+
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  rawstr << <span class="stringliteral">"\"ln\": "</span> << SP->getLine() << <span class="stringliteral">", \"file\": \""</span> << SP->getFilename().str() << <span class="stringliteral">"\""</span>;</div>
|
|
614
|
+
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  }</div>
|
|
615
|
+
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
616
|
+
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> }</div>
|
|
617
|
+
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  </div>
|
|
618
|
+
<div class="line"><a name="l00592"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a7fa1f910598426330f08da19e9efdfa3"> 592</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">LLVMUtil::getNextInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector<const Instruction*>& instList)</div>
|
|
619
|
+
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> {</div>
|
|
620
|
+
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  <span class="keywordflow">if</span> (!curInst->isTerminator())</div>
|
|
621
|
+
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  {</div>
|
|
622
|
+
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = curInst->getNextNode();</div>
|
|
623
|
+
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
624
|
+
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
625
|
+
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  <span class="keywordflow">else</span></div>
|
|
626
|
+
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>  instList.push_back(nextInst);</div>
|
|
627
|
+
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  }</div>
|
|
628
|
+
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  <span class="keywordflow">else</span></div>
|
|
629
|
+
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  {</div>
|
|
630
|
+
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div>
|
|
631
|
+
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
632
|
+
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> it = succ_begin(BB), ie = succ_end(BB); it != ie; ++it)</div>
|
|
633
|
+
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>  {</div>
|
|
634
|
+
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* nextInst = &((*it)->front());</div>
|
|
635
|
+
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(nextInst))</div>
|
|
636
|
+
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">getNextInsts</a>(nextInst, instList);</div>
|
|
637
|
+
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>  <span class="keywordflow">else</span></div>
|
|
638
|
+
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  instList.push_back(nextInst);</div>
|
|
639
|
+
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  }</div>
|
|
640
|
+
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  }</div>
|
|
641
|
+
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span> }</div>
|
|
642
|
+
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  </div>
|
|
643
643
|
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  </div>
|
|
644
|
-
<div class="line"><a name="
|
|
645
|
-
<div class="line"><a name="l00620"></a><span class="lineno"
|
|
646
|
-
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> 
|
|
647
|
-
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> 
|
|
648
|
-
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> 
|
|
649
|
-
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="
|
|
650
|
-
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span> 
|
|
651
|
-
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span> 
|
|
652
|
-
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> 
|
|
653
|
-
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> 
|
|
654
|
-
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> 
|
|
655
|
-
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> 
|
|
656
|
-
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> 
|
|
657
|
-
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="
|
|
658
|
-
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="
|
|
659
|
-
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> 
|
|
660
|
-
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span> 
|
|
661
|
-
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="
|
|
662
|
-
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> 
|
|
663
|
-
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> 
|
|
664
|
-
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> 
|
|
665
|
-
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span> 
|
|
666
|
-
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> 
|
|
667
|
-
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> 
|
|
668
|
-
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> 
|
|
669
|
-
<div class="line"><a name="
|
|
670
|
-
<div class="line"><a name="l00646"></a><span class="lineno"
|
|
671
|
-
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> 
|
|
672
|
-
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> 
|
|
673
|
-
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> 
|
|
674
|
-
<div class="line"><a name="
|
|
675
|
-
<div class="line"><a name="l00654"></a><span class="lineno"
|
|
676
|
-
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> 
|
|
677
|
-
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> 
|
|
678
|
-
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> 
|
|
679
|
-
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> 
|
|
680
|
-
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> 
|
|
681
|
-
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> 
|
|
682
|
-
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> 
|
|
683
|
-
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> 
|
|
684
|
-
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> 
|
|
685
|
-
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> 
|
|
686
|
-
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> 
|
|
687
|
-
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span> 
|
|
688
|
-
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> 
|
|
689
|
-
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> 
|
|
690
|
-
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> 
|
|
691
|
-
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> 
|
|
692
|
-
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> 
|
|
693
|
-
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> 
|
|
694
|
-
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> 
|
|
695
|
-
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> 
|
|
696
|
-
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> 
|
|
697
|
-
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> 
|
|
698
|
-
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> 
|
|
699
|
-
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  </div>
|
|
700
|
-
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> 
|
|
701
|
-
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> 
|
|
702
|
-
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> 
|
|
703
|
-
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> 
|
|
704
|
-
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> 
|
|
705
|
-
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> 
|
|
706
|
-
<div class="line"><a name="l00685"></a><span class="lineno"
|
|
707
|
-
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> 
|
|
708
|
-
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> 
|
|
709
|
-
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> 
|
|
710
|
-
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  </div>
|
|
711
|
-
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> 
|
|
712
|
-
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> 
|
|
713
|
-
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> 
|
|
714
|
-
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> 
|
|
715
|
-
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> 
|
|
716
|
-
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> 
|
|
717
|
-
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> 
|
|
718
|
-
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  </div>
|
|
719
|
-
<div class="line"><a name="l00698"></a><span class="lineno"
|
|
720
|
-
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> 
|
|
721
|
-
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> 
|
|
722
|
-
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> 
|
|
723
|
-
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span> 
|
|
724
|
-
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> 
|
|
725
|
-
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> 
|
|
726
|
-
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span> 
|
|
727
|
-
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  </div>
|
|
728
|
-
<div class="line"><a name="l00707"></a><span class="lineno"
|
|
729
|
-
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> 
|
|
730
|
-
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> 
|
|
731
|
-
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> 
|
|
732
|
-
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> 
|
|
733
|
-
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> 
|
|
734
|
-
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> 
|
|
735
|
-
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> 
|
|
736
|
-
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> 
|
|
737
|
-
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> 
|
|
738
|
-
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> 
|
|
739
|
-
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> 
|
|
740
|
-
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> 
|
|
741
|
-
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> 
|
|
742
|
-
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> 
|
|
743
|
-
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> 
|
|
744
|
-
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> 
|
|
745
|
-
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> 
|
|
746
|
-
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> 
|
|
747
|
-
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> 
|
|
748
|
-
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> 
|
|
749
|
-
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> 
|
|
750
|
-
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> 
|
|
751
|
-
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> 
|
|
752
|
-
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="comment"
|
|
753
|
-
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="comment"> *
|
|
754
|
-
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="comment">
|
|
755
|
-
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="
|
|
756
|
-
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> 
|
|
757
|
-
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span> 
|
|
758
|
-
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> 
|
|
759
|
-
<div class="line"><a name="l00738"></a><span class="lineno"
|
|
760
|
-
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> 
|
|
761
|
-
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> 
|
|
762
|
-
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="comment">//
|
|
763
|
-
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="
|
|
764
|
-
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> 
|
|
765
|
-
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  </div>
|
|
766
|
-
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> 
|
|
767
|
-
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="
|
|
768
|
-
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">if</span> (
|
|
769
|
-
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> 
|
|
770
|
-
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  </div>
|
|
771
|
-
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> 
|
|
772
|
-
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> 
|
|
773
|
-
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> 
|
|
774
|
-
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> 
|
|
775
|
-
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> 
|
|
776
|
-
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> 
|
|
777
|
-
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> 
|
|
778
|
-
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> 
|
|
779
|
-
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">return</span> <span class="keyword">
|
|
780
|
-
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> 
|
|
781
|
-
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> 
|
|
782
|
-
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> 
|
|
783
|
-
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> 
|
|
784
|
-
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> 
|
|
785
|
-
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> 
|
|
786
|
-
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> 
|
|
787
|
-
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> 
|
|
788
|
-
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> 
|
|
789
|
-
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  </div>
|
|
790
|
-
<div class="line"><a name="l00769"></a><span class="lineno"
|
|
791
|
-
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> 
|
|
792
|
-
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span> 
|
|
793
|
-
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> 
|
|
794
|
-
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> 
|
|
644
|
+
<div class="line"><a name="l00619"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08876cc07f9b9dbe84f87aea09e9824f"> 619</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">LLVMUtil::getPrevInsts</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* curInst, std::vector<const Instruction*>& instList)</div>
|
|
645
|
+
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> {</div>
|
|
646
|
+
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">if</span> (curInst != &(curInst->getParent()->front()))</div>
|
|
647
|
+
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  {</div>
|
|
648
|
+
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = curInst->getPrevNode();</div>
|
|
649
|
+
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
650
|
+
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
651
|
+
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="keywordflow">else</span></div>
|
|
652
|
+
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  instList.push_back(prevInst);</div>
|
|
653
|
+
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  }</div>
|
|
654
|
+
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="keywordflow">else</span></div>
|
|
655
|
+
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  {</div>
|
|
656
|
+
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a> *BB = curInst->getParent();</div>
|
|
657
|
+
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="comment">// Visit all successors of BB in the CFG</span></div>
|
|
658
|
+
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">const_pred_iterator</a> it = pred_begin(BB), ie = pred_end(BB); it != ie; ++it)</div>
|
|
659
|
+
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  {</div>
|
|
660
|
+
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* prevInst = &((*it)->back());</div>
|
|
661
|
+
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">LLVMUtil::isIntrinsicInst</a>(prevInst))</div>
|
|
662
|
+
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">getPrevInsts</a>(prevInst, instList);</div>
|
|
663
|
+
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">else</span></div>
|
|
664
|
+
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  instList.push_back(prevInst);</div>
|
|
665
|
+
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  }</div>
|
|
666
|
+
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  }</div>
|
|
667
|
+
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> }</div>
|
|
668
|
+
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  </div>
|
|
669
|
+
<div class="line"><a name="l00645"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c"> 645</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* val)</div>
|
|
670
|
+
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> {</div>
|
|
671
|
+
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">isConstantObjSym</a>(<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMValue(val));</div>
|
|
672
|
+
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> }</div>
|
|
673
|
+
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  </div>
|
|
674
|
+
<div class="line"><a name="l00653"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a2fd5c626b818ac22a9c845227e1461c4"> 653</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">LLVMUtil::isConstantObjSym</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
675
|
+
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> {</div>
|
|
676
|
+
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* v = SVFUtil::dyn_cast<GlobalVariable>(val))</div>
|
|
677
|
+
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  {</div>
|
|
678
|
+
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(v))</div>
|
|
679
|
+
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
680
|
+
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!v->hasInitializer())</div>
|
|
681
|
+
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  {</div>
|
|
682
|
+
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  <span class="keywordflow">return</span> !v->isExternalLinkage(v->getLinkage());</div>
|
|
683
|
+
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  }</div>
|
|
684
|
+
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  <span class="keywordflow">else</span></div>
|
|
685
|
+
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  {</div>
|
|
686
|
+
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  <a class="code" href="classSVF_1_1StInfo.html">StInfo</a> *stInfo = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(v->getInitializer()->getType())-><a class="code" href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">getTypeInfo</a>();</div>
|
|
687
|
+
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keyword">const</span> std::vector<const SVFType*> &fields = stInfo-><a class="code" href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">getFlattenFieldTypes</a>();</div>
|
|
688
|
+
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="keywordflow">for</span> (std::vector<const SVFType*>::const_iterator it = fields.begin(), eit = fields.end(); it != eit; ++it)</div>
|
|
689
|
+
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  {</div>
|
|
690
|
+
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elemTy = *it;</div>
|
|
691
|
+
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  assert(!SVFUtil::isa<SVFFunctionType>(elemTy) && <span class="stringliteral">"Initializer of a global is a function?"</span>);</div>
|
|
692
|
+
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">if</span> (SVFUtil::isa<SVFPointerType>(elemTy))</div>
|
|
693
|
+
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
694
|
+
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  }</div>
|
|
695
|
+
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  </div>
|
|
696
|
+
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">return</span> v->isConstant();</div>
|
|
697
|
+
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  }</div>
|
|
698
|
+
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  }</div>
|
|
699
|
+
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">LLVMUtil::isConstDataOrAggData</a>(val);</div>
|
|
700
|
+
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> }</div>
|
|
701
|
+
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  </div>
|
|
702
|
+
<div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9"> 681</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9">LLVMUtil::getVtblStruct</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">GlobalValue</a> *vtbl)</div>
|
|
703
|
+
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> {</div>
|
|
704
|
+
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">ConstantStruct</a> *vtblStruct = SVFUtil::dyn_cast<ConstantStruct>(vtbl->getOperand(0));</div>
|
|
705
|
+
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  assert(vtblStruct && <span class="stringliteral">"Initializer of a vtable not a struct?"</span>);</div>
|
|
706
|
+
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  </div>
|
|
707
|
+
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="keywordflow">if</span> (vtblStruct->getNumOperands() == 2 &&</div>
|
|
708
|
+
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  SVFUtil::isa<ConstantStruct>(vtblStruct->getOperand(0)) &&</div>
|
|
709
|
+
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  vtblStruct->getOperand(1)->getType()->isArrayTy())</div>
|
|
710
|
+
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="keywordflow">return</span> SVFUtil::cast<ConstantStruct>(vtblStruct->getOperand(0));</div>
|
|
711
|
+
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  </div>
|
|
712
|
+
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="keywordflow">return</span> vtblStruct;</div>
|
|
713
|
+
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> }</div>
|
|
714
|
+
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  </div>
|
|
715
|
+
<div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01"> 694</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">LLVMUtil::isValVtbl</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div>
|
|
716
|
+
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> {</div>
|
|
717
|
+
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="keywordflow">if</span> (!SVFUtil::isa<GlobalVariable>(val))</div>
|
|
718
|
+
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
719
|
+
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> valName = val->getName().str();</div>
|
|
720
|
+
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="keywordflow">return</span> valName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>.size(),</div>
|
|
721
|
+
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <a class="code" href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a>) == 0;</div>
|
|
722
|
+
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> }</div>
|
|
723
|
+
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  </div>
|
|
724
|
+
<div class="line"><a name="l00703"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a45da980cb7c085942bb8e6010db9d84f"> 703</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a45da980cb7c085942bb8e6010db9d84f">LLVMUtil::isLoadVtblInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst)</div>
|
|
725
|
+
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> {</div>
|
|
726
|
+
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* loadSrc = loadInst->getPointerOperand();</div>
|
|
727
|
+
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* valTy = loadSrc->getType();</div>
|
|
728
|
+
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemTy = valTy;</div>
|
|
729
|
+
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i < 3; ++i)</div>
|
|
730
|
+
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  {</div>
|
|
731
|
+
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrTy = SVFUtil::dyn_cast<PointerType>(elemTy))</div>
|
|
732
|
+
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  elemTy = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrTy);</div>
|
|
733
|
+
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  <span class="keywordflow">else</span></div>
|
|
734
|
+
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
735
|
+
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  }</div>
|
|
736
|
+
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a6ec0236303089a01fd9da36a8bb84e0a">FunctionType</a>* functy = SVFUtil::dyn_cast<FunctionType>(elemTy))</div>
|
|
737
|
+
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  {</div>
|
|
738
|
+
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* paramty = functy->getParamType(0);</div>
|
|
739
|
+
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(paramty);</div>
|
|
740
|
+
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="keywordflow">if</span> (className.size() > 0)</div>
|
|
741
|
+
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  {</div>
|
|
742
|
+
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
743
|
+
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  }</div>
|
|
744
|
+
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  }</div>
|
|
745
|
+
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
746
|
+
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> }</div>
|
|
747
|
+
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  </div>
|
|
748
|
+
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="comment">/*</span></div>
|
|
749
|
+
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="comment"> * a virtual callsite follows the following instruction sequence pattern:</span></div>
|
|
750
|
+
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="comment"> * %vtable = load this</span></div>
|
|
751
|
+
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="comment"> * %vfn = getelementptr %vtable, idx</span></div>
|
|
752
|
+
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="comment"> * %x = load %vfn</span></div>
|
|
753
|
+
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="comment"> * call %x (this)</span></div>
|
|
754
|
+
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="comment"> */</span></div>
|
|
755
|
+
<div class="line"><a name="l00734"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf"> 734</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">LLVMUtil::isVirtualCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
756
|
+
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> {</div>
|
|
757
|
+
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <span class="comment">// the callsite must be an indirect one with at least one argument (this</span></div>
|
|
758
|
+
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <span class="comment">// ptr)</span></div>
|
|
759
|
+
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="keywordflow">if</span> (cs->getCalledFunction() != <span class="keyword">nullptr</span> || cs->arg_empty())</div>
|
|
760
|
+
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
761
|
+
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  </div>
|
|
762
|
+
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="comment">// the first argument (this pointer) must be a pointer type and must be a</span></div>
|
|
763
|
+
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <span class="comment">// class name</span></div>
|
|
764
|
+
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>  <span class="keywordflow">if</span> (cs->getArgOperand(0)->getType()->isPointerTy() == <span class="keyword">false</span>)</div>
|
|
765
|
+
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
766
|
+
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  </div>
|
|
767
|
+
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfunc = cs->getCalledOperand();</div>
|
|
768
|
+
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst = SVFUtil::dyn_cast<LoadInst>(vfunc))</div>
|
|
769
|
+
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  {</div>
|
|
770
|
+
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst->getPointerOperand();</div>
|
|
771
|
+
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
|
|
772
|
+
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr))</div>
|
|
773
|
+
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  {</div>
|
|
774
|
+
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">if</span> (vfuncptrgepinst->getNumIndices() != 1)</div>
|
|
775
|
+
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
776
|
+
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = vfuncptrgepinst->getPointerOperand();</div>
|
|
777
|
+
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(vtbl))</div>
|
|
778
|
+
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  {</div>
|
|
779
|
+
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
780
|
+
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div>
|
|
781
|
+
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  }</div>
|
|
782
|
+
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>  }</div>
|
|
783
|
+
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
784
|
+
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> }</div>
|
|
785
|
+
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  </div>
|
|
786
|
+
<div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb"> 765</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">LLVMUtil::isCPPThunkFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
787
|
+
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> {</div>
|
|
788
|
+
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str());</div>
|
|
789
|
+
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</div>
|
|
790
|
+
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> }</div>
|
|
791
|
+
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  </div>
|
|
792
|
+
<div class="line"><a name="l00771"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff"> 771</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">LLVMUtil::getThunkTarget</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
793
|
+
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> {</div>
|
|
794
|
+
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* ret = <span class="keyword">nullptr</span>;</div>
|
|
795
795
|
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  </div>
|
|
796
|
-
<div class="line"><a name="l00775"></a><span class="lineno"
|
|
797
|
-
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> {</div>
|
|
798
|
-
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> 
|
|
799
|
-
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> 
|
|
800
|
-
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> 
|
|
801
|
-
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> 
|
|
802
|
-
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> 
|
|
803
|
-
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> 
|
|
804
|
-
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> 
|
|
805
|
-
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> 
|
|
806
|
-
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> 
|
|
807
|
-
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> 
|
|
808
|
-
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> 
|
|
809
|
-
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> 
|
|
810
|
-
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> 
|
|
811
|
-
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> 
|
|
812
|
-
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> 
|
|
813
|
-
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> 
|
|
814
|
-
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> 
|
|
815
|
-
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> 
|
|
816
|
-
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> 
|
|
817
|
-
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> 
|
|
818
|
-
<div class="line"><a name="l00797"></a><span class="lineno"
|
|
819
|
-
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> 
|
|
820
|
-
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keywordflow">
|
|
796
|
+
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& bb : *<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
797
|
+
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  {</div>
|
|
798
|
+
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  <span class="keywordflow">for</span> (<span class="keyword">auto</span>& inst : bb)</div>
|
|
799
|
+
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  {</div>
|
|
800
|
+
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callbase = SVFUtil::dyn_cast<CallBase>(&inst))</div>
|
|
801
|
+
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  {</div>
|
|
802
|
+
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  <span class="comment">// assert(cs.getCalledFunction() &&</span></div>
|
|
803
|
+
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  <span class="comment">// "Indirect call detected in thunk func");</span></div>
|
|
804
|
+
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  <span class="comment">// assert(ret == nullptr && "multiple callsites in thunk func");</span></div>
|
|
805
|
+
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  </div>
|
|
806
|
+
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  ret = callbase->getCalledFunction();</div>
|
|
807
|
+
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  }</div>
|
|
808
|
+
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  }</div>
|
|
809
|
+
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  }</div>
|
|
810
|
+
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  </div>
|
|
811
|
+
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keywordflow">return</span> ret;</div>
|
|
812
|
+
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> }</div>
|
|
813
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  </div>
|
|
814
|
+
<div class="line"><a name="l00793"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0"> 793</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
815
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> {</div>
|
|
816
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="keywordflow">if</span> (cs->paramHasAttr(0, llvm::Attribute::StructRet))</div>
|
|
817
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  {</div>
|
|
818
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="keywordflow">return</span> cs->getArgOperand(1);</div>
|
|
819
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  }</div>
|
|
820
|
+
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="keywordflow">else</span></div>
|
|
821
821
|
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  {</div>
|
|
822
|
-
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">return</span> cs->getArgOperand(
|
|
822
|
+
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="keywordflow">return</span> cs->getArgOperand(0);</div>
|
|
823
823
|
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  }</div>
|
|
824
|
-
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> 
|
|
825
|
-
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> 
|
|
826
|
-
<div class="line"><a name="
|
|
827
|
-
<div class="line"><a name="
|
|
828
|
-
<div class="line"><a name="
|
|
829
|
-
<div class="line"><a name="
|
|
830
|
-
<div class="line"><a name="l00823"></a><span class="lineno"
|
|
831
|
-
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span> 
|
|
832
|
-
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> {</div>
|
|
833
|
-
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span> 
|
|
834
|
-
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span> 
|
|
835
|
-
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span> 
|
|
836
|
-
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span> 
|
|
837
|
-
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> 
|
|
838
|
-
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span> 
|
|
839
|
-
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span> 
|
|
840
|
-
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> 
|
|
841
|
-
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span> 
|
|
842
|
-
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> 
|
|
843
|
-
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> 
|
|
844
|
-
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> 
|
|
845
|
-
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> 
|
|
846
|
-
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span> 
|
|
847
|
-
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span> 
|
|
848
|
-
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span> 
|
|
849
|
-
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span> 
|
|
850
|
-
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span> 
|
|
851
|
-
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span> 
|
|
852
|
-
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span> 
|
|
853
|
-
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span> 
|
|
854
|
-
<div class="line"><a name="l00847"></a><span class="lineno"
|
|
855
|
-
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span> 
|
|
856
|
-
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> 
|
|
857
|
-
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> 
|
|
858
|
-
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span> 
|
|
859
|
-
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span> 
|
|
860
|
-
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span> 
|
|
861
|
-
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span> 
|
|
862
|
-
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  </div>
|
|
863
|
-
<div class="line"><a name="l00856"></a><span class="lineno"
|
|
864
|
-
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span> 
|
|
865
|
-
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span> 
|
|
824
|
+
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> }</div>
|
|
825
|
+
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  </div>
|
|
826
|
+
<div class="line"><a name="l00819"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce"> 819</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">LLVMUtil::isSameThisPtrInConstructor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr1,</div>
|
|
827
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr2)</div>
|
|
828
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span> {</div>
|
|
829
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="keywordflow">if</span> (thisPtr1 == thisPtr2)</div>
|
|
830
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
831
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisU : thisPtr1->users())</div>
|
|
832
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  {</div>
|
|
833
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">StoreInst</a>* store = SVFUtil::dyn_cast<StoreInst>(thisU))</div>
|
|
834
|
+
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  {</div>
|
|
835
|
+
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* storeU : store->getPointerOperand()->users())</div>
|
|
836
|
+
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  {</div>
|
|
837
|
+
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* load = SVFUtil::dyn_cast<LoadInst>(storeU))</div>
|
|
838
|
+
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  {</div>
|
|
839
|
+
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="keywordflow">if</span> (load->getNextNode() &&</div>
|
|
840
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  SVFUtil::isa<CastInst>(load->getNextNode()))</div>
|
|
841
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">return</span> SVFUtil::cast<CastInst>(load->getNextNode()) ==</div>
|
|
842
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  (thisPtr2->stripPointerCasts());</div>
|
|
843
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  }</div>
|
|
844
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  }</div>
|
|
845
|
+
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  }</div>
|
|
846
|
+
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  }</div>
|
|
847
|
+
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
848
|
+
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span> }</div>
|
|
849
|
+
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  </div>
|
|
850
|
+
<div class="line"><a name="l00843"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf"> 843</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">LLVMUtil::getConstructorThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div>
|
|
851
|
+
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span> {</div>
|
|
852
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  assert((<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(fun) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(fun)) &&</div>
|
|
853
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="stringliteral">"not a constructor?"</span>);</div>
|
|
854
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  assert(fun->arg_size() >= 1 && <span class="stringliteral">"argument size >= 1?"</span>);</div>
|
|
855
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* thisPtr = &*(fun->arg_begin());</div>
|
|
856
|
+
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="keywordflow">return</span> thisPtr;</div>
|
|
857
|
+
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> }</div>
|
|
858
|
+
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  </div>
|
|
859
|
+
<div class="line"><a name="l00852"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72"> 852</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
860
|
+
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span> {</div>
|
|
861
|
+
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isDeclaration())</div>
|
|
862
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
863
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str();</div>
|
|
864
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
|
|
865
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  {</div>
|
|
866
866
|
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
867
|
-
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span> 
|
|
868
|
-
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="
|
|
869
|
-
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span> 
|
|
870
|
-
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span> 
|
|
871
|
-
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span> 
|
|
872
|
-
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span> 
|
|
873
|
-
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <
|
|
874
|
-
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span> 
|
|
875
|
-
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span> 
|
|
876
|
-
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span> 
|
|
877
|
-
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span> 
|
|
878
|
-
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span> 
|
|
879
|
-
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span> 
|
|
880
|
-
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">
|
|
867
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  }</div>
|
|
868
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
|
|
869
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
|
|
870
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  {</div>
|
|
871
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
872
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  }</div>
|
|
873
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
|
|
874
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
875
|
+
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">"::"</span>);</div>
|
|
876
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  <span class="keywordflow">if</span> (colon == std::string::npos)</div>
|
|
877
|
+
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  {</div>
|
|
878
|
+
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
879
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  }</div>
|
|
880
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="keywordflow">else</span></div>
|
|
881
881
|
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  {</div>
|
|
882
|
-
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>
|
|
883
|
-
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span> 
|
|
884
|
-
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span> 
|
|
885
|
-
<div class="line"><a name="
|
|
886
|
-
<div class="line"><a name="
|
|
887
|
-
<div class="line"><a name="
|
|
888
|
-
<div class="line"><a name="
|
|
889
|
-
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span> 
|
|
890
|
-
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span> 
|
|
891
|
-
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span> 
|
|
892
|
-
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  </div>
|
|
893
|
-
<div class="line"><a name="l00887"></a><span class="lineno"
|
|
894
|
-
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span> 
|
|
895
|
-
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span> 
|
|
882
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
|
|
883
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
|
|
884
|
+
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  }</div>
|
|
885
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">return</span> dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() > 0 &&</div>
|
|
886
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>) == 0;</div>
|
|
887
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span> }</div>
|
|
888
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  </div>
|
|
889
|
+
<div class="line"><a name="l00883"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754"> 883</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>)</div>
|
|
890
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span> {</div>
|
|
891
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  <span class="keywordflow">if</span> (<a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->isDeclaration())</div>
|
|
892
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
893
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funcName = <a class="code" href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a>->getName().str();</div>
|
|
894
|
+
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  <span class="keywordflow">if</span> (funcName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a>) != 0)</div>
|
|
895
|
+
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  {</div>
|
|
896
896
|
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
897
|
-
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span> 
|
|
898
|
-
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="
|
|
899
|
-
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span> 
|
|
900
|
-
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span> 
|
|
901
|
-
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span> 
|
|
902
|
-
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span> 
|
|
903
|
-
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  <
|
|
904
|
-
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> 
|
|
905
|
-
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span> 
|
|
906
|
-
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> 
|
|
907
|
-
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span> 
|
|
908
|
-
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span> 
|
|
909
|
-
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span> 
|
|
910
|
-
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">
|
|
897
|
+
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  }</div>
|
|
898
|
+
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(funcName.c_str());</div>
|
|
899
|
+
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keywordflow">if</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() == 0)</div>
|
|
900
|
+
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  {</div>
|
|
901
|
+
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
902
|
+
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  }</div>
|
|
903
|
+
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>);</div>
|
|
904
|
+
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
905
|
+
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keywordtype">size_t</span> colon = dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.rfind(<span class="stringliteral">"::"</span>);</div>
|
|
906
|
+
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="keywordflow">if</span> (colon == std::string::npos)</div>
|
|
907
|
+
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  {</div>
|
|
908
|
+
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> = <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>);</div>
|
|
909
|
+
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  }</div>
|
|
910
|
+
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keywordflow">else</span></div>
|
|
911
911
|
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  {</div>
|
|
912
|
-
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>
|
|
913
|
-
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span> 
|
|
914
|
-
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span> 
|
|
915
|
-
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> 
|
|
916
|
-
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span> 
|
|
917
|
-
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span> 
|
|
918
|
-
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span> 
|
|
919
|
-
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span> 
|
|
920
|
-
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span> 
|
|
921
|
-
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> 
|
|
922
|
-
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> 
|
|
923
|
-
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span> 
|
|
924
|
-
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span> 
|
|
925
|
-
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="comment"
|
|
926
|
-
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="comment"> *
|
|
927
|
-
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> <span class="comment">
|
|
928
|
-
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span> <span class="
|
|
929
|
-
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> 
|
|
930
|
-
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span> 
|
|
931
|
-
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span> 
|
|
932
|
-
<div class="line"><a name="l00926"></a><span class="lineno"
|
|
933
|
-
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span> 
|
|
934
|
-
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#
|
|
935
|
-
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  SVFUtil::dyn_cast<
|
|
936
|
-
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  assert(
|
|
937
|
-
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>*
|
|
938
|
-
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="
|
|
939
|
-
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span> 
|
|
940
|
-
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span> 
|
|
941
|
-
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span> 
|
|
942
|
-
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span> 
|
|
943
|
-
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span> 
|
|
944
|
-
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span> 
|
|
945
|
-
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span> 
|
|
946
|
-
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span> 
|
|
947
|
-
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span> 
|
|
948
|
-
<div class="line"><a name="l00942"></a><span class="lineno"
|
|
949
|
-
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span> {</div>
|
|
950
|
-
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span> 
|
|
951
|
-
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span> 
|
|
952
|
-
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span> 
|
|
953
|
-
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> 
|
|
954
|
-
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> 
|
|
955
|
-
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> 
|
|
956
|
-
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> 
|
|
957
|
-
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> 
|
|
958
|
-
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> 
|
|
959
|
-
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> 
|
|
960
|
-
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  </div>
|
|
961
|
-
<div class="line"><a name="l00955"></a><span class="lineno"
|
|
962
|
-
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> 
|
|
963
|
-
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span> 
|
|
964
|
-
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span> 
|
|
965
|
-
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span> 
|
|
966
|
-
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span> 
|
|
967
|
-
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span> 
|
|
968
|
-
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span> 
|
|
969
|
-
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> 
|
|
970
|
-
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span> 
|
|
971
|
-
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#
|
|
972
|
-
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span> 
|
|
973
|
-
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span> 
|
|
974
|
-
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span> 
|
|
975
|
-
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span> 
|
|
976
|
-
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span> 
|
|
977
|
-
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span> 
|
|
978
|
-
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span> 
|
|
979
|
-
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span> 
|
|
980
|
-
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span> 
|
|
981
|
-
<div class="line"><a name="l00975"></a><span class="lineno"> 975</span> 
|
|
982
|
-
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span> 
|
|
983
|
-
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span> 
|
|
984
|
-
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  </div>
|
|
985
|
-
<div class="line"><a name="l00979"></a><span class="lineno"
|
|
986
|
-
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> 
|
|
987
|
-
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span> 
|
|
988
|
-
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span> 
|
|
989
|
-
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> 
|
|
990
|
-
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> 
|
|
991
|
-
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> 
|
|
992
|
-
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span> 
|
|
993
|
-
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span> 
|
|
994
|
-
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span> 
|
|
995
|
-
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span> 
|
|
996
|
-
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span> 
|
|
997
|
-
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> 
|
|
998
|
-
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  </div>
|
|
999
|
-
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span> 
|
|
1000
|
-
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> 
|
|
1001
|
-
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> 
|
|
1002
|
-
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> 
|
|
1003
|
-
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span> 
|
|
1004
|
-
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span> 
|
|
1005
|
-
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span> 
|
|
1006
|
-
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> 
|
|
1007
|
-
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> 
|
|
1008
|
-
<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> 
|
|
1009
|
-
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> 
|
|
1010
|
-
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> 
|
|
1011
|
-
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  </div>
|
|
1012
|
-
<div class="line"><a name="l01006"></a><span class="lineno"
|
|
1013
|
-
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> 
|
|
1014
|
-
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> 
|
|
1015
|
-
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> 
|
|
1016
|
-
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> 
|
|
1017
|
-
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> 
|
|
1018
|
-
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> 
|
|
1019
|
-
<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> 
|
|
1020
|
-
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> 
|
|
1021
|
-
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> 
|
|
1022
|
-
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> 
|
|
1023
|
-
<div class="line"><a name="l01017"></a><span class="lineno"
|
|
1024
|
-
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> 
|
|
1025
|
-
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#
|
|
1026
|
-
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  SVFUtil::dyn_cast<
|
|
1027
|
-
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> 
|
|
1028
|
-
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#
|
|
1029
|
-
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <
|
|
1030
|
-
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> 
|
|
1031
|
-
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> 
|
|
1032
|
-
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> 
|
|
1033
|
-
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> 
|
|
1034
|
-
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> 
|
|
1035
|
-
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> 
|
|
1036
|
-
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> 
|
|
1037
|
-
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  idx_value =
|
|
912
|
+
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a> =</div>
|
|
913
|
+
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">cppUtil::getBeforeBrackets</a>(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.substr(colon + 2));</div>
|
|
914
|
+
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  }</div>
|
|
915
|
+
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  <span class="keywordflow">return</span> (dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() > 0 && dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() > 0 &&</div>
|
|
916
|
+
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.size() + 1 == dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.size() &&</div>
|
|
917
|
+
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.compare(0, 1, <span class="stringliteral">"~"</span>) == 0 &&</div>
|
|
918
|
+
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>.substr(1)) == 0);</div>
|
|
919
|
+
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span> }</div>
|
|
920
|
+
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  </div>
|
|
921
|
+
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="comment">/*</span></div>
|
|
922
|
+
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> <span class="comment"> * get the ptr "vtable" for a given virtual callsite:</span></div>
|
|
923
|
+
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="comment"> * %vtable = load ...</span></div>
|
|
924
|
+
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="comment"> * %vfn = getelementptr %vtable, idx</span></div>
|
|
925
|
+
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="comment"> * %x = load %vfn</span></div>
|
|
926
|
+
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="comment"> * call %x (...)</span></div>
|
|
927
|
+
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> <span class="comment"> */</span></div>
|
|
928
|
+
<div class="line"><a name="l00922"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77"> 922</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">LLVMUtil::getVCallVtblPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
929
|
+
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> {</div>
|
|
930
|
+
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* loadInst =</div>
|
|
931
|
+
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  SVFUtil::dyn_cast<LoadInst>(cs->getCalledOperand());</div>
|
|
932
|
+
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  assert(loadInst != <span class="keyword">nullptr</span>);</div>
|
|
933
|
+
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = loadInst->getPointerOperand();</div>
|
|
934
|
+
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gepInst =</div>
|
|
935
|
+
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr);</div>
|
|
936
|
+
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  assert(gepInst != <span class="keyword">nullptr</span>);</div>
|
|
937
|
+
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vtbl = gepInst->getPointerOperand();</div>
|
|
938
|
+
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordflow">return</span> vtbl;</div>
|
|
939
|
+
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span> }</div>
|
|
940
|
+
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  </div>
|
|
941
|
+
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span> <span class="comment">/*</span></div>
|
|
942
|
+
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span> <span class="comment"> * Is this virtual call inside its own constructor or destructor?</span></div>
|
|
943
|
+
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span> <span class="comment"> */</span></div>
|
|
944
|
+
<div class="line"><a name="l00938"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b"> 938</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">LLVMUtil::VCallInCtorOrDtor</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
945
|
+
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span> {</div>
|
|
946
|
+
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> classNameOfThisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(cs);</div>
|
|
947
|
+
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = cs->getCaller();</div>
|
|
948
|
+
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">LLVMUtil::isConstructor</a>(func) || <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">LLVMUtil::isDestructor</a>(func))</div>
|
|
949
|
+
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  {</div>
|
|
950
|
+
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">cppUtil::DemangledName</a> dname = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">cppUtil::demangle</a>(func->getName().str());</div>
|
|
951
|
+
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <span class="keywordflow">if</span> (classNameOfThisPtr.compare(dname.<a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>) == 0)</div>
|
|
952
|
+
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
|
|
953
|
+
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  }</div>
|
|
954
|
+
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
955
|
+
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> }</div>
|
|
956
|
+
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  </div>
|
|
957
|
+
<div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6"> 951</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">LLVMUtil::getClassNameFromType</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty)</div>
|
|
958
|
+
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> {</div>
|
|
959
|
+
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> className = <span class="stringliteral">""</span>;</div>
|
|
960
|
+
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* ptrType = SVFUtil::dyn_cast<PointerType>(ty))</div>
|
|
961
|
+
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>  {</div>
|
|
962
|
+
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* elemType = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">LLVMUtil::getPtrElementType</a>(ptrType);</div>
|
|
963
|
+
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  <span class="keywordflow">if</span> (SVFUtil::isa<StructType>(elemType) &&</div>
|
|
964
|
+
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  !((SVFUtil::cast<StructType>(elemType))->isLiteral()))</div>
|
|
965
|
+
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  {</div>
|
|
966
|
+
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> elemTypeName = elemType->getStructName().str();</div>
|
|
967
|
+
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>) == 0)</div>
|
|
968
|
+
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  {</div>
|
|
969
|
+
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
|
|
970
|
+
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  }</div>
|
|
971
|
+
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (elemTypeName.compare(0, <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size(), <a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>) ==</div>
|
|
972
|
+
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  0)</div>
|
|
973
|
+
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  {</div>
|
|
974
|
+
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  className = elemTypeName.substr(<a class="code" href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a>.size());</div>
|
|
975
|
+
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  }</div>
|
|
976
|
+
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  }</div>
|
|
977
|
+
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  }</div>
|
|
978
|
+
<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  <span class="keywordflow">return</span> className;</div>
|
|
979
|
+
<div class="line"><a name="l00973"></a><span class="lineno"> 973</span> }</div>
|
|
980
|
+
<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  </div>
|
|
981
|
+
<div class="line"><a name="l00975"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f"> 975</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">LLVMUtil::getClassNameOfThisPtr</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* inst)</div>
|
|
982
|
+
<div class="line"><a name="l00976"></a><span class="lineno"> 976</span> {</div>
|
|
983
|
+
<div class="line"><a name="l00977"></a><span class="lineno"> 977</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> thisPtrClassName;</div>
|
|
984
|
+
<div class="line"><a name="l00978"></a><span class="lineno"> 978</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst->getMetadata(<span class="stringliteral">"VCallPtrType"</span>))</div>
|
|
985
|
+
<div class="line"><a name="l00979"></a><span class="lineno"> 979</span>  {</div>
|
|
986
|
+
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast<MDString>(N->getOperand(0).get());</div>
|
|
987
|
+
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  thisPtrClassName = mdstr->getString().str();</div>
|
|
988
|
+
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  }</div>
|
|
989
|
+
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  <span class="keywordflow">if</span> (thisPtrClassName.size() == 0)</div>
|
|
990
|
+
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  {</div>
|
|
991
|
+
<div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* thisPtr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">LLVMUtil::getVCallThisPtr</a>(inst);</div>
|
|
992
|
+
<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  thisPtrClassName = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">getClassNameFromType</a>(thisPtr->getType());</div>
|
|
993
|
+
<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  }</div>
|
|
994
|
+
<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  </div>
|
|
995
|
+
<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  <span class="keywordtype">size_t</span> found = thisPtrClassName.find_last_not_of(<span class="stringliteral">"0123456789"</span>);</div>
|
|
996
|
+
<div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keywordflow">if</span> (found != std::string::npos)</div>
|
|
997
|
+
<div class="line"><a name="l00991"></a><span class="lineno"> 991</span>  {</div>
|
|
998
|
+
<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">if</span> (found != thisPtrClassName.size() - 1 &&</div>
|
|
999
|
+
<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  thisPtrClassName[found] == <span class="charliteral">'.'</span>)</div>
|
|
1000
|
+
<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  {</div>
|
|
1001
|
+
<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  <span class="keywordflow">return</span> thisPtrClassName.substr(0, found);</div>
|
|
1002
|
+
<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  }</div>
|
|
1003
|
+
<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  }</div>
|
|
1004
|
+
<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  </div>
|
|
1005
|
+
<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">return</span> thisPtrClassName;</div>
|
|
1006
|
+
<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> }</div>
|
|
1007
|
+
<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  </div>
|
|
1008
|
+
<div class="line"><a name="l01002"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9"> 1002</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">LLVMUtil::getFunNameOfVCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* inst)</div>
|
|
1009
|
+
<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> {</div>
|
|
1010
|
+
<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> funName;</div>
|
|
1011
|
+
<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a>* N = inst->getMetadata(<span class="stringliteral">"VCallFunName"</span>))</div>
|
|
1012
|
+
<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  {</div>
|
|
1013
|
+
<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">MDString</a>* mdstr = SVFUtil::cast<MDString>(N->getOperand(0).get());</div>
|
|
1014
|
+
<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  funName = mdstr->getString().str();</div>
|
|
1015
|
+
<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  }</div>
|
|
1016
|
+
<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  <span class="keywordflow">return</span> funName;</div>
|
|
1017
|
+
<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> }</div>
|
|
1018
|
+
<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  </div>
|
|
1019
|
+
<div class="line"><a name="l01013"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770"> 1013</a></span> <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">LLVMUtil::getVCallIdx</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* cs)</div>
|
|
1020
|
+
<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> {</div>
|
|
1021
|
+
<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">LoadInst</a>* vfuncloadinst =</div>
|
|
1022
|
+
<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  SVFUtil::dyn_cast<LoadInst>(cs->getCalledOperand());</div>
|
|
1023
|
+
<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  assert(vfuncloadinst != <span class="keyword">nullptr</span>);</div>
|
|
1024
|
+
<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* vfuncptr = vfuncloadinst->getPointerOperand();</div>
|
|
1025
|
+
<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* vfuncptrgepinst =</div>
|
|
1026
|
+
<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  SVFUtil::dyn_cast<GetElementPtrInst>(vfuncptr);</div>
|
|
1027
|
+
<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  User::const_op_iterator oi = vfuncptrgepinst->idx_begin();</div>
|
|
1028
|
+
<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>* idx = SVFUtil::dyn_cast<ConstantInt>(oi->get());</div>
|
|
1029
|
+
<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> idx_value;</div>
|
|
1030
|
+
<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="keywordflow">if</span> (idx == <span class="keyword">nullptr</span>)</div>
|
|
1031
|
+
<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  {</div>
|
|
1032
|
+
<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVFUtil::errs</a>() << <span class="stringliteral">"vcall gep idx not constantint\n"</span>;</div>
|
|
1033
|
+
<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  idx_value = 0;</div>
|
|
1034
|
+
<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  }</div>
|
|
1035
|
+
<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  <span class="keywordflow">else</span></div>
|
|
1036
|
+
<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  {</div>
|
|
1037
|
+
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  idx_value = (<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a>)idx->getSExtValue();</div>
|
|
1038
1038
|
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  }</div>
|
|
1039
|
-
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keywordflow">
|
|
1040
|
-
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> 
|
|
1041
|
-
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> 
|
|
1042
|
-
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> 
|
|
1043
|
-
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> 
|
|
1044
|
-
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> 
|
|
1045
|
-
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> 
|
|
1046
|
-
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> 
|
|
1047
|
-
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> 
|
|
1048
|
-
<div class="line"><a name="l01042"></a><span class="lineno"
|
|
1049
|
-
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> {</div>
|
|
1050
|
-
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> 
|
|
1051
|
-
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> 
|
|
1052
|
-
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> 
|
|
1053
|
-
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> 
|
|
1054
|
-
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> 
|
|
1055
|
-
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> 
|
|
1056
|
-
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> 
|
|
1057
|
-
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span> 
|
|
1058
|
-
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">
|
|
1059
|
-
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> 
|
|
1060
|
-
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> 
|
|
1061
|
-
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> 
|
|
1062
|
-
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="
|
|
1039
|
+
<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keywordflow">return</span> idx_value;</div>
|
|
1040
|
+
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> }</div>
|
|
1041
|
+
<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  </div>
|
|
1042
|
+
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div>
|
|
1043
|
+
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> {</div>
|
|
1044
|
+
<div class="line"><a name="l01038"></a><span class="lineno"><a class="line" href="namespaceSVF.html#ad4ba3f37eacc28014adca3f4bb06d83d"> 1038</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF.html#ad4ba3f37eacc28014adca3f4bb06d83d">dumpLLVMValue</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* svfValue)</div>
|
|
1045
|
+
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> {</div>
|
|
1046
|
+
<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div>
|
|
1047
|
+
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  llvm::raw_string_ostream rawstr(str);</div>
|
|
1048
|
+
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()->getLLVMValue(svfValue) == <span class="keyword">nullptr</span>)</div>
|
|
1049
|
+
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  {</div>
|
|
1050
|
+
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  assert((SVFUtil::isa<SVFInstruction, SVFBasicBlock>(svfValue)) &&</div>
|
|
1051
|
+
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  <span class="stringliteral">"Manually created SVF call inst, actual parameter and "</span></div>
|
|
1052
|
+
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  <span class="stringliteral">"BasicBlock by ExtAPI do not have LLVM value!"</span>);</div>
|
|
1053
|
+
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  rawstr << svfValue-><a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>();</div>
|
|
1054
|
+
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
1055
|
+
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  }</div>
|
|
1056
|
+
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keywordflow">else</span></div>
|
|
1057
|
+
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  {</div>
|
|
1058
|
+
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a>* fun = SVFUtil::dyn_cast<SVFFunction>(svfValue))</div>
|
|
1059
|
+
<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  {</div>
|
|
1060
|
+
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  rawstr << <span class="stringliteral">"Function: "</span> << fun->getName() << <span class="stringliteral">" "</span>;</div>
|
|
1061
|
+
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  }</div>
|
|
1062
|
+
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFBasicBlock.html">SVFBasicBlock</a>* bb = SVFUtil::dyn_cast<SVFBasicBlock>(svfValue))</div>
|
|
1063
1063
|
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  {</div>
|
|
1064
|
-
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  rawstr << <span class="stringliteral">"
|
|
1064
|
+
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  rawstr << <span class="stringliteral">"BasicBlock: "</span> << bb->getName() << <span class="stringliteral">" "</span>;</div>
|
|
1065
1065
|
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  }</div>
|
|
1066
|
-
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keywordflow">else</span
|
|
1066
|
+
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  <span class="keywordflow">else</span></div>
|
|
1067
1067
|
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  {</div>
|
|
1068
|
-
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> 
|
|
1069
|
-
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> 
|
|
1070
|
-
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> 
|
|
1071
|
-
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> 
|
|
1072
|
-
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> 
|
|
1073
|
-
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> 
|
|
1074
|
-
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> 
|
|
1075
|
-
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> 
|
|
1076
|
-
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> 
|
|
1077
|
-
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> 
|
|
1078
|
-
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> 
|
|
1079
|
-
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> 
|
|
1080
|
-
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  </div>
|
|
1081
|
-
<div class="line"><a name="l01075"></a><span class="lineno"
|
|
1082
|
-
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> 
|
|
1083
|
-
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> 
|
|
1084
|
-
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">LLVMUtil::llvmToString</a>(*ty);</div>
|
|
1085
|
-
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> }</div>
|
|
1086
|
-
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  </div>
|
|
1087
|
-
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> } <span class="comment">// namespace SVF</span></div>
|
|
1068
|
+
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val =</div>
|
|
1069
|
+
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">getLLVMValue</a>(svfValue);</div>
|
|
1070
|
+
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  rawstr << <span class="stringliteral">" "</span> << *val << <span class="stringliteral">" "</span>;</div>
|
|
1071
|
+
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  }</div>
|
|
1072
|
+
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  rawstr << svfValue-><a class="code" href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">getSourceLoc</a>();</div>
|
|
1073
|
+
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <span class="keywordflow">return</span> rawstr.str();</div>
|
|
1074
|
+
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  }</div>
|
|
1075
|
+
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> }</div>
|
|
1076
|
+
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  </div>
|
|
1077
|
+
<div class="line"><a name="l01071"></a><span class="lineno"><a class="line" href="namespaceSVF.html#add830c7c91b0e0b7b492fd17e6cf4079"> 1071</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF.html#add830c7c91b0e0b7b492fd17e6cf4079">dumpLLVMType</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* svfType)</div>
|
|
1078
|
+
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> {</div>
|
|
1079
|
+
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* ty = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-><a class="code" href="classSVF_1_1LLVMModuleSet.html#a610a7777a48132caadec167c8109f044">getLLVMType</a>(svfType);</div>
|
|
1080
|
+
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">LLVMUtil::llvmToString</a>(*ty);</div>
|
|
1081
|
+
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> }</div>
|
|
1082
|
+
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  </div>
|
|
1083
|
+
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> } <span class="comment">// namespace SVF</span></div>
|
|
1088
1084
|
</div><!-- fragment --></div><!-- contents -->
|
|
1089
1085
|
<div class="ttc" id="anamespaceSVF_html_a827d09974dc7bf0849f96823cc2fee89"><div class="ttname"><a href="namespaceSVF.html#a827d09974dc7bf0849f96823cc2fee89">SVF::DomTreeNode</a></div><div class="ttdeci">llvm::DomTreeNode DomTreeNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
|
|
1090
1086
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a2401b022638769f59f86ab424a189b6e"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">SVF::SVFValue::getName</a></div><div class="ttdeci">const std::string & getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00216">SVFValue.h:216</a></div></div>
|
|
1091
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1092
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1093
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abc9c437b7da5cfe3d988dadfcbd0635f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">SVF::LLVMUtil::viewCFG</a></div><div class="ttdeci">void viewCFG(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1087
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8e4add30bd0ce00d3f2aa2e31c64fef8"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8e4add30bd0ce00d3f2aa2e31c64fef8">SVF::LLVMUtil::getSourceLoc</a></div><div class="ttdeci">const std::string getSourceLoc(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00471">LLVMUtil.cpp:471</a></div></div>
|
|
1088
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a38ce45ae5f017c90115ce444b44d478c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a38ce45ae5f017c90115ce444b44d478c">SVF::LLVMUtil::stripAllCasts</a></div><div class="ttdeci">const Value * stripAllCasts(const Value *val)</div><div class="ttdoc">Strip off the all casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00253">LLVMUtil.cpp:253</a></div></div>
|
|
1089
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abc9c437b7da5cfe3d988dadfcbd0635f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abc9c437b7da5cfe3d988dadfcbd0635f">SVF::LLVMUtil::viewCFG</a></div><div class="ttdeci">void viewCFG(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00234">LLVMUtil.cpp:234</a></div></div>
|
|
1094
1090
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00098">LLVMModule.h:98</a></div></div>
|
|
1095
1091
|
<div class="ttc" id="anamespaceSVF_html_aecbb42b8e9d17fa0189c50dda9fd5fdd"><div class="ttname"><a href="namespaceSVF.html#aecbb42b8e9d17fa0189c50dda9fd5fdd">SVF::DominatorTree</a></div><div class="ttdeci">llvm::DominatorTree DominatorTree</div><div class="ttdoc">LLVM Dominators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
|
|
1096
1092
|
<div class="ttc" id="anamespaceSVF_html_ab696aab940eb187dc81217efe8649af5"><div class="ttname"><a href="namespaceSVF.html#ab696aab940eb187dc81217efe8649af5">SVF::StoreInst</a></div><div class="ttdeci">llvm::StoreInst StoreInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00146">BasicTypes.h:146</a></div></div>
|
|
@@ -1099,8 +1095,8 @@ $(function() {
|
|
|
1099
1095
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aaf9b679407f12b93afc53c157d37b444"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aaf9b679407f12b93afc53c157d37b444">SVF::LLVMModuleSet::getLLVMValue</a></div><div class="ttdeci">const Value * getLLVMValue(const SVFValue *value) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00188">LLVMModule.h:188</a></div></div>
|
|
1100
1096
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a16d14e6712866d1d710c386c72d67181"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a16d14e6712866d1d710c386c72d67181">SVF::LLVMModuleSet::FunctionSetType</a></div><div class="ttdeci">std::vector< const Function * > FunctionSetType</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00049">LLVMModule.h:49</a></div></div>
|
|
1101
1097
|
<div class="ttc" id="aLLVMUtil_8cpp_html_a5f8da60b0fcc28445f508f4e42513a82"><div class="ttname"><a href="LLVMUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a></div><div class="ttdeci">const std::string clsName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00043">LLVMUtil.cpp:43</a></div></div>
|
|
1102
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1103
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1098
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a08fbef6fe3e2af96a49f79ce23accb01"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a08fbef6fe3e2af96a49f79ce23accb01">SVF::LLVMUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00694">LLVMUtil.cpp:694</a></div></div>
|
|
1099
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00419">LLVMUtil.cpp:419</a></div></div>
|
|
1104
1100
|
<div class="ttc" id="aLLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
|
|
1105
1101
|
<div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
|
|
1106
1102
|
<div class="ttc" id="anamespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00084">BasicTypes.h:84</a></div></div>
|
|
@@ -1109,35 +1105,35 @@ $(function() {
|
|
|
1109
1105
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html">SVF::cppUtil::DemangledName</a></div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00046">CppUtil.h:46</a></div></div>
|
|
1110
1106
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a9815a5b31ac7dc21239d08e5b9f61106"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9815a5b31ac7dc21239d08e5b9f61106">SVF::SVFUtil::getSVFCallSite</a></div><div class="ttdeci">CallSite getSVFCallSite(const SVFInstruction *inst)</div><div class="ttdoc">Return LLVM callsite given an instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
|
|
1111
1107
|
<div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
|
|
1112
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a898e9c2ed163b618f2e86bc251131d8b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">SVF::LLVMUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1113
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1114
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1108
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a898e9c2ed163b618f2e86bc251131d8b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a898e9c2ed163b618f2e86bc251131d8b">SVF::LLVMUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00938">LLVMUtil.cpp:938</a></div></div>
|
|
1109
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07bd47ccfd02c5a2a6db26b537b2184f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">SVF::LLVMUtil::stripConstantCasts</a></div><div class="ttdeci">const Value * stripConstantCasts(const Value *val)</div><div class="ttdoc">Strip off the constant casts.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00222">LLVMUtil.cpp:222</a></div></div>
|
|
1110
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2c61d741afbcfa853b505cd391f29f9b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2c61d741afbcfa853b505cd391f29f9b">SVF::LLVMUtil::isUncalledFunction</a></div><div class="ttdeci">bool isUncalledFunction(const Function *fun)</div><div class="ttdoc">whether this is a function without any possible caller?</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00144">LLVMUtil.cpp:144</a></div></div>
|
|
1115
1111
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a5f0bd932f3129a9c565f3a09711f7b99"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">SVF::LLVMModuleSet::getSVFType</a></div><div class="ttdeci">SVFType * getSVFType(const Type *T)</div><div class="ttdoc">Get or create SVFType and typeinfo.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l01021">LLVMModule.cpp:1021</a></div></div>
|
|
1116
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1112
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00645">LLVMUtil.cpp:645</a></div></div>
|
|
1117
1113
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00195">LLVMModule.h:195</a></div></div>
|
|
1118
1114
|
<div class="ttc" id="anamespaceSVF_html_a52c8654c221bb53a59f70ea3cb1e5c45"><div class="ttname"><a href="namespaceSVF.html#a52c8654c221bb53a59f70ea3cb1e5c45">SVF::StructLayout</a></div><div class="ttdeci">llvm::StructLayout StructLayout</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
|
|
1119
1115
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00080">BasicTypes.h:80</a></div></div>
|
|
1120
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1116
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a41e64f3318e2bf368eebe9a104ef6ad9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a41e64f3318e2bf368eebe9a104ef6ad9">SVF::LLVMUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01002">LLVMUtil.cpp:1002</a></div></div>
|
|
1121
1117
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00454">SVFUtil.h:454</a></div></div>
|
|
1122
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1118
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a651b6a1cf3665277d2241220bb145aed"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a651b6a1cf3665277d2241220bb145aed">SVF::LLVMUtil::functionDoesNotRet</a></div><div class="ttdeci">bool functionDoesNotRet(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00106">LLVMUtil.cpp:106</a></div></div>
|
|
1123
1119
|
<div class="ttc" id="anamespaceSVF_html_a5c943191dc4e242704943e5f594ae99e"><div class="ttname"><a href="namespaceSVF.html#a5c943191dc4e242704943e5f594ae99e">SVF::const_pred_iterator</a></div><div class="ttdeci">llvm::const_pred_iterator const_pred_iterator</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00247">BasicTypes.h:247</a></div></div>
|
|
1124
1120
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_aa4a604e47daaaf95babc7aca68991000"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#aa4a604e47daaaf95babc7aca68991000">SVF::LLVMModuleSet::getDeclaration</a></div><div class="ttdeci">const FunctionSetType & getDeclaration(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00281">LLVMModule.h:281</a></div></div>
|
|
1125
1121
|
<div class="ttc" id="anamespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
|
|
1126
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4f803756f0a73e8564d9544ce27be1c9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9">SVF::LLVMUtil::getVtblStruct</a></div><div class="ttdeci">const ConstantStruct * getVtblStruct(const GlobalValue *vtbl)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1122
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4f803756f0a73e8564d9544ce27be1c9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4f803756f0a73e8564d9544ce27be1c9">SVF::LLVMUtil::getVtblStruct</a></div><div class="ttdeci">const ConstantStruct * getVtblStruct(const GlobalValue *vtbl)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00681">LLVMUtil.cpp:681</a></div></div>
|
|
1127
1123
|
<div class="ttc" id="anamespaceSVF_html_a1f4624771922dc8c2447ad7433588c73"><div class="ttname"><a href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">SVF::CallBase</a></div><div class="ttdeci">llvm::CallBase CallBase</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
1128
1124
|
<div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
|
|
1129
1125
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ab0c0f321b6bfbfab2e4ff06d81920ab9"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ab0c0f321b6bfbfab2e4ff06d81920ab9">SVF::LLVMModuleSet::getSVFBasicBlock</a></div><div class="ttdeci">SVFBasicBlock * getSVFBasicBlock(const BasicBlock *bb) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00202">LLVMModule.h:202</a></div></div>
|
|
1130
1126
|
<div class="ttc" id="anamespaceSVF_html_a5a6e8ab900d5cd17ef72661006a7fbe0"><div class="ttname"><a href="namespaceSVF.html#a5a6e8ab900d5cd17ef72661006a7fbe0">SVF::LoadInst</a></div><div class="ttdeci">llvm::LoadInst LoadInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
|
|
1131
1127
|
<div class="ttc" id="anamespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00128">BasicTypes.h:128</a></div></div>
|
|
1132
1128
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ae62938f722543d6d7fc201b685be1abf"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ae62938f722543d6d7fc201b685be1abf">SVF::SVFUtil::isStaticExtCall</a></div><div class="ttdeci">bool isStaticExtCall(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00512">SVFUtil.h:512</a></div></div>
|
|
1133
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1134
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_addcfb0135655706a86f6cc628475fccf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">SVF::LLVMUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1135
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1129
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a837d19c740902c419206287bdb21273b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a837d19c740902c419206287bdb21273b">SVF::LLVMUtil::getUniqueUseViaCastInst</a></div><div class="ttdeci">const Value * getUniqueUseViaCastInst(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00339">LLVMUtil.cpp:339</a></div></div>
|
|
1130
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_addcfb0135655706a86f6cc628475fccf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#addcfb0135655706a86f6cc628475fccf">SVF::LLVMUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00843">LLVMUtil.cpp:843</a></div></div>
|
|
1131
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a68e7bad8eb537039559d8ddc851032e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a68e7bad8eb537039559d8ddc851032e0">SVF::LLVMUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00793">LLVMUtil.cpp:793</a></div></div>
|
|
1136
1132
|
<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#l00490">SVFValue.h:490</a></div></div>
|
|
1137
1133
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html"><div class="ttname"><a href="classSVF_1_1SVFValue.html">SVF::SVFValue</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00150">SVFValue.h:150</a></div></div>
|
|
1138
1134
|
<div class="ttc" id="acJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
1139
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8873eb1cce9496f9699eab22c4a6d3ce"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">SVF::LLVMUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1140
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07c785d931cef3c61e3dab4c615770be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">SVF::LLVMUtil::isPtrInUncalledFunction</a></div><div class="ttdeci">bool isPtrInUncalledFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1135
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8873eb1cce9496f9699eab22c4a6d3ce"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8873eb1cce9496f9699eab22c4a6d3ce">SVF::LLVMUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00819">LLVMUtil.cpp:819</a></div></div>
|
|
1136
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a07c785d931cef3c61e3dab4c615770be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a07c785d931cef3c61e3dab4c615770be">SVF::LLVMUtil::isPtrInUncalledFunction</a></div><div class="ttdeci">bool isPtrInUncalledFunction(const Value *value)</div><div class="ttdoc">Return true if this is value in a dead function (function without any caller)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00177">LLVMUtil.cpp:177</a></div></div>
|
|
1141
1137
|
<div class="ttc" id="anamespaceSVF_html_a334998718813a19a7697daf4ba282faf"><div class="ttname"><a href="namespaceSVF.html#a334998718813a19a7697daf4ba282faf">SVF::Use</a></div><div class="ttdeci">llvm::Use Use</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
|
|
1142
1138
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ac9d6aff1a5e778e45c51b4f3b6d787e0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ac9d6aff1a5e778e45c51b4f3b6d787e0">SVF::LLVMUtil::isProgEntryFunction</a></div><div class="ttdeci">bool isProgEntryFunction(const Function *fun)</div><div class="ttdoc">Check whether a function is an entry function (i.e., main)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00103">LLVMUtil.h:103</a></div></div>
|
|
1143
1139
|
<div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
@@ -1146,26 +1142,26 @@ $(function() {
|
|
|
1146
1142
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_aedfa6e9216c6c788c26aef1967689b76"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aedfa6e9216c6c788c26aef1967689b76">SVF::SVFUtil::isHeapAllocExtCallViaArg</a></div><div class="ttdeci">bool isHeapAllocExtCallViaArg(const CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00443">SVFUtil.h:443</a></div></div>
|
|
1147
1143
|
<div class="ttc" id="anamespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00085">BasicTypes.h:85</a></div></div>
|
|
1148
1144
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a745a2addadc136075d45c7fb8437af3e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00153">CppUtil.cpp:153</a></div></div>
|
|
1149
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1145
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a3a23aa54459a068e16c96e5b5eb72f77"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a3a23aa54459a068e16c96e5b5eb72f77">SVF::LLVMUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00922">LLVMUtil.cpp:922</a></div></div>
|
|
1150
1146
|
<div class="ttc" id="acJSON_8cpp_html_a930920b2bc42824a5c03be681830f4b2"><div class="ttname"><a href="cJSON_8cpp.html#a930920b2bc42824a5c03be681830f4b2">true</a></div><div class="ttdeci">return true</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02295">cJSON.cpp:2295</a></div></div>
|
|
1151
1147
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a8a77403306e97ab4cb31a56d38bba5be"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a8a77403306e97ab4cb31a56d38bba5be">SVF::LLVMUtil::isConstDataOrAggData</a></div><div class="ttdeci">bool isConstDataOrAggData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00383">LLVMUtil.h:383</a></div></div>
|
|
1152
1148
|
<div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00092">BasicTypes.h:92</a></div></div>
|
|
1153
1149
|
<div class="ttc" id="anamespaceSVF_html_a2b28f48dde0a9a91d251e654ce1f9477"><div class="ttname"><a href="namespaceSVF.html#a2b28f48dde0a9a91d251e654ce1f9477">SVF::ConstantStruct</a></div><div class="ttdeci">llvm::ConstantStruct ConstantStruct</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00104">BasicTypes.h:104</a></div></div>
|
|
1154
1150
|
<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#l00274">SVFValue.h:274</a></div></div>
|
|
1155
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1151
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8a8c32a09340f491fffffcb07dd7a41"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8a8c32a09340f491fffffcb07dd7a41">SVF::LLVMUtil::isIRFile</a></div><div class="ttdeci">bool isIRFile(const std::string &filename)</div><div class="ttdoc">Check whether a file is an LLVM IR file.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00402">LLVMUtil.cpp:402</a></div></div>
|
|
1156
1152
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a1cf2e4671b16b477cc779c72f2419234"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">SVF::cppUtil::getBeforeBrackets</a></div><div class="ttdeci">std::string getBeforeBrackets(const std::string &name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00085">CppUtil.cpp:85</a></div></div>
|
|
1157
1153
|
<div class="ttc" id="aLLVMUtil_8cpp_html_a211c0223a37893d84fb5e2fd2f9fc76b"><div class="ttname"><a href="LLVMUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a></div><div class="ttdeci">const std::string vtblLabelBeforeDemangle</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00038">LLVMUtil.cpp:38</a></div></div>
|
|
1158
|
-
<div class="ttc" id="anamespaceSVF_html_ad4ba3f37eacc28014adca3f4bb06d83d"><div class="ttname"><a href="namespaceSVF.html#ad4ba3f37eacc28014adca3f4bb06d83d">SVF::dumpLLVMValue</a></div><div class="ttdeci">std::string dumpLLVMValue(const SVFValue *svfValue)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1154
|
+
<div class="ttc" id="anamespaceSVF_html_ad4ba3f37eacc28014adca3f4bb06d83d"><div class="ttname"><a href="namespaceSVF.html#ad4ba3f37eacc28014adca3f4bb06d83d">SVF::dumpLLVMValue</a></div><div class="ttdeci">std::string dumpLLVMValue(const SVFValue *svfValue)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01038">LLVMUtil.cpp:1038</a></div></div>
|
|
1159
1155
|
<div class="ttc" id="anamespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00110">BasicTypes.h:110</a></div></div>
|
|
1160
1156
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_af264312f0020bde9151697bccfde3263"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af264312f0020bde9151697bccfde3263">SVF::SVFFunction::getReturnType</a></div><div class="ttdeci">const SVFType * getReturnType() const</div><div class="ttdoc">Returns the FunctionType.</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00366">SVFValue.h:366</a></div></div>
|
|
1161
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1157
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a206973624fcc58e6044c884dba23a754"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a206973624fcc58e6044c884dba23a754">SVF::LLVMUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00883">LLVMUtil.cpp:883</a></div></div>
|
|
1162
1158
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a151fd7fb2b2ebe72af7c417defbb4f4d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a151fd7fb2b2ebe72af7c417defbb4f4d">SVF::LLVMUtil::getDataLayout</a></div><div class="ttdeci">static DataLayout * getDataLayout(Module *mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00330">LLVMUtil.h:330</a></div></div>
|
|
1163
1159
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_adfa4a4e6d13004d14137d9168bd32463"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#adfa4a4e6d13004d14137d9168bd32463">SVF::LLVMUtil::isInt2PtrConstantExpr</a></div><div class="ttdeci">const ConstantExpr * isInt2PtrConstantExpr(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00242">LLVMUtil.h:242</a></div></div>
|
|
1164
1160
|
<div class="ttc" id="aLLVMUtil_8cpp_html_a61c158146c07e77234eb4a2f9b940821"><div class="ttname"><a href="LLVMUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a></div><div class="ttdeci">const std::string structName</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00044">LLVMUtil.cpp:44</a></div></div>
|
|
1165
1161
|
<div class="ttc" id="anamespaceSVF_html_a962e9a9044a46fc4bd2367384f6e0827"><div class="ttname"><a href="namespaceSVF.html#a962e9a9044a46fc4bd2367384f6e0827">SVF::CastInst</a></div><div class="ttdeci">llvm::CastInst CastInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00156">BasicTypes.h:156</a></div></div>
|
|
1166
1162
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a0095d23a9c9d5d62ec4a23c56824b5f0"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a0095d23a9c9d5d62ec4a23c56824b5f0">SVF::LLVMUtil::getLLVMCallSite</a></div><div class="ttdeci">const CallBase * getLLVMCallSite(const Value *value)</div><div class="ttdoc">Return LLVM callsite given a value.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00069">LLVMUtil.h:69</a></div></div>
|
|
1167
1163
|
<div class="ttc" id="aclassSVF_1_1SVFType_html_a05850c17c2dbe42e5602dc8c9a70f3bd"><div class="ttname"><a href="classSVF_1_1SVFType.html#a05850c17c2dbe42e5602dc8c9a70f3bd">SVF::SVFType::getTypeInfo</a></div><div class="ttdeci">StInfo * getTypeInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00307">SVFType.h:307</a></div></div>
|
|
1168
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1164
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ab1b4c565ae6be788b934defc21a5cfaf"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ab1b4c565ae6be788b934defc21a5cfaf">SVF::LLVMUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00734">LLVMUtil.cpp:734</a></div></div>
|
|
1169
1165
|
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
|
|
1170
1166
|
<div class="ttc" id="anamespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00111">BasicTypes.h:111</a></div></div>
|
|
1171
1167
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_af6117df8aec7f4c077058fa8f00b0243"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">SVF::cppUtil::DemangledName::isThunkFunc</a></div><div class="ttdeci">bool isThunkFunc</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00050">CppUtil.h:50</a></div></div>
|
|
@@ -1176,42 +1172,42 @@ $(function() {
|
|
|
1176
1172
|
<div class="ttc" id="aLLVMUtil_8cpp_html_aff4f7c7a9aacf05a3a3c42ae24ea7d96"><div class="ttname"><a href="LLVMUtil_8cpp.html#aff4f7c7a9aacf05a3a3c42ae24ea7d96">vfunPreLabel</a></div><div class="ttdeci">const std::string vfunPreLabel</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00041">LLVMUtil.cpp:41</a></div></div>
|
|
1177
1173
|
<div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00123">BasicTypes.h:123</a></div></div>
|
|
1178
1174
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00192">SVFType.h:192</a></div></div>
|
|
1179
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1175
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aa841a295ec803b6a1f2bd248f63f863f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aa841a295ec803b6a1f2bd248f63f863f">SVF::LLVMUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00975">LLVMUtil.cpp:975</a></div></div>
|
|
1180
1176
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00048">CppUtil.h:48</a></div></div>
|
|
1181
1177
|
<div class="ttc" id="anamespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdoc">LLVM Iterators.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00269">BasicTypes.h:269</a></div></div>
|
|
1182
1178
|
<div class="ttc" id="astructSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8h_source.html#l00049">CppUtil.h:49</a></div></div>
|
|
1183
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47bbc0527ced570d576ccc2f9df409cb"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">SVF::LLVMUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1179
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a47bbc0527ced570d576ccc2f9df409cb"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a47bbc0527ced570d576ccc2f9df409cb">SVF::LLVMUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00765">LLVMUtil.cpp:765</a></div></div>
|
|
1184
1180
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_ae74f307b6f96950ceedb2c375ef1c3a3"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae74f307b6f96950ceedb2c375ef1c3a3">SVF::LLVMModuleSet::getSVFInstruction</a></div><div class="ttdeci">SVFInstruction * getSVFInstruction(const Instruction *inst) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00209">LLVMModule.h:209</a></div></div>
|
|
1185
1181
|
<div class="ttc" id="anamespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00086">BasicTypes.h:86</a></div></div>
|
|
1186
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1187
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aab1cb59036d181e20a477bf1eebd81ff"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">SVF::LLVMUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1188
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae368713463c84425f9a1ad27ff401a47"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47">SVF::LLVMUtil::getTypeOfHeapAlloc</a></div><div class="ttdeci">const Type * getTypeOfHeapAlloc(const Instruction *inst)</div><div class="ttdoc">Get the type of the heap allocation.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1189
|
-
<div class="ttc" id="anamespaceSVF_html_add830c7c91b0e0b7b492fd17e6cf4079"><div class="ttname"><a href="namespaceSVF.html#add830c7c91b0e0b7b492fd17e6cf4079">SVF::dumpLLVMType</a></div><div class="ttdeci">std::string dumpLLVMType(const SVFType *svfType)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1190
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector< const SVFBasicBlock * > &bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1182
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2b32283ee2dbb9cef1d17ab6f2719e0c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2b32283ee2dbb9cef1d17ab6f2719e0c">SVF::LLVMUtil::getSourceLocOfFunction</a></div><div class="ttdeci">const std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00575">LLVMUtil.cpp:575</a></div></div>
|
|
1183
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_aab1cb59036d181e20a477bf1eebd81ff"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#aab1cb59036d181e20a477bf1eebd81ff">SVF::LLVMUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00771">LLVMUtil.cpp:771</a></div></div>
|
|
1184
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae368713463c84425f9a1ad27ff401a47"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae368713463c84425f9a1ad27ff401a47">SVF::LLVMUtil::getTypeOfHeapAlloc</a></div><div class="ttdeci">const Type * getTypeOfHeapAlloc(const Instruction *inst)</div><div class="ttdoc">Get the type of the heap allocation.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00358">LLVMUtil.cpp:358</a></div></div>
|
|
1185
|
+
<div class="ttc" id="anamespaceSVF_html_add830c7c91b0e0b7b492fd17e6cf4079"><div class="ttname"><a href="namespaceSVF.html#add830c7c91b0e0b7b492fd17e6cf4079">SVF::dumpLLVMType</a></div><div class="ttdeci">std::string dumpLLVMType(const SVFType *svfType)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01071">LLVMUtil.cpp:1071</a></div></div>
|
|
1186
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a9bd6f54920929e5ad35102ba2f2223da"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a9bd6f54920929e5ad35102ba2f2223da">SVF::LLVMUtil::getFunReachableBBs</a></div><div class="ttdeci">void getFunReachableBBs(const Function *svfFun, std::vector< const SVFBasicBlock * > &bbs)</div><div class="ttdoc">Get reachable basic block from function entry.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00071">LLVMUtil.cpp:71</a></div></div>
|
|
1191
1187
|
<div class="ttc" id="anamespaceSVF_html_a911dbaab38cb42deb9c195c7f687853d"><div class="ttname"><a href="namespaceSVF.html#a911dbaab38cb42deb9c195c7f687853d">SVF::ConstantExpr</a></div><div class="ttdeci">llvm::ConstantExpr ConstantExpr</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00118">BasicTypes.h:118</a></div></div>
|
|
1192
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2abbe4ed46b2031a981d93b3ba9d3fbd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">SVF::LLVMUtil::viewCFGOnly</a></div><div class="ttdeci">void viewCFGOnly(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1193
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1188
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a2abbe4ed46b2031a981d93b3ba9d3fbd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a2abbe4ed46b2031a981d93b3ba9d3fbd">SVF::LLVMUtil::viewCFGOnly</a></div><div class="ttdeci">void viewCFGOnly(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00242">LLVMUtil.cpp:242</a></div></div>
|
|
1189
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4c94a6c02fb89c1a1604c87414956acd"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4c94a6c02fb89c1a1604c87414956acd">SVF::LLVMUtil::getPrevInsts</a></div><div class="ttdeci">void getPrevInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the previous instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00306">LLVMUtil.cpp:306</a></div></div>
|
|
1194
1190
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a7b8b93fec1dc8c63c0a5837a85b99129"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a7b8b93fec1dc8c63c0a5837a85b99129">SVF::LLVMUtil::llvmToString</a></div><div class="ttdeci">std::string llvmToString(const T &val)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00486">LLVMUtil.h:486</a></div></div>
|
|
1195
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a45da980cb7c085942bb8e6010db9d84f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a45da980cb7c085942bb8e6010db9d84f">SVF::LLVMUtil::isLoadVtblInst</a></div><div class="ttdeci">bool isLoadVtblInst(const LoadInst *loadInst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1191
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a45da980cb7c085942bb8e6010db9d84f"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a45da980cb7c085942bb8e6010db9d84f">SVF::LLVMUtil::isLoadVtblInst</a></div><div class="ttdeci">bool isLoadVtblInst(const LoadInst *loadInst)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00703">LLVMUtil.cpp:703</a></div></div>
|
|
1196
1192
|
<div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
|
|
1197
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1198
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1193
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a4638a12f5481dff947b59cf8353e619b"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a4638a12f5481dff947b59cf8353e619b">SVF::LLVMUtil::isIntrinsicFun</a></div><div class="ttdeci">bool isIntrinsicFun(const Function *func)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00192">LLVMUtil.cpp:192</a></div></div>
|
|
1194
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ae617611b584e3d899984c376a6e91987"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ae617611b584e3d899984c376a6e91987">SVF::LLVMUtil::getBBPredecessorNum</a></div><div class="ttdeci">u32_t getBBPredecessorNum(const BasicBlock *BB)</div><div class="ttdoc">Get num of BB's predecessors.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00389">LLVMUtil.cpp:389</a></div></div>
|
|
1199
1195
|
<div class="ttc" id="anamespaceSVF_html_a3011dbac9102f044ad5f36a4ad3d4a71"><div class="ttname"><a href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">SVF::NamedMDNode</a></div><div class="ttdeci">llvm::NamedMDNode NamedMDNode</div><div class="ttdoc">LLVM metadata and debug information.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00109">BasicTypes.h:109</a></div></div>
|
|
1200
1196
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a5a7dc8680a9714e08b01dd339b85bb20"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a5a7dc8680a9714e08b01dd339b85bb20">SVF::LLVMUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00047">LLVMUtil.h:47</a></div></div>
|
|
1201
1197
|
<div class="ttc" id="anamespaceSVF_html_a28eec26ec8edaa5e96aecfeb01f6c0d4"><div class="ttname"><a href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">SVF::MDString</a></div><div class="ttdeci">llvm::MDString MDString</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00099">BasicTypes.h:99</a></div></div>
|
|
1202
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1198
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_afbd60d5443c7fa1448813d00bb5d0fa7"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#afbd60d5443c7fa1448813d00bb5d0fa7">SVF::LLVMUtil::getNextInsts</a></div><div class="ttdeci">void getNextInsts(const Instruction *curInst, std::vector< const SVFInstruction * > &instList)</div><div class="ttdoc">Get the next instructions following control flow.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00277">LLVMUtil.cpp:277</a></div></div>
|
|
1203
1199
|
<div class="ttc" id="aclassSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00595">SVFValue.h:595</a></div></div>
|
|
1204
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1200
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a003b769751b93b94bdb011bd704cfde1"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a003b769751b93b94bdb011bd704cfde1">SVF::LLVMUtil::isIntrinsicInst</a></div><div class="ttdeci">bool isIntrinsicInst(const Instruction *inst)</div><div class="ttdoc">Return true if it is an intrinsic instruction.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00206">LLVMUtil.cpp:206</a></div></div>
|
|
1205
1201
|
<div class="ttc" id="aSymbolTableInfo_8h_html"><div class="ttname"><a href="SymbolTableInfo_8h.html">SymbolTableInfo.h</a></div></div>
|
|
1206
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a09683d4d88a50fa621809c734465f94d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1202
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a09683d4d88a50fa621809c734465f94d"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a09683d4d88a50fa621809c734465f94d">SVF::LLVMUtil::getTypeSizeInBytes</a></div><div class="ttdeci">u32_t getTypeSizeInBytes(const Type *type)</div><div class="ttdoc">Helper method to get the size of the type from target data layout.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00447">LLVMUtil.cpp:447</a></div></div>
|
|
1207
1203
|
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a7effb0f37f486745e0cdc3ae5e9c732b"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a7effb0f37f486745e0cdc3ae5e9c732b">SVF::SVFValue::getSourceLoc</a></div><div class="ttdeci">virtual const std::string getSourceLoc() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00253">SVFValue.h:253</a></div></div>
|
|
1208
1204
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00120">LLVMUtil.h:120</a></div></div>
|
|
1209
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1210
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1205
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a718c8ec79f36cef5df2f4530541f2770"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a718c8ec79f36cef5df2f4530541f2770">SVF::LLVMUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01013">LLVMUtil.cpp:1013</a></div></div>
|
|
1206
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6dd1590b82d2bd86766886bd21bc2b72"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6dd1590b82d2bd86766886bd21bc2b72">SVF::LLVMUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00852">LLVMUtil.cpp:852</a></div></div>
|
|
1211
1207
|
<div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
|
|
1212
1208
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream & errs()</div><div class="ttdoc">Overwrite llvm::errs()</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00056">SVFUtil.h:56</a></div></div>
|
|
1213
1209
|
<div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00143">BasicTypes.h:143</a></div></div>
|
|
1214
|
-
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
1210
|
+
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a416bcb6da0650f546cb7d83e6be850b6"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a416bcb6da0650f546cb7d83e6be850b6">SVF::LLVMUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00951">LLVMUtil.cpp:951</a></div></div>
|
|
1215
1211
|
<!-- start footer part -->
|
|
1216
1212
|
<hr class="footer"/><address class="footer"><small>
|
|
1217
1213
|
Generated by  <a href="http://www.doxygen.org/index.html">
|