svf-tools 1.0.813 → 1.0.815

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.
Files changed (270) hide show
  1. package/SVF-doxygen/html/AccessPath_8cpp_source.html +124 -121
  2. package/SVF-doxygen/html/AccessPath_8h_source.html +97 -88
  3. package/SVF-doxygen/html/Andersen_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/ConsGEdge_8h_source.html +2 -2
  5. package/SVF-doxygen/html/ContextDDA_8cpp_source.html +184 -183
  6. package/SVF-doxygen/html/ContextDDA_8h_source.html +5 -5
  7. package/SVF-doxygen/html/FlowDDA_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +191 -190
  10. package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +4 -4
  11. package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +695 -688
  12. package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +15 -15
  13. package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +883 -881
  14. package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +32 -32
  15. package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +120 -118
  16. package/SVF-doxygen/html/SVFIR_8cpp_source.html +2 -2
  17. package/SVF-doxygen/html/SVFStatements_8h_source.html +5 -5
  18. package/SVF-doxygen/html/SVFVariables_8h_source.html +2 -2
  19. package/SVF-doxygen/html/classSVF_1_1AccessPath-members.html +7 -5
  20. package/SVF-doxygen/html/classSVF_1_1AccessPath.html +237 -162
  21. package/SVF-doxygen/html/classSVF_1_1Andersen.html +1 -1
  22. package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +176 -175
  23. package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +2 -2
  24. package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +2 -2
  25. package/SVF-doxygen/html/classSVF_1_1GepStmt-members.html +1 -1
  26. package/SVF-doxygen/html/classSVF_1_1GepStmt.html +9 -9
  27. package/SVF-doxygen/html/classSVF_1_1GepValVar.html +2 -2
  28. package/SVF-doxygen/html/classSVF_1_1NormalGepCGEdge.html +2 -2
  29. package/SVF-doxygen/html/classSVF_1_1SVFIR.html +2 -2
  30. package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +186 -185
  31. package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +667 -660
  32. package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +942 -938
  33. package/SVF-doxygen/html/functions_a.html +1 -1
  34. package/SVF-doxygen/html/functions_func.html +1 -1
  35. package/SVF-doxygen/html/functions_func_g.html +22 -17
  36. package/SVF-doxygen/html/functions_func_p.html +1 -1
  37. package/SVF-doxygen/html/functions_g.html +20 -12
  38. package/SVF-doxygen/html/functions_i.html +1 -1
  39. package/SVF-doxygen/html/functions_o.html +7 -7
  40. package/SVF-doxygen/html/functions_p.html +11 -11
  41. package/SVF-doxygen/html/functions_r.html +2 -2
  42. package/SVF-doxygen/html/functions_s.html +17 -17
  43. package/SVF-doxygen/html/functions_v.html +7 -9
  44. package/SVF-doxygen/html/functions_vars_g.html +3 -0
  45. package/SVF-doxygen/html/functions_w.html +1 -1
  46. package/SVF-doxygen/html/search/all_1.js +1 -1
  47. package/SVF-doxygen/html/search/all_10.js +324 -324
  48. package/SVF-doxygen/html/search/all_11.js +222 -222
  49. package/SVF-doxygen/html/search/all_12.js +544 -544
  50. package/SVF-doxygen/html/search/all_13.js +191 -191
  51. package/SVF-doxygen/html/search/all_14.js +67 -67
  52. package/SVF-doxygen/html/search/all_15.js +167 -167
  53. package/SVF-doxygen/html/search/all_16.js +63 -63
  54. package/SVF-doxygen/html/search/all_17.js +1 -1
  55. package/SVF-doxygen/html/search/all_18.js +1 -1
  56. package/SVF-doxygen/html/search/all_19.js +11 -11
  57. package/SVF-doxygen/html/search/all_1a.js +172 -172
  58. package/SVF-doxygen/html/search/all_7.js +891 -888
  59. package/SVF-doxygen/html/search/all_8.js +197 -197
  60. package/SVF-doxygen/html/search/all_9.js +607 -607
  61. package/SVF-doxygen/html/search/all_a.js +46 -46
  62. package/SVF-doxygen/html/search/all_b.js +26 -26
  63. package/SVF-doxygen/html/search/all_c.js +116 -116
  64. package/SVF-doxygen/html/search/all_d.js +196 -196
  65. package/SVF-doxygen/html/search/all_e.js +207 -207
  66. package/SVF-doxygen/html/search/all_f.js +115 -115
  67. package/SVF-doxygen/html/search/classes_0.js +26 -26
  68. package/SVF-doxygen/html/search/classes_1.js +9 -9
  69. package/SVF-doxygen/html/search/classes_10.js +73 -73
  70. package/SVF-doxygen/html/search/classes_11.js +15 -15
  71. package/SVF-doxygen/html/search/classes_12.js +2 -2
  72. package/SVF-doxygen/html/search/classes_13.js +10 -10
  73. package/SVF-doxygen/html/search/classes_14.js +14 -14
  74. package/SVF-doxygen/html/search/classes_15.js +1 -1
  75. package/SVF-doxygen/html/search/classes_2.js +80 -80
  76. package/SVF-doxygen/html/search/classes_3.js +37 -37
  77. package/SVF-doxygen/html/search/classes_4.js +9 -9
  78. package/SVF-doxygen/html/search/classes_5.js +28 -28
  79. package/SVF-doxygen/html/search/classes_6.js +104 -104
  80. package/SVF-doxygen/html/search/classes_7.js +33 -33
  81. package/SVF-doxygen/html/search/classes_8.js +56 -56
  82. package/SVF-doxygen/html/search/classes_9.js +1 -1
  83. package/SVF-doxygen/html/search/classes_a.js +12 -12
  84. package/SVF-doxygen/html/search/classes_b.js +29 -29
  85. package/SVF-doxygen/html/search/classes_c.js +6 -6
  86. package/SVF-doxygen/html/search/classes_d.js +18 -18
  87. package/SVF-doxygen/html/search/classes_e.js +36 -36
  88. package/SVF-doxygen/html/search/classes_f.js +25 -25
  89. package/SVF-doxygen/html/search/defines_0.js +3 -3
  90. package/SVF-doxygen/html/search/defines_1.js +2 -2
  91. package/SVF-doxygen/html/search/defines_2.js +30 -30
  92. package/SVF-doxygen/html/search/defines_3.js +21 -21
  93. package/SVF-doxygen/html/search/defines_4.js +2 -2
  94. package/SVF-doxygen/html/search/defines_5.js +4 -4
  95. package/SVF-doxygen/html/search/defines_6.js +2 -2
  96. package/SVF-doxygen/html/search/defines_7.js +5 -5
  97. package/SVF-doxygen/html/search/defines_8.js +11 -11
  98. package/SVF-doxygen/html/search/defines_9.js +9 -9
  99. package/SVF-doxygen/html/search/defines_a.js +2 -2
  100. package/SVF-doxygen/html/search/defines_b.js +1 -1
  101. package/SVF-doxygen/html/search/defines_c.js +3 -3
  102. package/SVF-doxygen/html/search/defines_d.js +2 -2
  103. package/SVF-doxygen/html/search/defines_e.js +7 -7
  104. package/SVF-doxygen/html/search/defines_f.js +3 -3
  105. package/SVF-doxygen/html/search/enums_0.js +3 -3
  106. package/SVF-doxygen/html/search/enums_1.js +2 -2
  107. package/SVF-doxygen/html/search/enums_10.js +1 -1
  108. package/SVF-doxygen/html/search/enums_11.js +1 -1
  109. package/SVF-doxygen/html/search/enums_2.js +8 -8
  110. package/SVF-doxygen/html/search/enums_3.js +1 -1
  111. package/SVF-doxygen/html/search/enums_4.js +3 -3
  112. package/SVF-doxygen/html/search/enums_5.js +1 -1
  113. package/SVF-doxygen/html/search/enums_6.js +2 -2
  114. package/SVF-doxygen/html/search/enums_7.js +2 -2
  115. package/SVF-doxygen/html/search/enums_8.js +4 -4
  116. package/SVF-doxygen/html/search/enums_9.js +1 -1
  117. package/SVF-doxygen/html/search/enums_a.js +1 -1
  118. package/SVF-doxygen/html/search/enums_b.js +7 -7
  119. package/SVF-doxygen/html/search/enums_c.js +1 -1
  120. package/SVF-doxygen/html/search/enums_d.js +4 -4
  121. package/SVF-doxygen/html/search/enums_e.js +2 -2
  122. package/SVF-doxygen/html/search/enums_f.js +4 -4
  123. package/SVF-doxygen/html/search/enumvalues_0.js +14 -14
  124. package/SVF-doxygen/html/search/enumvalues_1.js +14 -14
  125. package/SVF-doxygen/html/search/enumvalues_10.js +35 -35
  126. package/SVF-doxygen/html/search/enumvalues_11.js +3 -3
  127. package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
  128. package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
  129. package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
  130. package/SVF-doxygen/html/search/enumvalues_15.js +3 -3
  131. package/SVF-doxygen/html/search/enumvalues_2.js +36 -36
  132. package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
  133. package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
  134. package/SVF-doxygen/html/search/enumvalues_5.js +47 -47
  135. package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
  136. package/SVF-doxygen/html/search/enumvalues_7.js +9 -9
  137. package/SVF-doxygen/html/search/enumvalues_8.js +23 -23
  138. package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
  139. package/SVF-doxygen/html/search/enumvalues_a.js +15 -15
  140. package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
  141. package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
  142. package/SVF-doxygen/html/search/enumvalues_d.js +18 -18
  143. package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
  144. package/SVF-doxygen/html/search/enumvalues_f.js +45 -45
  145. package/SVF-doxygen/html/search/files_0.js +13 -13
  146. package/SVF-doxygen/html/search/files_1.js +7 -7
  147. package/SVF-doxygen/html/search/files_10.js +8 -8
  148. package/SVF-doxygen/html/search/files_11.js +8 -8
  149. package/SVF-doxygen/html/search/files_12.js +2 -2
  150. package/SVF-doxygen/html/search/files_2.js +55 -55
  151. package/SVF-doxygen/html/search/files_3.js +14 -14
  152. package/SVF-doxygen/html/search/files_4.js +5 -5
  153. package/SVF-doxygen/html/search/files_5.js +13 -13
  154. package/SVF-doxygen/html/search/files_6.js +9 -9
  155. package/SVF-doxygen/html/search/files_7.js +14 -14
  156. package/SVF-doxygen/html/search/files_8.js +13 -13
  157. package/SVF-doxygen/html/search/files_9.js +18 -18
  158. package/SVF-doxygen/html/search/files_a.js +3 -3
  159. package/SVF-doxygen/html/search/files_b.js +2 -2
  160. package/SVF-doxygen/html/search/files_c.js +20 -20
  161. package/SVF-doxygen/html/search/files_d.js +4 -4
  162. package/SVF-doxygen/html/search/files_e.js +62 -62
  163. package/SVF-doxygen/html/search/files_f.js +8 -8
  164. package/SVF-doxygen/html/search/functions_0.js +12 -12
  165. package/SVF-doxygen/html/search/functions_1.js +360 -360
  166. package/SVF-doxygen/html/search/functions_10.js +140 -140
  167. package/SVF-doxygen/html/search/functions_11.js +138 -138
  168. package/SVF-doxygen/html/search/functions_12.js +279 -279
  169. package/SVF-doxygen/html/search/functions_13.js +59 -59
  170. package/SVF-doxygen/html/search/functions_14.js +39 -39
  171. package/SVF-doxygen/html/search/functions_15.js +71 -71
  172. package/SVF-doxygen/html/search/functions_16.js +32 -32
  173. package/SVF-doxygen/html/search/functions_17.js +3 -3
  174. package/SVF-doxygen/html/search/functions_18.js +172 -172
  175. package/SVF-doxygen/html/search/functions_2.js +87 -87
  176. package/SVF-doxygen/html/search/functions_3.js +257 -257
  177. package/SVF-doxygen/html/search/functions_4.js +75 -75
  178. package/SVF-doxygen/html/search/functions_5.js +53 -53
  179. package/SVF-doxygen/html/search/functions_6.js +59 -59
  180. package/SVF-doxygen/html/search/functions_7.js +854 -852
  181. package/SVF-doxygen/html/search/functions_8.js +149 -149
  182. package/SVF-doxygen/html/search/functions_9.js +423 -423
  183. package/SVF-doxygen/html/search/functions_a.js +30 -30
  184. package/SVF-doxygen/html/search/functions_b.js +2 -2
  185. package/SVF-doxygen/html/search/functions_c.js +26 -26
  186. package/SVF-doxygen/html/search/functions_d.js +77 -77
  187. package/SVF-doxygen/html/search/functions_e.js +35 -35
  188. package/SVF-doxygen/html/search/functions_f.js +56 -56
  189. package/SVF-doxygen/html/search/namespaces_0.js +1 -1
  190. package/SVF-doxygen/html/search/namespaces_1.js +7 -7
  191. package/SVF-doxygen/html/search/related_0.js +2 -2
  192. package/SVF-doxygen/html/search/related_1.js +2 -2
  193. package/SVF-doxygen/html/search/related_2.js +2 -2
  194. package/SVF-doxygen/html/search/related_3.js +2 -2
  195. package/SVF-doxygen/html/search/related_4.js +2 -2
  196. package/SVF-doxygen/html/search/related_5.js +1 -1
  197. package/SVF-doxygen/html/search/related_6.js +2 -2
  198. package/SVF-doxygen/html/search/related_7.js +4 -4
  199. package/SVF-doxygen/html/search/related_8.js +2 -2
  200. package/SVF-doxygen/html/search/related_9.js +4 -4
  201. package/SVF-doxygen/html/search/related_a.js +19 -19
  202. package/SVF-doxygen/html/search/related_b.js +4 -4
  203. package/SVF-doxygen/html/search/related_c.js +1 -1
  204. package/SVF-doxygen/html/search/related_d.js +12 -12
  205. package/SVF-doxygen/html/search/related_e.js +2 -2
  206. package/SVF-doxygen/html/search/related_f.js +2 -2
  207. package/SVF-doxygen/html/search/typedefs_0.js +19 -19
  208. package/SVF-doxygen/html/search/typedefs_1.js +26 -26
  209. package/SVF-doxygen/html/search/typedefs_10.js +61 -61
  210. package/SVF-doxygen/html/search/typedefs_11.js +13 -13
  211. package/SVF-doxygen/html/search/typedefs_12.js +11 -11
  212. package/SVF-doxygen/html/search/typedefs_13.js +33 -33
  213. package/SVF-doxygen/html/search/typedefs_14.js +8 -8
  214. package/SVF-doxygen/html/search/typedefs_2.js +129 -129
  215. package/SVF-doxygen/html/search/typedefs_3.js +39 -39
  216. package/SVF-doxygen/html/search/typedefs_4.js +17 -17
  217. package/SVF-doxygen/html/search/typedefs_5.js +41 -41
  218. package/SVF-doxygen/html/search/typedefs_6.js +55 -55
  219. package/SVF-doxygen/html/search/typedefs_7.js +44 -44
  220. package/SVF-doxygen/html/search/typedefs_8.js +1 -1
  221. package/SVF-doxygen/html/search/typedefs_9.js +6 -6
  222. package/SVF-doxygen/html/search/typedefs_a.js +29 -29
  223. package/SVF-doxygen/html/search/typedefs_b.js +29 -29
  224. package/SVF-doxygen/html/search/typedefs_c.js +41 -41
  225. package/SVF-doxygen/html/search/typedefs_d.js +14 -14
  226. package/SVF-doxygen/html/search/typedefs_e.js +52 -52
  227. package/SVF-doxygen/html/search/typedefs_f.js +14 -14
  228. package/SVF-doxygen/html/search/variables_0.js +151 -151
  229. package/SVF-doxygen/html/search/variables_1.js +75 -75
  230. package/SVF-doxygen/html/search/variables_10.js +97 -97
  231. package/SVF-doxygen/html/search/variables_11.js +44 -44
  232. package/SVF-doxygen/html/search/variables_12.js +92 -92
  233. package/SVF-doxygen/html/search/variables_13.js +75 -75
  234. package/SVF-doxygen/html/search/variables_14.js +14 -14
  235. package/SVF-doxygen/html/search/variables_15.js +48 -48
  236. package/SVF-doxygen/html/search/variables_16.js +9 -9
  237. package/SVF-doxygen/html/search/variables_17.js +1 -1
  238. package/SVF-doxygen/html/search/variables_18.js +2 -2
  239. package/SVF-doxygen/html/search/variables_2.js +38 -38
  240. package/SVF-doxygen/html/search/variables_3.js +142 -142
  241. package/SVF-doxygen/html/search/variables_4.js +55 -55
  242. package/SVF-doxygen/html/search/variables_5.js +37 -37
  243. package/SVF-doxygen/html/search/variables_6.js +66 -66
  244. package/SVF-doxygen/html/search/variables_7.js +34 -33
  245. package/SVF-doxygen/html/search/variables_8.js +7 -7
  246. package/SVF-doxygen/html/search/variables_9.js +78 -78
  247. package/SVF-doxygen/html/search/variables_a.js +4 -4
  248. package/SVF-doxygen/html/search/variables_b.js +10 -10
  249. package/SVF-doxygen/html/search/variables_c.js +45 -45
  250. package/SVF-doxygen/html/search/variables_d.js +56 -56
  251. package/SVF-doxygen/html/search/variables_e.js +123 -123
  252. package/SVF-doxygen/html/search/variables_f.js +29 -29
  253. package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +10 -10
  254. package/SVF-doxygen/html/svf-ex_8cpp.html +11 -11
  255. package/SVF-doxygen/html/svf-ex_8cpp_source.html +11 -11
  256. package/package.json +1 -1
  257. package/svf/include/Graphs/ConsGEdge.h +1 -1
  258. package/svf/include/MemoryModel/AccessPath.h +14 -5
  259. package/svf/include/SVFIR/SVFStatements.h +2 -2
  260. package/svf/include/SVFIR/SVFVariables.h +1 -1
  261. package/svf/lib/AbstractExecution/SVFIR2ConsExeState.cpp +2 -1
  262. package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +4 -0
  263. package/svf/lib/DDA/ContextDDA.cpp +2 -1
  264. package/svf/lib/DDA/FlowDDA.cpp +1 -1
  265. package/svf/lib/MemoryModel/AccessPath.cpp +7 -5
  266. package/svf/lib/SVFIR/SVFIR.cpp +1 -1
  267. package/svf/lib/WPA/Andersen.cpp +1 -1
  268. package/svf/lib/WPA/FlowSensitive.cpp +1 -1
  269. package/svf-llvm/lib/SVFIRBuilder.cpp +6 -4
  270. package/svf-llvm/lib/SVFIRExtAPI.cpp +7 -5
@@ -174,9 +174,9 @@ $(function() {
174
174
  <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; {</div>
175
175
  <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmmodule = LLVMModuleSet::getLLVMModuleSet();</div>
176
176
  <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* dElementType = pag-&gt;getSymbolInfo()-&gt;getFlatternedElemType(llvmmodule-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(dtype),</div>
177
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; fields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>].getConstantFieldIdx());</div>
177
+ <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; fields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>].getConstantStructFldIdx());</div>
178
178
  <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* sElementType = pag-&gt;getSymbolInfo()-&gt;getFlatternedElemType(llvmmodule-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(stype),</div>
179
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; fields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>].getConstantFieldIdx());</div>
179
+ <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; fields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>].getConstantStructFldIdx());</div>
180
180
  <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dField = getGepValVar(D,fields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>],dElementType);</div>
181
181
  <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> sField = getGepValVar(S,fields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>],sElementType);</div>
182
182
  <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dummy = pag-&gt;addDummyValNode();</div>
@@ -242,122 +242,124 @@ $(function() {
242
242
  <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> = 0; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a> &lt; sz; <a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>++)</div>
243
243
  <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; {</div>
244
244
  <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmmodule = LLVMModuleSet::getLLVMModuleSet();</div>
245
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* dElementType = pag-&gt;getSymbolInfo()-&gt;getFlatternedElemType(llvmmodule-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(dtype), dstFields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>].getConstantFieldIdx());</div>
246
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dField = getGepValVar(cs-&gt;getArgOperand(0), dstFields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>], dElementType);</div>
247
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; addStoreEdge(getValueNode(cs-&gt;getArgOperand(1)),dField);</div>
248
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
249
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;PointerType&gt;(cs-&gt;getType()))</div>
250
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; addCopyEdge(getValueNode(cs-&gt;getArgOperand(0)), getValueNode(cs));</div>
251
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div>
252
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(svfCallee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>().compare(<span class="stringliteral">&quot;dlsym&quot;</span>) == 0)</div>
253
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div>
254
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="comment">/*</span></div>
255
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> Side-effects of void* dlsym( void* handle, const char* funName),</span></div>
256
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> Locate the function with the name &quot;funName,&quot; then add a &quot;copy&quot; edge between the callsite and that function.</span></div>
257
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> dlsym() example:</span></div>
258
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> int main() {</span></div>
259
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> // Open the shared library</span></div>
260
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> void* handle = dlopen(&quot;./my_shared_library.so&quot;, RTLD_LAZY);</span></div>
261
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> // Find the function address</span></div>
262
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> void (*myFunctionPtr)() = (void (*)())dlsym(handle, &quot;myFunction&quot;);</span></div>
263
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> // Call the function</span></div>
264
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> myFunctionPtr();</span></div>
265
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"> }</span></div>
266
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> */</span></div>
267
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* src = cs-&gt;getArgOperand(1);</div>
268
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gep = SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(src))</div>
269
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; src = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(gep-&gt;getPointerOperand());</div>
270
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
271
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">auto</span> getHookFn = [](<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* src)-&gt;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*</div>
272
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div>
273
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;GlobalVariable&gt;(src))</div>
274
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
275
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; </div>
276
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">auto</span> *glob = SVFUtil::cast&lt;GlobalVariable&gt;(src);</div>
277
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span> (!glob-&gt;hasInitializer() || !SVFUtil::isa&lt;ConstantDataArray&gt;(glob-&gt;getInitializer()))</div>
278
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
279
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; </div>
280
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keyword">auto</span> *constarray = SVFUtil::cast&lt;ConstantDataArray&gt;(glob-&gt;getInitializer());</div>
281
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a76b0d0ac69c170838cfc8ee26f4518a0">LLVMUtil::getProgFunction</a>(constarray-&gt;getAsCString().str());</div>
282
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; };</div>
283
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; </div>
284
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fn = getHookFn(src))</div>
285
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; {</div>
286
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcNode = getValueNode(fn);</div>
287
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; addCopyEdge(srcNode, getValueNode(cs));</div>
288
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div>
289
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
290
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(svfCallee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>().find(<span class="stringliteral">&quot;_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_&quot;</span>) != std::string::npos)</div>
291
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div>
292
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// The purpose of this function is to insert a new node into the red-black tree and then rebalance the tree to ensure that the red-black tree properties are maintained.</span></div>
293
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; assert(svfCall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a496d0e963f0f6a4f9c08183fa91792b0">arg_size</a>() == 4 &amp;&amp; <span class="stringliteral">&quot;_Rb_tree_insert_and_rebalance should have 4 arguments.\n&quot;</span>);</div>
294
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; </div>
295
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="comment">// We have vArg3 points to the entry of _Rb_tree_node_base { color; parent; left; right; }.</span></div>
296
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// Now we calculate the offset from base to vArg3</span></div>
297
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnArg3 = pag-&gt;getValueNode(svfCall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a3cbb4b4089c8b27d01da15f2d2f22e14">getArgOperand</a>(3));</div>
298
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = getAccessPathFromBaseNode(vnArg3).getConstantFieldIdx();</div>
299
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; </div>
300
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="comment">// We get all flattened fields of base</span></div>
301
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; vector&lt;AccessPath&gt; fields = pag-&gt;getTypeLocSetsMap(vnArg3).second;</div>
302
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; </div>
303
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="comment">// We summarize the side effects: arg3-&gt;parent = arg1, arg3-&gt;left = arg1, arg3-&gt;right = arg1</span></div>
304
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="comment">// Note that arg0 is aligned with &quot;offset&quot;.</span></div>
305
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> i = <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + 1; i &lt;= <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + 3; ++i)</div>
306
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; {</div>
307
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)i &gt;= fields.size())</div>
308
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">break</span>;</div>
309
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elementType = pag-&gt;getSymbolInfo()-&gt;getFlatternedElemType(pag-&gt;getTypeLocSetsMap(vnArg3).first,</div>
310
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; fields[i].getConstantFieldIdx());</div>
311
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = getGepValVar(cs-&gt;getArgOperand(3), fields[i], elementType);</div>
312
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = pag-&gt;getValueNode(svfCall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a3cbb4b4089c8b27d01da15f2d2f22e14">getArgOperand</a>(1));</div>
313
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span>(vnD &amp;&amp; vnS)</div>
314
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; addStoreEdge(vnS,vnD);</div>
315
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div>
316
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div>
317
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; </div>
318
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c2abeb363081381c3dc939ab511e3f0">isThreadForkCall</a>(svfInst))</div>
319
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div>
320
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* forkedFun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2790c5289dad1d6e80f7597a2ea458ab">getForkedFun</a>(svfInst)))</div>
321
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div>
322
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; forkedFun = forkedFun-&gt;getDefFunForMultipleModule();</div>
323
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* actualParm = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8c64663b564eb7c399013389920ab500">getActualParmAtForkSite</a>(svfInst);</div>
324
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; assert((forkedFun-&gt;arg_size() &lt;= 2) &amp;&amp; <span class="stringliteral">&quot;Size of formal parameter of start routine should be one&quot;</span>);</div>
325
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (forkedFun-&gt;arg_size() &lt;= 2 &amp;&amp; forkedFun-&gt;arg_size() &gt;= 1)</div>
326
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div>
327
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* formalParm = forkedFun-&gt;getArg(0);</div>
328
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (actualParm-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>() &amp;&amp; formalParm-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
329
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div>
330
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *icfgNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfInst);</div>
331
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> *entry = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(forkedFun);</div>
332
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; addThreadForkEdge(pag-&gt;getValueNode(actualParm), pag-&gt;getValueNode(formalParm), icfgNode, entry);</div>
333
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div>
334
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; }</div>
335
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div>
336
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">else</span></div>
337
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div>
338
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div>
339
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</div>
340
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; </div>
341
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">isHareParForCall</a>(svfInst))</div>
342
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div>
343
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* taskFunc = SVFUtil::dyn_cast&lt;SVFFunction&gt;(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5cee46f58bdab3f9b1c698e97290152f">getTaskFuncAtHareParForSite</a>(svfInst)))</div>
344
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
345
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; assert((taskFunc-&gt;arg_size() == 3) &amp;&amp; <span class="stringliteral">&quot;Size of formal parameter of hare_parallel_for&#39;s task routine should be 3&quot;</span>);</div>
346
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* actualParm = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f74db48793a0db76c000ffecf9e1bd2">getTaskDataAtHareParForSite</a>(svfInst);</div>
347
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* formalParm = taskFunc-&gt;getArg(0);</div>
348
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (actualParm-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>() &amp;&amp; formalParm-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
349
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div>
350
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *icfgNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfInst);</div>
351
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> *entry = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(taskFunc);</div>
352
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; addThreadForkEdge(pag-&gt;getValueNode(actualParm), pag-&gt;getValueNode(formalParm), icfgNode, entry);</div>
353
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div>
354
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div>
355
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">else</span></div>
356
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div>
357
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div>
358
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; }</div>
359
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; </div>
360
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;}</div>
245
+ <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* dElementType = pag-&gt;getSymbolInfo()-&gt;getFlatternedElemType(llvmmodule-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a5f0bd932f3129a9c565f3a09711f7b99">getSVFType</a>(dtype),</div>
246
+ <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; dstFields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>].getConstantStructFldIdx());</div>
247
+ <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dField = getGepValVar(cs-&gt;getArgOperand(0), dstFields[<a class="code" href="cJSON_8h.html#a750b5d744c39a06bfb13e6eb010e35d0">index</a>], dElementType);</div>
248
+ <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; addStoreEdge(getValueNode(cs-&gt;getArgOperand(1)),dField);</div>
249
+ <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div>
250
+ <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;PointerType&gt;(cs-&gt;getType()))</div>
251
+ <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; addCopyEdge(getValueNode(cs-&gt;getArgOperand(0)), getValueNode(cs));</div>
252
+ <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div>
253
+ <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(svfCallee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>().compare(<span class="stringliteral">&quot;dlsym&quot;</span>) == 0)</div>
254
+ <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div>
255
+ <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="comment">/*</span></div>
256
+ <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment"> Side-effects of void* dlsym( void* handle, const char* funName),</span></div>
257
+ <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> Locate the function with the name &quot;funName,&quot; then add a &quot;copy&quot; edge between the callsite and that function.</span></div>
258
+ <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> dlsym() example:</span></div>
259
+ <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> int main() {</span></div>
260
+ <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"> // Open the shared library</span></div>
261
+ <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment"> void* handle = dlopen(&quot;./my_shared_library.so&quot;, RTLD_LAZY);</span></div>
262
+ <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> // Find the function address</span></div>
263
+ <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> void (*myFunctionPtr)() = (void (*)())dlsym(handle, &quot;myFunction&quot;);</span></div>
264
+ <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> // Call the function</span></div>
265
+ <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"> myFunctionPtr();</span></div>
266
+ <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"> }</span></div>
267
+ <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment"> */</span></div>
268
+ <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* src = cs-&gt;getArgOperand(1);</div>
269
+ <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">GetElementPtrInst</a>* gep = SVFUtil::dyn_cast&lt;GetElementPtrInst&gt;(src))</div>
270
+ <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; src = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a07bd47ccfd02c5a2a6db26b537b2184f">stripConstantCasts</a>(gep-&gt;getPointerOperand());</div>
271
+ <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
272
+ <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">auto</span> getHookFn = [](<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* src)-&gt;<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>*</div>
273
+ <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div>
274
+ <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;GlobalVariable&gt;(src))</div>
275
+ <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
276
+ <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; </div>
277
+ <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">auto</span> *glob = SVFUtil::cast&lt;GlobalVariable&gt;(src);</div>
278
+ <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">if</span> (!glob-&gt;hasInitializer() || !SVFUtil::isa&lt;ConstantDataArray&gt;(glob-&gt;getInitializer()))</div>
279
+ <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div>
280
+ <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
281
+ <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keyword">auto</span> *constarray = SVFUtil::cast&lt;ConstantDataArray&gt;(glob-&gt;getInitializer());</div>
282
+ <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1LLVMUtil.html#a76b0d0ac69c170838cfc8ee26f4518a0">LLVMUtil::getProgFunction</a>(constarray-&gt;getAsCString().str());</div>
283
+ <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; };</div>
284
+ <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; </div>
285
+ <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *fn = getHookFn(src))</div>
286
+ <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {</div>
287
+ <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcNode = getValueNode(fn);</div>
288
+ <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; addCopyEdge(srcNode, getValueNode(cs));</div>
289
+ <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div>
290
+ <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div>
291
+ <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(svfCallee-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a2401b022638769f59f86ab424a189b6e">getName</a>().find(<span class="stringliteral">&quot;_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_&quot;</span>) != std::string::npos)</div>
292
+ <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; {</div>
293
+ <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="comment">// The purpose of this function is to insert a new node into the red-black tree and then rebalance the tree to ensure that the red-black tree properties are maintained.</span></div>
294
+ <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; assert(svfCall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a496d0e963f0f6a4f9c08183fa91792b0">arg_size</a>() == 4 &amp;&amp; <span class="stringliteral">&quot;_Rb_tree_insert_and_rebalance should have 4 arguments.\n&quot;</span>);</div>
295
+ <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; </div>
296
+ <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="comment">// We have vArg3 points to the entry of _Rb_tree_node_base { color; parent; left; right; }.</span></div>
297
+ <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="comment">// Now we calculate the offset from base to vArg3</span></div>
298
+ <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnArg3 = pag-&gt;getValueNode(svfCall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a3cbb4b4089c8b27d01da15f2d2f22e14">getArgOperand</a>(3));</div>
299
+ <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> =</div>
300
+ <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; getAccessPathFromBaseNode(vnArg3).getConstantStructFldIdx();</div>
301
+ <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; </div>
302
+ <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="comment">// We get all flattened fields of base</span></div>
303
+ <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; vector&lt;AccessPath&gt; fields = pag-&gt;getTypeLocSetsMap(vnArg3).second;</div>
304
+ <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
305
+ <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <span class="comment">// We summarize the side effects: arg3-&gt;parent = arg1, arg3-&gt;left = arg1, arg3-&gt;right = arg1</span></div>
306
+ <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// Note that arg0 is aligned with &quot;offset&quot;.</span></div>
307
+ <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> i = <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + 1; i &lt;= <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> + 3; ++i)</div>
308
+ <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div>
309
+ <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">if</span>((<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>)i &gt;= fields.size())</div>
310
+ <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">break</span>;</div>
311
+ <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFType.html">SVFType</a>* elementType = pag-&gt;getSymbolInfo()-&gt;getFlatternedElemType(pag-&gt;getTypeLocSetsMap(vnArg3).first,</div>
312
+ <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; fields[i].getConstantStructFldIdx());</div>
313
+ <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnD = getGepValVar(cs-&gt;getArgOperand(3), fields[i], elementType);</div>
314
+ <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> vnS = pag-&gt;getValueNode(svfCall-&gt;<a class="code" href="classSVF_1_1SVFCallInst.html#a3cbb4b4089c8b27d01da15f2d2f22e14">getArgOperand</a>(1));</div>
315
+ <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span>(vnD &amp;&amp; vnS)</div>
316
+ <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; addStoreEdge(vnS,vnD);</div>
317
+ <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
318
+ <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div>
319
+ <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; </div>
320
+ <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c2abeb363081381c3dc939ab511e3f0">isThreadForkCall</a>(svfInst))</div>
321
+ <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; {</div>
322
+ <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* forkedFun = SVFUtil::dyn_cast&lt;SVFFunction&gt;(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2790c5289dad1d6e80f7597a2ea458ab">getForkedFun</a>(svfInst)))</div>
323
+ <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div>
324
+ <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; forkedFun = forkedFun-&gt;getDefFunForMultipleModule();</div>
325
+ <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* actualParm = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8c64663b564eb7c399013389920ab500">getActualParmAtForkSite</a>(svfInst);</div>
326
+ <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; assert((forkedFun-&gt;arg_size() &lt;= 2) &amp;&amp; <span class="stringliteral">&quot;Size of formal parameter of start routine should be one&quot;</span>);</div>
327
+ <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span> (forkedFun-&gt;arg_size() &lt;= 2 &amp;&amp; forkedFun-&gt;arg_size() &gt;= 1)</div>
328
+ <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; {</div>
329
+ <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* formalParm = forkedFun-&gt;getArg(0);</div>
330
+ <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span> (actualParm-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>() &amp;&amp; formalParm-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
331
+ <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; {</div>
332
+ <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *icfgNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfInst);</div>
333
+ <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> *entry = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(forkedFun);</div>
334
+ <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; addThreadForkEdge(pag-&gt;getValueNode(actualParm), pag-&gt;getValueNode(formalParm), icfgNode, entry);</div>
335
+ <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div>
336
+ <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; }</div>
337
+ <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div>
338
+ <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">else</span></div>
339
+ <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; {</div>
340
+ <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div>
341
+ <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
342
+ <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; </div>
343
+ <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a28fbb7cc51eb7e25d88f43e3eb1f30fb">isHareParForCall</a>(svfInst))</div>
344
+ <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; {</div>
345
+ <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* taskFunc = SVFUtil::dyn_cast&lt;SVFFunction&gt;(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a5cee46f58bdab3f9b1c698e97290152f">getTaskFuncAtHareParForSite</a>(svfInst)))</div>
346
+ <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div>
347
+ <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; assert((taskFunc-&gt;arg_size() == 3) &amp;&amp; <span class="stringliteral">&quot;Size of formal parameter of hare_parallel_for&#39;s task routine should be 3&quot;</span>);</div>
348
+ <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFValue.html">SVFValue</a>* actualParm = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2f74db48793a0db76c000ffecf9e1bd2">getTaskDataAtHareParForSite</a>(svfInst);</div>
349
+ <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFArgument.html">SVFArgument</a>* formalParm = taskFunc-&gt;getArg(0);</div>
350
+ <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">if</span> (actualParm-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>() &amp;&amp; formalParm-&gt;<a class="code" href="classSVF_1_1SVFValue.html#a11f2d9b6e969ede6fca2c204cc15b821">getType</a>()-&gt;<a class="code" href="classSVF_1_1SVFType.html#a870b63af2bf9fe43cdf1df3d56b20f6c">isPointerTy</a>())</div>
351
+ <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div>
352
+ <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a> *icfgNode = pag-&gt;getICFG()-&gt;getCallICFGNode(svfInst);</div>
353
+ <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <a class="code" href="classSVF_1_1FunEntryICFGNode.html">FunEntryICFGNode</a> *entry = pag-&gt;getICFG()-&gt;getFunEntryICFGNode(taskFunc);</div>
354
+ <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; addThreadForkEdge(pag-&gt;getValueNode(actualParm), pag-&gt;getValueNode(formalParm), icfgNode, entry);</div>
355
+ <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
356
+ <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; }</div>
357
+ <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">else</span></div>
358
+ <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div>
359
+ <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
360
+ <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div>
361
+ <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; </div>
362
+ <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;}</div>
361
363
  </div><!-- fragment --></div><!-- contents -->
362
364
  <div class="ttc" id="anamespaceSVF_html_a5c4820681ef340339ddded756eb82ae1"><div class="ttname"><a href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">SVF::APOffset</a></div><div class="ttdeci">s64_t APOffset</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00061">SVFType.h:61</a></div></div>
363
365
  <div class="ttc" id="aclassSVF_1_1SVFCallInst_html_a3cbb4b4089c8b27d01da15f2d2f22e14"><div class="ttname"><a href="classSVF_1_1SVFCallInst.html#a3cbb4b4089c8b27d01da15f2d2f22e14">SVF::SVFCallInst::getArgOperand</a></div><div class="ttdeci">const SVFValue * getArgOperand(u32_t i) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00746">SVFValue.h:746</a></div></div>
@@ -601,7 +601,7 @@ $(function() {
601
601
  <div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VariantGep --&gt; &quot;</span></div>
602
602
  <div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
603
603
  <div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">else</span></div>
604
- <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot; -- Gep (&quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#afe5ae814b71b59fc03bd672d62a5fab7">getConstantFieldIdx</a>()</div>
604
+ <div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot; -- Gep (&quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a71fcc6d100ce2a9785a02b8924261956">getConstantStructFldIdx</a>()</div>
605
605
  <div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
606
606
  <div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; }</div>
607
607
  <div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; </div>
@@ -710,6 +710,7 @@ $(function() {
710
710
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a5298f34143ec3a2e6bb74ebad668cbbc"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a5298f34143ec3a2e6bb74ebad668cbbc">SVF::SVFIR::getBaseValVar</a></div><div class="ttdeci">NodeID getBaseValVar(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00519">SVFIR.cpp:519</a></div></div>
711
711
  <div class="ttc" id="aclassSVF_1_1Options_html_a12e88ce4ba3d39017203ec4cd3ccccea"><div class="ttname"><a href="classSVF_1_1Options.html#a12e88ce4ba3d39017203ec4cd3ccccea">SVF::Options::FirstFieldEqBase</a></div><div class="ttdeci">static const Option&lt; bool &gt; FirstFieldEqBase</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00114">Options.h:114</a></div></div>
712
712
  <div class="ttc" id="aclassSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00313">SVFStatements.h:313</a></div></div>
713
+ <div class="ttc" id="aclassSVF_1_1GepStmt_html_a71fcc6d100ce2a9785a02b8924261956"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a71fcc6d100ce2a9785a02b8924261956">SVF::GepStmt::getConstantStructFldIdx</a></div><div class="ttdeci">APOffset getConstantStructFldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00520">SVFStatements.h:520</a></div></div>
713
714
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a33df5f5d9b7de3846cf973135b04f513"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a33df5f5d9b7de3846cf973135b04f513">SVF::SVFIR::addBlackHoleAddrStmt</a></div><div class="ttdeci">SVFStmt * addBlackHoleAddrStmt(NodeID node)</div><div class="ttdoc">Set a pointer points-to black hole (e.g. int2ptr)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00277">SVFIR.cpp:277</a></div></div>
714
715
  <div class="ttc" id="aclassSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00526">SVFStatements.h:526</a></div></div>
715
716
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a42d1e2f0213fb6e54c56cc0695b57cb0"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a42d1e2f0213fb6e54c56cc0695b57cb0">SVF::SVFIR::getFieldsAfterCollapse</a></div><div class="ttdeci">NodeBS getFieldsAfterCollapse(NodeID id)</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00499">SVFIR.cpp:499</a></div></div>
@@ -772,7 +773,6 @@ $(function() {
772
773
  <div class="ttc" id="aclassSVF_1_1PhiStmt_html_ac3541a25f83ce8465d7b35010ba50b37"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#ac3541a25f83ce8465d7b35010ba50b37">SVF::PhiStmt::addOpVar</a></div><div class="ttdeci">void addOpVar(SVFVar *op, const ICFGNode *inode)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00792">SVFStatements.h:792</a></div></div>
773
774
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_accbff738e77fd2256d4a6629c48d63f4"><div class="ttname"><a href="classSVF_1_1SVFIR.html#accbff738e77fd2256d4a6629c48d63f4">SVF::SVFIR::addSelectStmt</a></div><div class="ttdeci">SelectStmt * addSelectStmt(NodeID res, NodeID op1, NodeID op2, NodeID cond)</div><div class="ttdoc">Add SelectStmt.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00106">SVFIR.cpp:106</a></div></div>
774
775
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a555e6d530c37b23e1e43925aa188385f"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a555e6d530c37b23e1e43925aa188385f">SVF::SVFIR::addGepValNode</a></div><div class="ttdeci">NodeID addGepValNode(const SVFValue *curInst, const SVFValue *val, const AccessPath &amp;ap, NodeID i, const SVFType *type)</div><div class="ttdoc">Add a temp field value node, this method can only invoked by getGepValVar.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00386">SVFIR.cpp:386</a></div></div>
775
- <div class="ttc" id="aclassSVF_1_1GepStmt_html_afe5ae814b71b59fc03bd672d62a5fab7"><div class="ttname"><a href="classSVF_1_1GepStmt.html#afe5ae814b71b59fc03bd672d62a5fab7">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">APOffset getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00520">SVFStatements.h:520</a></div></div>
776
776
  <div class="ttc" id="aclassSVF_1_1FIObjVar_html"><div class="ttname"><a href="classSVF_1_1FIObjVar.html">SVF::FIObjVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00529">SVFVariables.h:529</a></div></div>
777
777
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVF::SVFStmt::Copy</a></div><div class="ttdeci">@ Copy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00064">SVFStatements.h:64</a></div></div>
778
778
  <div class="ttc" id="aclassSVF_1_1SVFIR_html_a236b4fefd16e9c793c5bd6d576290841"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a236b4fefd16e9c793c5bd6d576290841">SVF::SVFIR::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print SVFIR.</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8cpp_source.html#l00575">SVFIR.cpp:575</a></div></div>
@@ -520,10 +520,10 @@ $(function() {
520
520
  <div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="keyword"> </span>{</div>
521
521
  <div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">computeConstantOffset</a>();</div>
522
522
  <div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div>
523
- <div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#afe5ae814b71b59fc03bd672d62a5fab7"> 520</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="classSVF_1_1GepStmt.html#afe5ae814b71b59fc03bd672d62a5fab7">getConstantFieldIdx</a>()<span class="keyword"> const</span></div>
523
+ <div class="line"><a name="l00520"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a71fcc6d100ce2a9785a02b8924261956"> 520</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a5c4820681ef340339ddded756eb82ae1">APOffset</a> <a class="code" href="classSVF_1_1GepStmt.html#a71fcc6d100ce2a9785a02b8924261956">getConstantStructFldIdx</a>()<span class="keyword"> const</span></div>
524
524
  <div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="keyword"> </span>{</div>
525
525
  <div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; assert(<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>()==<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;Can&#39;t retrieve the AccessPath if using a variable field index (pointer arithmetic) for struct field access &quot;</span>);</div>
526
- <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">getConstantFieldIdx</a>();</div>
526
+ <div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GepStmt.html#a6c74f234a6b40bc5292bb14874c2e600">getAccessPath</a>().<a class="code" href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">getConstantStructFldIdx</a>();</div>
527
527
  <div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div>
528
528
  <div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788"> 526</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>()<span class="keyword"> const</span></div>
529
529
  <div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="keyword"> </span>{</div>
@@ -1186,6 +1186,7 @@ $(function() {
1186
1186
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a7ba458577745f9b88bceceee91649567"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a7ba458577745f9b88bceceee91649567">SVF::SVFStmt::getInst</a></div><div class="ttdeci">const SVFInstruction * getInst() const</div><div class="ttdoc">Get/set methods for llvm instruction.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00137">SVFStatements.h:137</a></div></div>
1187
1187
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_aac79c7e8d390f297002782afb0ba3ff0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#aac79c7e8d390f297002782afb0ba3ff0">SVF::SVFStmt::~SVFStmt</a></div><div class="ttdeci">~SVFStmt()</div><div class="ttdoc">Destructor.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00099">SVFStatements.h:99</a></div></div>
1188
1188
  <div class="ttc" id="aclassSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00313">SVFStatements.h:313</a></div></div>
1189
+ <div class="ttc" id="aclassSVF_1_1GepStmt_html_a71fcc6d100ce2a9785a02b8924261956"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a71fcc6d100ce2a9785a02b8924261956">SVF::GepStmt::getConstantStructFldIdx</a></div><div class="ttdeci">APOffset getConstantStructFldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00520">SVFStatements.h:520</a></div></div>
1189
1190
  <div class="ttc" id="aclassSVF_1_1UnaryOPStmt_html_add29b76e0ef73da2606bac97f74a7896"><div class="ttname"><a href="classSVF_1_1UnaryOPStmt.html#add29b76e0ef73da2606bac97f74a7896">SVF::UnaryOPStmt::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGEdgeTy *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01061">SVFStatements.h:1061</a></div></div>
1190
1191
  <div class="ttc" id="aclassSVF_1_1CallPE_html_a1e09f62a8e3ce2d3bc3fadb29e32a50e"><div class="ttname"><a href="classSVF_1_1CallPE.html#a1e09f62a8e3ce2d3bc3fadb29e32a50e">SVF::CallPE::CallPE</a></div><div class="ttdeci">CallPE(const CallPE &amp;)</div><div class="ttdoc">place holder</div></div>
1191
1192
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a2bdfa37167b5496629e5cae62705d5f2"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a2bdfa37167b5496629e5cae62705d5f2">SVF::SVFStmt::PAGEdgeSetTy</a></div><div class="ttdeci">SVFStmtSetTy PAGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00220">SVFStatements.h:220</a></div></div>
@@ -1264,6 +1265,7 @@ $(function() {
1264
1265
  <div class="ttc" id="aclassSVF_1_1GenericEdge_html_aab8892b73370c32b48621cd1d0cce614"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">SVF::GenericEdge::GEdgeFlag</a></div><div class="ttdeci">u64_t GEdgeFlag</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00061">GenericGraph.h:61</a></div></div>
1265
1266
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338acae866bc681596d85b9aba876256ad0e69"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338acae866bc681596d85b9aba876256ad0e69">SVF::CmpStmt::LAST_FCMP_PREDICATE</a></div><div class="ttdeci">@ LAST_FCMP_PREDICATE</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00906">SVFStatements.h:906</a></div></div>
1266
1267
  <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_acb793282c0abdef799b02658eebe1b79"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#acb793282c0abdef799b02658eebe1b79">SVF::MultiOpndStmt::getSrcID</a></div><div class="ttdeci">NodeID getSrcID()</div><div class="ttdoc">not allowed, use getOpVarID(idx) instead</div></div>
1268
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a5427d08c9eb9d86e66c2bff6aeba6bac"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a5427d08c9eb9d86e66c2bff6aeba6bac">SVF::AccessPath::getConstantStructFldIdx</a></div><div class="ttdeci">APOffset getConstantStructFldIdx() const</div><div class="ttdoc">Get methods.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00100">AccessPath.h:100</a></div></div>
1267
1269
  <div class="ttc" id="aclassSVF_1_1BinaryOPStmt_html_a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576"><div class="ttname"><a href="classSVF_1_1BinaryOPStmt.html#a2f647224242dd87099104e0fdc994de6ac988853383e1588cf568687848e73576">SVF::BinaryOPStmt::AShr</a></div><div class="ttdeci">@ AShr</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00987">SVFStatements.h:987</a></div></div>
1268
1270
  <div class="ttc" id="aclassSVF_1_1CopyStmt_html_a96205e0ffb3001de306e856090dbf277"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#a96205e0ffb3001de306e856090dbf277">SVF::CopyStmt::operator=</a></div><div class="ttdeci">void operator=(const CopyStmt &amp;)</div><div class="ttdoc">place holder</div></div>
1269
1271
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_ad0b4dbe87e009518f22360c48b0d0c22"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#ad0b4dbe87e009518f22360c48b0d0c22">SVF::SVFStmt::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00066">SVFStatements.cpp:66</a></div></div>
@@ -1286,7 +1288,6 @@ $(function() {
1286
1288
  <div class="ttc" id="aclassSVF_1_1MultiOpndStmt_html_a5de8ff8363cb3f0b1427b69aa1058470"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a5de8ff8363cb3f0b1427b69aa1058470">SVF::MultiOpndStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *node)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00697">SVFStatements.h:697</a></div></div>
1287
1289
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a24c64109d27ef7549d1c7a07c391e007"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a24c64109d27ef7549d1c7a07c391e007">SVF::SVFStmt::var2LabelMap</a></div><div class="ttdeci">static Var2LabelMap var2LabelMap</div><div class="ttdoc">Second operand of MultiOpndStmt to label map.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00226">SVFStatements.h:226</a></div></div>
1288
1290
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a4cec89489e82c60c287cae3327f3f01d"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">SVF::AssignStmt::getRHSVarID</a></div><div class="ttdeci">NodeID getRHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00298">SVFStatements.h:298</a></div></div>
1289
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a68e49bb797a84ea035ea338549f2e054"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">SVF::AccessPath::getConstantFieldIdx</a></div><div class="ttdeci">APOffset getConstantFieldIdx() const</div><div class="ttdoc">Get methods.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00098">AccessPath.h:98</a></div></div>
1290
1291
  <div class="ttc" id="aclassSVF_1_1RetPE_html_a274adbd91750d8d6de8ba997285c1c49"><div class="ttname"><a href="classSVF_1_1RetPE.html#a274adbd91750d8d6de8ba997285c1c49">SVF::RetPE::getFunExitICFGNode</a></div><div class="ttdeci">const FunExitICFGNode * getFunExitICFGNode() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00654">SVFStatements.h:654</a></div></div>
1291
1292
  <div class="ttc" id="aclassSVF_1_1SelectStmt_html_a89f27a20f9c2acc66c4c6152e79ee30e"><div class="ttname"><a href="classSVF_1_1SelectStmt.html#a89f27a20f9c2acc66c4c6152e79ee30e">SVF::SelectStmt::classof</a></div><div class="ttdeci">static bool classof(const SelectStmt *)</div><div class="ttdoc">Methods for support type inquiry through isa, cast, and dyn_cast:</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00832">SVFStatements.h:832</a></div></div>
1292
1293
  <div class="ttc" id="aclassSVF_1_1RetPE_html_a0af89e939e91a980a083f931b209aea0"><div class="ttname"><a href="classSVF_1_1RetPE.html#a0af89e939e91a980a083f931b209aea0">SVF::RetPE::RetPE</a></div><div class="ttdeci">RetPE(const RetPE &amp;)</div><div class="ttdoc">place holder</div></div>
@@ -1342,7 +1343,6 @@ $(function() {
1342
1343
  <div class="ttc" id="aclassSVF_1_1PhiStmt_html_ac214292370d79324f6da8624fe2c7139"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#ac214292370d79324f6da8624fe2c7139">SVF::PhiStmt::classof</a></div><div class="ttdeci">static bool classof(const SVFStmt *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00771">SVFStatements.h:771</a></div></div>
1343
1344
  <div class="ttc" id="aclassSVF_1_1AssignStmt_html_a8b2837153dcf9f7e2adc3b30b2dd0245"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a8b2837153dcf9f7e2adc3b30b2dd0245">SVF::AssignStmt::classof</a></div><div class="ttdeci">static bool classof(const GenericPAGEdgeTy *edge)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00276">SVFStatements.h:276</a></div></div>
1344
1345
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a229c78147511f2a581c761552179b6fa"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a229c78147511f2a581c761552179b6fa">SVF::SVFStmt::PAGEdgeToSetMapTy</a></div><div class="ttdeci">Map&lt; EdgeID, SVFStmtSetTy &gt; PAGEdgeToSetMapTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00218">SVFStatements.h:218</a></div></div>
1345
- <div class="ttc" id="aclassSVF_1_1GepStmt_html_afe5ae814b71b59fc03bd672d62a5fab7"><div class="ttname"><a href="classSVF_1_1GepStmt.html#afe5ae814b71b59fc03bd672d62a5fab7">SVF::GepStmt::getConstantFieldIdx</a></div><div class="ttdeci">APOffset getConstantFieldIdx() const</div><div class="ttdoc">Field index of the gep statement if it access the field of a struct.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00520">SVFStatements.h:520</a></div></div>
1346
1346
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_ae746362c42da05a641ae062658e40651"><div class="ttname"><a href="classSVF_1_1AccessPath.html#ae746362c42da05a641ae062658e40651">SVF::AccessPath::computeConstantOffset</a></div><div class="ttdeci">APOffset computeConstantOffset() const</div><div class="ttdoc">For example,.</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8cpp_source.html#l00207">AccessPath.cpp:207</a></div></div>
1347
1347
  <div class="ttc" id="aclassSVF_1_1CmpStmt_html_ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f"><div class="ttname"><a href="classSVF_1_1CmpStmt.html#ad8e01744bfd98d584661025ce59338aca56a20e408f9639234e4a11036764a38f">SVF::CmpStmt::ICMP_ULE</a></div><div class="ttdeci">@ ICMP_ULE</div><div class="ttdoc">unsigned less or equal</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00913">SVFStatements.h:913</a></div></div>
1348
1348
  <div class="ttc" id="aclassSVF_1_1PhiStmt_html_ac2374acf4477a4bc5d188797ea9baaf3"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#ac2374acf4477a4bc5d188797ea9baaf3">SVF::PhiStmt::PhiStmt</a></div><div class="ttdeci">PhiStmt(SVFVar *s, const OPVars &amp;opnds, const OpICFGNodeVec &amp;icfgNodes)</div><div class="ttdoc">constructor</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00786">SVFStatements.h:786</a></div></div>
@@ -1390,7 +1390,7 @@ $(function() {
1390
1390
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_ad61722f886afaaee722ac55a4eed4d18"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#ad61722f886afaaee722ac55a4eed4d18">SVF::SVFStmt::makeEdgeFlagWithStoreInst</a></div><div class="ttdeci">static GEdgeFlag makeEdgeFlagWithStoreInst(GEdgeKind k, const ICFGNode *store)</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00195">SVFStatements.h:195</a></div></div>
1391
1391
  <div class="ttc" id="aclassSVF_1_1CopyStmt_html_ad72ccb8ab29258b7c0fb54c48e8dec3a"><div class="ttname"><a href="classSVF_1_1CopyStmt.html#ad72ccb8ab29258b7c0fb54c48e8dec3a">SVF::CopyStmt::toString</a></div><div class="ttdeci">virtual const std::string toString() const override</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00087">SVFStatements.cpp:87</a></div></div>
1392
1392
  <div class="ttc" id="aclassSVF_1_1AccessPath_html_a04ca154a70f40999a6a28c505bfd942d"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a04ca154a70f40999a6a28c505bfd942d">SVF::AccessPath::IdxOperandPairs</a></div><div class="ttdeci">std::vector&lt; IdxOperandPair &gt; IdxOperandPairs</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00065">AccessPath.h:65</a></div></div>
1393
- <div class="ttc" id="aclassSVF_1_1AccessPath_html_a586c71842e3e4487921aa3384ce9d025"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">SVF::AccessPath::getIdxOperandPairVec</a></div><div class="ttdeci">const IdxOperandPairs &amp; getIdxOperandPairVec() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00106">AccessPath.h:106</a></div></div>
1393
+ <div class="ttc" id="aclassSVF_1_1AccessPath_html_a586c71842e3e4487921aa3384ce9d025"><div class="ttname"><a href="classSVF_1_1AccessPath.html#a586c71842e3e4487921aa3384ce9d025">SVF::AccessPath::getIdxOperandPairVec</a></div><div class="ttdeci">const IdxOperandPairs &amp; getIdxOperandPairVec() const</div><div class="ttdef"><b>Definition:</b> <a href="AccessPath_8h_source.html#l00108">AccessPath.h:108</a></div></div>
1394
1394
  <div class="ttc" id="aclassSVF_1_1PhiStmt_html_a0b97394bc1946c0185d2c11fbc2181f4"><div class="ttname"><a href="classSVF_1_1PhiStmt.html#a0b97394bc1946c0185d2c11fbc2181f4">SVF::PhiStmt::getOpICFGNode</a></div><div class="ttdeci">const ICFGNode * getOpICFGNode(u32_t op_idx) const</div><div class="ttdoc">Return the corresponding ICFGNode of this operand.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00801">SVFStatements.h:801</a></div></div>
1395
1395
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a93fc6c4c991931c78c48500c2db50f66"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a93fc6c4c991931c78c48500c2db50f66">SVF::SVFStmt::KindToSVFStmtMapTy</a></div><div class="ttdeci">PAGEdgeToSetMapTy KindToSVFStmtMapTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00219">SVFStatements.h:219</a></div></div>
1396
1396
  <div class="ttc" id="aclassSVF_1_1SVFStmt_html_a0b6c03af568b70903da6b200ac86c951"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0b6c03af568b70903da6b200ac86c951">SVF::SVFStmt::isPTAEdge</a></div><div class="ttdeci">bool isPTAEdge() const</div><div class="ttdoc">Whether src and dst nodes are both of pointer type.</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00061">SVFStatements.cpp:61</a></div></div>