svf-tools 1.0.752 → 1.0.754

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 (374) hide show
  1. package/SVF-doxygen/html/html/BoundedZ3Expr_8cpp_source.html +3 -3
  2. package/SVF-doxygen/html/html/BoundedZ3Expr_8h.html +24 -1
  3. package/SVF-doxygen/html/html/BoundedZ3Expr_8h_source.html +373 -376
  4. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +76 -76
  5. package/SVF-doxygen/html/html/CFGNormalizer_8h.html +1 -1
  6. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +29 -29
  7. package/SVF-doxygen/html/html/CFGrammar_8cpp.html +88 -0
  8. package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +568 -0
  9. package/SVF-doxygen/html/html/CFGrammar_8h.html +108 -0
  10. package/SVF-doxygen/html/html/CFGrammar_8h_source.html +643 -0
  11. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
  12. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +120 -127
  13. package/SVF-doxygen/html/html/CFLBase_8h_source.html +14 -14
  14. package/SVF-doxygen/html/html/CFLGramGraphChecker_8h.html +1 -1
  15. package/SVF-doxygen/html/html/CFLGramGraphChecker_8h_source.html +12 -12
  16. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +464 -409
  17. package/SVF-doxygen/html/html/CFLGraphBuilder_8h.html +10 -2
  18. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +120 -175
  19. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/CFLGraph_8h.html +1 -1
  21. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +11 -11
  22. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +60 -60
  23. package/SVF-doxygen/html/html/CFLSolver_8h.html +1 -1
  24. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +19 -19
  25. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +5 -5
  27. package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
  29. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +7 -7
  30. package/SVF-doxygen/html/html/GrammarBuilder_8h.html +1 -1
  31. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +3 -3
  32. package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +12 -12
  35. package/SVF-doxygen/html/html/PAGGrammar_8txt.html +209 -0
  36. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +11 -11
  37. package/SVF-doxygen/html/html/SingleAbsValue_8h_source.html +4 -4
  38. package/SVF-doxygen/html/html/VFGGrammar_8txt.html +119 -0
  39. package/SVF-doxygen/html/html/annotated.html +6 -6
  40. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +21 -20
  41. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +223 -220
  42. package/SVF-doxygen/html/html/classSVF_1_1BoundedZ3Expr.html +291 -296
  43. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +10 -10
  44. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +119 -119
  45. package/SVF-doxygen/html/html/classSVF_1_1CFGrammar-members.html +158 -0
  46. package/SVF-doxygen/html/html/classSVF_1_1CFGrammar.html +1051 -0
  47. package/SVF-doxygen/html/html/classSVF_1_1CFGrammar.png +0 -0
  48. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +1 -1
  49. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +13 -13
  50. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +1 -1
  51. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +108 -114
  52. package/SVF-doxygen/html/html/classSVF_1_1CFLFIFOWorkList.html +17 -17
  53. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +2 -2
  54. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +16 -16
  55. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder-members.html +17 -16
  56. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +333 -280
  57. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +5 -5
  58. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +56 -56
  59. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +2 -2
  60. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +1 -1
  61. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +14 -14
  62. package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +1 -1
  63. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +4 -4
  64. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +76 -76
  65. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.png +0 -0
  66. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +4 -4
  67. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +5 -5
  68. package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +11 -11
  69. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias-members.html +1 -1
  70. package/SVF-doxygen/html/html/classSVF_1_1POCRAlias.html +4 -4
  71. package/SVF-doxygen/html/html/classSVF_1_1POCRHybrid-members.html +1 -1
  72. package/SVF-doxygen/html/html/classSVF_1_1POCRHybrid.html +4 -4
  73. package/SVF-doxygen/html/html/classSVF_1_1POCRHybridSolver-members.html +7 -7
  74. package/SVF-doxygen/html/html/classSVF_1_1POCRHybridSolver.html +53 -53
  75. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver-members.html +6 -6
  76. package/SVF-doxygen/html/html/classSVF_1_1POCRSolver.html +47 -47
  77. package/SVF-doxygen/html/html/classSVF_1_1SingleAbsValue.html +3 -3
  78. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder-members.html +21 -20
  79. package/SVF-doxygen/html/html/classSVF_1_1VFCFLGraphBuilder.html +148 -145
  80. package/SVF-doxygen/html/html/classes.html +6 -6
  81. package/SVF-doxygen/html/html/dir_1b8e404556d3e8597ae60437f0a084bf.html +7 -2
  82. package/SVF-doxygen/html/html/dir_7de7f3d0ab1cbd78bc64b135e4cd18be.html +80 -0
  83. package/SVF-doxygen/html/html/dir_8a9c8659eb68b9cbd3fead4690588a47.html +2 -2
  84. package/SVF-doxygen/html/html/files.html +14 -13
  85. package/SVF-doxygen/html/html/functions_a.html +5 -5
  86. package/SVF-doxygen/html/html/functions_b.html +9 -7
  87. package/SVF-doxygen/html/html/functions_c.html +5 -5
  88. package/SVF-doxygen/html/html/functions_d.html +1 -1
  89. package/SVF-doxygen/html/html/functions_e.html +4 -4
  90. package/SVF-doxygen/html/html/functions_f.html +2 -2
  91. package/SVF-doxygen/html/html/functions_func.html +5 -5
  92. package/SVF-doxygen/html/html/functions_func_b.html +9 -7
  93. package/SVF-doxygen/html/html/functions_func_c.html +5 -5
  94. package/SVF-doxygen/html/html/functions_func_d.html +1 -1
  95. package/SVF-doxygen/html/html/functions_func_e.html +3 -3
  96. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  97. package/SVF-doxygen/html/html/functions_func_g.html +13 -13
  98. package/SVF-doxygen/html/html/functions_func_h.html +3 -3
  99. package/SVF-doxygen/html/html/functions_func_i.html +1 -1
  100. package/SVF-doxygen/html/html/functions_func_n.html +2 -2
  101. package/SVF-doxygen/html/html/functions_func_p.html +2 -2
  102. package/SVF-doxygen/html/html/functions_func_r.html +1 -1
  103. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  104. package/SVF-doxygen/html/html/functions_g.html +15 -15
  105. package/SVF-doxygen/html/html/functions_h.html +3 -3
  106. package/SVF-doxygen/html/html/functions_i.html +2 -2
  107. package/SVF-doxygen/html/html/functions_k.html +3 -3
  108. package/SVF-doxygen/html/html/functions_l.html +5 -5
  109. package/SVF-doxygen/html/html/functions_n.html +3 -3
  110. package/SVF-doxygen/html/html/functions_o.html +13 -13
  111. package/SVF-doxygen/html/html/functions_p.html +16 -12
  112. package/SVF-doxygen/html/html/functions_r.html +1 -1
  113. package/SVF-doxygen/html/html/functions_s.html +17 -19
  114. package/SVF-doxygen/html/html/functions_t.html +3 -3
  115. package/SVF-doxygen/html/html/functions_type_k.html +2 -2
  116. package/SVF-doxygen/html/html/functions_type_p.html +1 -1
  117. package/SVF-doxygen/html/html/functions_type_s.html +3 -3
  118. package/SVF-doxygen/html/html/functions_v.html +6 -6
  119. package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
  120. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  121. package/SVF-doxygen/html/html/functions_vars_g.html +2 -2
  122. package/SVF-doxygen/html/html/functions_vars_k.html +1 -1
  123. package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
  124. package/SVF-doxygen/html/html/functions_vars_s.html +2 -2
  125. package/SVF-doxygen/html/html/functions_w.html +9 -9
  126. package/SVF-doxygen/html/html/globals.html +6 -4
  127. package/SVF-doxygen/html/html/globals_defs.html +7 -0
  128. package/SVF-doxygen/html/html/globals_e.html +1 -1
  129. package/SVF-doxygen/html/html/globals_g.html +3 -3
  130. package/SVF-doxygen/html/html/globals_m.html +4 -1
  131. package/SVF-doxygen/html/html/globals_s.html +1 -1
  132. package/SVF-doxygen/html/html/globals_v.html +2 -2
  133. package/SVF-doxygen/html/html/globals_vars.html +12 -10
  134. package/SVF-doxygen/html/html/hierarchy.html +1 -1
  135. package/SVF-doxygen/html/html/menudata.js +1 -0
  136. package/SVF-doxygen/html/html/namespaceSVF.html +40 -2
  137. package/SVF-doxygen/html/html/namespacemembers_b.html +3 -0
  138. package/SVF-doxygen/html/html/namespacemembers_enum.html +3 -0
  139. package/SVF-doxygen/html/html/search/all_0.js +147 -146
  140. package/SVF-doxygen/html/html/search/all_1.js +478 -478
  141. package/SVF-doxygen/html/html/search/all_10.js +327 -325
  142. package/SVF-doxygen/html/html/search/all_11.js +208 -208
  143. package/SVF-doxygen/html/html/search/all_12.js +545 -545
  144. package/SVF-doxygen/html/html/search/all_13.js +189 -189
  145. package/SVF-doxygen/html/html/search/all_14.js +66 -66
  146. package/SVF-doxygen/html/html/search/all_15.js +170 -170
  147. package/SVF-doxygen/html/html/search/all_16.js +60 -60
  148. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  149. package/SVF-doxygen/html/html/search/all_18.js +1 -1
  150. package/SVF-doxygen/html/html/search/all_19.js +10 -10
  151. package/SVF-doxygen/html/html/search/all_1a.js +169 -169
  152. package/SVF-doxygen/html/html/search/all_2.js +159 -156
  153. package/SVF-doxygen/html/html/search/all_3.js +637 -638
  154. package/SVF-doxygen/html/html/search/all_4.js +227 -227
  155. package/SVF-doxygen/html/html/search/all_5.js +156 -156
  156. package/SVF-doxygen/html/html/search/all_6.js +223 -223
  157. package/SVF-doxygen/html/html/search/all_7.js +1012 -1012
  158. package/SVF-doxygen/html/html/search/all_8.js +192 -192
  159. package/SVF-doxygen/html/html/search/all_9.js +597 -597
  160. package/SVF-doxygen/html/html/search/all_a.js +47 -47
  161. package/SVF-doxygen/html/html/search/all_b.js +26 -26
  162. package/SVF-doxygen/html/html/search/all_c.js +113 -113
  163. package/SVF-doxygen/html/html/search/all_d.js +196 -196
  164. package/SVF-doxygen/html/html/search/all_e.js +206 -206
  165. package/SVF-doxygen/html/html/search/all_f.js +122 -122
  166. package/SVF-doxygen/html/html/search/classes_0.js +26 -26
  167. package/SVF-doxygen/html/html/search/classes_1.js +9 -9
  168. package/SVF-doxygen/html/html/search/classes_10.js +73 -73
  169. package/SVF-doxygen/html/html/search/classes_11.js +15 -15
  170. package/SVF-doxygen/html/html/search/classes_12.js +2 -2
  171. package/SVF-doxygen/html/html/search/classes_13.js +10 -10
  172. package/SVF-doxygen/html/html/search/classes_14.js +14 -14
  173. package/SVF-doxygen/html/html/search/classes_15.js +1 -1
  174. package/SVF-doxygen/html/html/search/classes_2.js +76 -76
  175. package/SVF-doxygen/html/html/search/classes_3.js +35 -35
  176. package/SVF-doxygen/html/html/search/classes_4.js +10 -10
  177. package/SVF-doxygen/html/html/search/classes_5.js +28 -28
  178. package/SVF-doxygen/html/html/search/classes_6.js +98 -98
  179. package/SVF-doxygen/html/html/search/classes_7.js +33 -33
  180. package/SVF-doxygen/html/html/search/classes_8.js +56 -56
  181. package/SVF-doxygen/html/html/search/classes_9.js +1 -1
  182. package/SVF-doxygen/html/html/search/classes_a.js +12 -12
  183. package/SVF-doxygen/html/html/search/classes_b.js +29 -29
  184. package/SVF-doxygen/html/html/search/classes_c.js +6 -6
  185. package/SVF-doxygen/html/html/search/classes_d.js +19 -19
  186. package/SVF-doxygen/html/html/search/classes_e.js +36 -36
  187. package/SVF-doxygen/html/html/search/classes_f.js +25 -25
  188. package/SVF-doxygen/html/html/search/defines_0.js +3 -3
  189. package/SVF-doxygen/html/html/search/defines_1.js +2 -2
  190. package/SVF-doxygen/html/html/search/defines_2.js +30 -30
  191. package/SVF-doxygen/html/html/search/defines_3.js +20 -20
  192. package/SVF-doxygen/html/html/search/defines_4.js +3 -3
  193. package/SVF-doxygen/html/html/search/defines_5.js +4 -4
  194. package/SVF-doxygen/html/html/search/defines_6.js +2 -2
  195. package/SVF-doxygen/html/html/search/defines_7.js +5 -5
  196. package/SVF-doxygen/html/html/search/defines_8.js +13 -13
  197. package/SVF-doxygen/html/html/search/defines_9.js +9 -9
  198. package/SVF-doxygen/html/html/search/defines_a.js +2 -2
  199. package/SVF-doxygen/html/html/search/defines_b.js +1 -2
  200. package/SVF-doxygen/html/html/search/defines_c.js +2 -2
  201. package/SVF-doxygen/html/html/search/defines_d.js +2 -6
  202. package/SVF-doxygen/html/html/search/defines_e.js +6 -3
  203. package/SVF-doxygen/html/html/search/defines_f.html +6 -2
  204. package/SVF-doxygen/html/html/search/defines_f.js +3 -26
  205. package/SVF-doxygen/html/html/search/enums_0.js +3 -3
  206. package/SVF-doxygen/html/html/search/enums_1.js +2 -1
  207. package/SVF-doxygen/html/html/search/enums_10.js +1 -1
  208. package/SVF-doxygen/html/html/search/enums_11.js +1 -1
  209. package/SVF-doxygen/html/html/search/enums_2.js +8 -8
  210. package/SVF-doxygen/html/html/search/enums_3.js +1 -1
  211. package/SVF-doxygen/html/html/search/enums_4.js +4 -4
  212. package/SVF-doxygen/html/html/search/enums_5.js +1 -1
  213. package/SVF-doxygen/html/html/search/enums_6.js +2 -2
  214. package/SVF-doxygen/html/html/search/enums_7.js +2 -2
  215. package/SVF-doxygen/html/html/search/enums_8.js +4 -4
  216. package/SVF-doxygen/html/html/search/enums_9.js +1 -1
  217. package/SVF-doxygen/html/html/search/enums_a.js +2 -2
  218. package/SVF-doxygen/html/html/search/enums_b.js +7 -7
  219. package/SVF-doxygen/html/html/search/enums_c.js +1 -1
  220. package/SVF-doxygen/html/html/search/enums_d.js +4 -4
  221. package/SVF-doxygen/html/html/search/enums_e.js +2 -2
  222. package/SVF-doxygen/html/html/search/enums_f.js +4 -4
  223. package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
  224. package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -13
  225. package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
  226. package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
  227. package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
  228. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  229. package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
  230. package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
  231. package/SVF-doxygen/html/html/search/enumvalues_2.js +40 -40
  232. package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
  233. package/SVF-doxygen/html/html/search/enumvalues_4.js +34 -34
  234. package/SVF-doxygen/html/html/search/enumvalues_5.js +48 -48
  235. package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
  236. package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
  237. package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
  238. package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
  239. package/SVF-doxygen/html/html/search/enumvalues_a.js +17 -17
  240. package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
  241. package/SVF-doxygen/html/html/search/enumvalues_c.js +6 -6
  242. package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -17
  243. package/SVF-doxygen/html/html/search/enumvalues_e.js +11 -11
  244. package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
  245. package/SVF-doxygen/html/html/search/files_0.js +13 -13
  246. package/SVF-doxygen/html/html/search/files_1.js +7 -7
  247. package/SVF-doxygen/html/html/search/files_10.js +8 -8
  248. package/SVF-doxygen/html/html/search/files_11.js +8 -8
  249. package/SVF-doxygen/html/html/search/files_12.js +2 -2
  250. package/SVF-doxygen/html/html/search/files_2.js +49 -50
  251. package/SVF-doxygen/html/html/search/files_3.js +14 -14
  252. package/SVF-doxygen/html/html/search/files_4.js +4 -4
  253. package/SVF-doxygen/html/html/search/files_5.js +13 -13
  254. package/SVF-doxygen/html/html/search/files_6.js +9 -9
  255. package/SVF-doxygen/html/html/search/files_7.js +14 -14
  256. package/SVF-doxygen/html/html/search/files_8.js +13 -13
  257. package/SVF-doxygen/html/html/search/files_9.js +18 -18
  258. package/SVF-doxygen/html/html/search/files_a.js +3 -3
  259. package/SVF-doxygen/html/html/search/files_b.js +2 -2
  260. package/SVF-doxygen/html/html/search/files_c.js +20 -19
  261. package/SVF-doxygen/html/html/search/files_d.js +4 -4
  262. package/SVF-doxygen/html/html/search/files_e.js +62 -62
  263. package/SVF-doxygen/html/html/search/files_f.js +8 -8
  264. package/SVF-doxygen/html/html/search/functions_0.js +351 -351
  265. package/SVF-doxygen/html/html/search/functions_1.js +81 -80
  266. package/SVF-doxygen/html/html/search/functions_10.js +121 -121
  267. package/SVF-doxygen/html/html/search/functions_11.js +281 -281
  268. package/SVF-doxygen/html/html/search/functions_12.js +55 -55
  269. package/SVF-doxygen/html/html/search/functions_13.js +38 -38
  270. package/SVF-doxygen/html/html/search/functions_14.js +71 -71
  271. package/SVF-doxygen/html/html/search/functions_15.js +29 -29
  272. package/SVF-doxygen/html/html/search/functions_16.js +2 -2
  273. package/SVF-doxygen/html/html/search/functions_17.js +169 -169
  274. package/SVF-doxygen/html/html/search/functions_2.js +251 -251
  275. package/SVF-doxygen/html/html/search/functions_3.js +71 -71
  276. package/SVF-doxygen/html/html/search/functions_4.js +55 -55
  277. package/SVF-doxygen/html/html/search/functions_5.js +55 -55
  278. package/SVF-doxygen/html/html/search/functions_6.js +832 -832
  279. package/SVF-doxygen/html/html/search/functions_7.js +144 -144
  280. package/SVF-doxygen/html/html/search/functions_8.js +417 -417
  281. package/SVF-doxygen/html/html/search/functions_9.js +29 -29
  282. package/SVF-doxygen/html/html/search/functions_a.js +2 -2
  283. package/SVF-doxygen/html/html/search/functions_b.js +23 -23
  284. package/SVF-doxygen/html/html/search/functions_c.js +75 -75
  285. package/SVF-doxygen/html/html/search/functions_d.js +35 -35
  286. package/SVF-doxygen/html/html/search/functions_e.js +56 -56
  287. package/SVF-doxygen/html/html/search/functions_f.js +143 -143
  288. package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
  289. package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
  290. package/SVF-doxygen/html/html/search/related_0.js +2 -2
  291. package/SVF-doxygen/html/html/search/related_1.js +1 -1
  292. package/SVF-doxygen/html/html/search/related_2.js +2 -2
  293. package/SVF-doxygen/html/html/search/related_3.js +2 -2
  294. package/SVF-doxygen/html/html/search/related_4.js +2 -2
  295. package/SVF-doxygen/html/html/search/related_5.js +1 -1
  296. package/SVF-doxygen/html/html/search/related_6.js +2 -2
  297. package/SVF-doxygen/html/html/search/related_7.js +4 -4
  298. package/SVF-doxygen/html/html/search/related_8.js +2 -2
  299. package/SVF-doxygen/html/html/search/related_9.js +4 -4
  300. package/SVF-doxygen/html/html/search/related_a.js +19 -19
  301. package/SVF-doxygen/html/html/search/related_b.js +4 -4
  302. package/SVF-doxygen/html/html/search/related_c.js +1 -1
  303. package/SVF-doxygen/html/html/search/related_d.js +11 -11
  304. package/SVF-doxygen/html/html/search/related_e.js +2 -2
  305. package/SVF-doxygen/html/html/search/related_f.js +2 -2
  306. package/SVF-doxygen/html/html/search/searchdata.js +1 -1
  307. package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
  308. package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
  309. package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
  310. package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
  311. package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
  312. package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
  313. package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
  314. package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
  315. package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
  316. package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
  317. package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
  318. package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
  319. package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
  320. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  321. package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
  322. package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
  323. package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
  324. package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
  325. package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
  326. package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
  327. package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
  328. package/SVF-doxygen/html/html/search/variables_0.js +147 -146
  329. package/SVF-doxygen/html/html/search/variables_1.js +74 -74
  330. package/SVF-doxygen/html/html/search/variables_10.js +97 -97
  331. package/SVF-doxygen/html/html/search/variables_11.js +46 -46
  332. package/SVF-doxygen/html/html/search/variables_12.js +93 -93
  333. package/SVF-doxygen/html/html/search/variables_13.js +77 -77
  334. package/SVF-doxygen/html/html/search/variables_14.js +14 -14
  335. package/SVF-doxygen/html/html/search/variables_15.js +48 -48
  336. package/SVF-doxygen/html/html/search/variables_16.js +9 -9
  337. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  338. package/SVF-doxygen/html/html/search/variables_18.js +2 -2
  339. package/SVF-doxygen/html/html/search/variables_2.js +35 -35
  340. package/SVF-doxygen/html/html/search/variables_3.js +148 -148
  341. package/SVF-doxygen/html/html/search/variables_4.js +56 -56
  342. package/SVF-doxygen/html/html/search/variables_5.js +40 -40
  343. package/SVF-doxygen/html/html/search/variables_6.js +67 -67
  344. package/SVF-doxygen/html/html/search/variables_7.js +33 -33
  345. package/SVF-doxygen/html/html/search/variables_8.js +7 -7
  346. package/SVF-doxygen/html/html/search/variables_9.js +77 -77
  347. package/SVF-doxygen/html/html/search/variables_a.js +4 -4
  348. package/SVF-doxygen/html/html/search/variables_b.js +10 -10
  349. package/SVF-doxygen/html/html/search/variables_c.js +45 -45
  350. package/SVF-doxygen/html/html/search/variables_d.js +56 -56
  351. package/SVF-doxygen/html/html/search/variables_e.js +123 -123
  352. package/SVF-doxygen/html/html/search/variables_f.js +33 -33
  353. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +25 -25
  354. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1SymbolVectorHash.html +4 -4
  355. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1BoundedZ3Expr_01_4.html +5 -5
  356. package/package.json +1 -1
  357. package/svf/include/AbstractExecution/BoundedZ3Expr.h +8 -12
  358. package/svf/include/CFL/CFGNormalizer.h +11 -11
  359. package/svf/include/CFL/{CFLGrammar.h → CFGrammar.h} +5 -5
  360. package/svf/include/CFL/CFLAlias.h +2 -2
  361. package/svf/include/CFL/CFLBase.h +2 -2
  362. package/svf/include/CFL/CFLGramGraphChecker.h +1 -1
  363. package/svf/include/CFL/CFLGraphBuilder.h +30 -81
  364. package/svf/include/CFL/CFLSolver.h +8 -8
  365. package/svf/include/CFL/GrammarBuilder.h +1 -1
  366. package/svf/include/Graphs/CFLGraph.h +3 -3
  367. package/svf/lib/CFL/CFGNormalizer.cpp +11 -11
  368. package/svf/lib/CFL/{CFLGrammar.cpp → CFGrammar.cpp} +7 -7
  369. package/svf/lib/CFL/CFLBase.cpp +5 -11
  370. package/svf/lib/CFL/CFLGraphBuilder.cpp +125 -74
  371. package/svf/lib/CFL/CFLVF.cpp +2 -2
  372. /package/svf/include/CFL/{CFLGrammar.txt → grammar/PAGGrammar.txt} +0 -0
  373. /package/svf/include/CFL/{PEGGrammar.txt → grammar/PEGGrammar.txt} +0 -0
  374. /package/svf/include/CFL/{VFG.txt → grammar/VFGGrammar.txt} +0 -0
@@ -34,11 +34,11 @@
34
34
  namespace SVF
35
35
  {
36
36
  /// Add attribute to kindToAttribute Map
37
- void CFLGraphBuilder::addAttribute(CFLGrammar::Kind kind, CFLGrammar::Attribute attribute)
37
+ void CFLGraphBuilder::addAttribute(CFGrammar::Kind kind, CFGrammar::Attribute attribute)
38
38
  {
39
39
  if (kindToAttrsMap.find(kind) == kindToAttrsMap.end())
40
40
  {
41
- Set<CFLGrammar::Attribute> attrs{attribute};
41
+ Set<CFGrammar::Attribute> attrs{attribute};
42
42
  kindToAttrsMap.insert(make_pair(kind, attrs));
43
43
  }
44
44
  else
@@ -95,8 +95,51 @@ CFLNode* CFLGraphBuilder::addGNode(u32_t NodeID)
95
95
  }
96
96
 
97
97
 
98
+ /// Method to build a bidirectional CFL graph by copying nodes and edges
99
+ /// from any graph inherited from GenericGraph
100
+ template<class N, class E>
101
+ CFLGraph* CFLGraphBuilder::build(GenericGraph<N,E>* graph, GrammarBase *grammar, BuildDirection direction)
102
+ {
103
+ cflGraph = new CFLGraph(grammar->getStartKind());
104
+ // buildlabelToKindMap(grammar);
105
+ for(auto it = graph->begin(); it!= graph->end(); it++)
106
+ {
107
+ CFLNode* node = new CFLNode((*it).first);
108
+ cflGraph->addCFLNode((*it).first, node);
109
+ }
110
+ for(auto it = graph->begin(); it!= graph->end(); it++)
111
+ {
112
+ N* node = (*it).second;
113
+ for(E* edge : node->getOutEdges())
114
+ {
115
+ CFGrammar::Kind edgeLabel = edge->getEdgeKind();
116
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
117
+ if (direction == BuildDirection::bidirection)
118
+ {
119
+ std::string label = grammar->kindToStr(edge);
120
+ label.append("bar");
121
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), grammar->strToKind(label));
122
+ }
123
+ }
124
+ }
125
+ return cflGraph;
126
+ }
127
+
128
+ CFLGraph* CFLGraphBuilder::build(std::string fileName, GrammarBase *grammar, BuildDirection direction)
129
+ {
130
+ bool isDot = (fileName.rfind(".dot") == fileName.length() - std::string(".dot").length());
131
+ if (isDot)
132
+ return buildFromDot(fileName, grammar, direction);
133
+
134
+ bool isJson = (fileName.rfind(".json") == fileName.length() - std::string(".json").length());
135
+ if (isJson)
136
+ return buildFromJson(fileName, grammar, direction);
137
+
138
+ return buildFromText(fileName, grammar, direction);
139
+ }
140
+
98
141
  //// Build graph from text file
99
- CFLGraph* CFLGraphBuilder::buildFromTextFile(std::string fileName, GrammarBase *grammar)
142
+ CFLGraph* CFLGraphBuilder::buildFromText(std::string fileName, GrammarBase *grammar, BuildDirection direction)
100
143
  {
101
144
  buildlabelToKindMap(grammar);
102
145
  cflGraph = new CFLGraph(grammar->getStartKind());
@@ -150,7 +193,7 @@ CFLGraph* CFLGraphBuilder::buildFromTextFile(std::string fileName, GrammarBase *
150
193
  return cflGraph;
151
194
  }
152
195
 
153
- CFLGraph * CFLGraphBuilder::buildFromDot(std::string fileName, GrammarBase *grammar)
196
+ CFLGraph * CFLGraphBuilder::buildFromDot(std::string fileName, GrammarBase *grammar, BuildDirection direction)
154
197
  {
155
198
  buildlabelToKindMap(grammar);
156
199
  cflGraph = new CFLGraph(grammar->getStartKind());
@@ -197,6 +240,14 @@ CFLGraph * CFLGraphBuilder::buildFromDot(std::string fileName, GrammarBase *gram
197
240
  return cflGraph;
198
241
  }
199
242
 
243
+ //// Build graph from json file
244
+ CFLGraph* CFLGraphBuilder::buildFromJson(std::string fileName, GrammarBase *grammar, BuildDirection direction)
245
+ {
246
+ cflGraph = new CFLGraph(grammar->getStartKind());
247
+ return cflGraph;
248
+ }
249
+
250
+
200
251
  CFLGraph* AliasCFLGraphBuilder::buildBigraph(ConstraintGraph *graph, Kind startKind, GrammarBase *grammar)
201
252
  {
202
253
  cflGraph = new CFLGraph(startKind);
@@ -212,27 +263,27 @@ CFLGraph* AliasCFLGraphBuilder::buildBigraph(ConstraintGraph *graph, Kind startK
212
263
  ConstraintNode* node = (*it).second;
213
264
  for(ConstraintEdge* edge : node->getOutEdges())
214
265
  {
215
- CFLGrammar::Kind edgeLabel = edge->getEdgeKind();
266
+ CFGrammar::Kind edgeLabel = edge->getEdgeKind();
216
267
  // Need to get the offset from the Const Edge
217
268
  // The offset present edge is only from Normal Gep CG at moment
218
269
  if(NormalGepCGEdge::classof(edge))
219
270
  {
220
271
  NormalGepCGEdge *nGepEdge = SVFUtil::dyn_cast<NormalGepCGEdge>(edge);
221
- CFLGrammar::Attribute attr = nGepEdge->getConstantFieldIdx();
272
+ CFGrammar::Attribute attr = nGepEdge->getConstantFieldIdx();
222
273
  addAttribute(edgeLabel, attr);
223
- edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
274
+ edgeLabel = CFGrammar::getAttributedKind(attr, edgeLabel);
224
275
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
225
- std::string key = kindToLabelMap[edge->getEdgeKind()];
226
- key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
227
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, labelToKindMap[key]));
228
- addAttribute(labelToKindMap[key], attr);
276
+ std::string label = kindToLabelMap[edge->getEdgeKind()];
277
+ label.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
278
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFGrammar::getAttributedKind(attr, labelToKindMap[label]));
279
+ addAttribute(labelToKindMap[label], attr);
229
280
  }
230
281
  else
231
282
  {
232
283
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
233
- std::string key = kindToLabelMap[edge->getEdgeKind()];
234
- key.append("bar");
235
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[key]);
284
+ std::string label = kindToLabelMap[edge->getEdgeKind()];
285
+ label.append("bar");
286
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[label]);
236
287
  }
237
288
  }
238
289
  }
@@ -280,15 +331,15 @@ CFLGraph* AliasCFLGraphBuilder::buildBiPEGgraph(ConstraintGraph *graph, Kind sta
280
331
  cflGraph->addCFLNode(refId, CFLDerefNode);
281
332
  /// Add Addr Edge
282
333
  cflGraph->addCFLEdge(CFLDerefNode, cflGraph->getGNode(edge->getDstID()), ConstraintEdge::Addr);
283
- std::string key = kindToLabelMap[ConstraintEdge::Addr];
284
- key.append("bar");
285
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), CFLDerefNode, labelToKindMap[key]);
334
+ std::string label = kindToLabelMap[ConstraintEdge::Addr];
335
+ label.append("bar");
336
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), CFLDerefNode, labelToKindMap[label]);
286
337
  }
287
338
  /// Add Copy Edge
288
339
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(CFLDerefNode->getId()), ConstraintEdge::Copy);
289
- std::string key = kindToLabelMap[ConstraintEdge::Copy];
290
- key.append("bar");
291
- cflGraph->addCFLEdge(cflGraph->getGNode(CFLDerefNode->getId()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[key]);
340
+ std::string label = kindToLabelMap[ConstraintEdge::Copy];
341
+ label.append("bar");
342
+ cflGraph->addCFLEdge(cflGraph->getGNode(CFLDerefNode->getId()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[label]);
292
343
  }
293
344
  /// Process Load
294
345
  else if ( edge->getEdgeKind() == ConstraintEdge::Load)
@@ -312,15 +363,15 @@ CFLGraph* AliasCFLGraphBuilder::buildBiPEGgraph(ConstraintGraph *graph, Kind sta
312
363
  cflGraph->addCFLNode(refId, CFLDerefNode);
313
364
  /// Add Addr Edge
314
365
  cflGraph->addCFLEdge(CFLDerefNode, cflGraph->getGNode(edge->getSrcID()), ConstraintEdge::Addr);
315
- std::string key = kindToLabelMap[ConstraintEdge::Addr];
316
- key.append("bar");
317
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), CFLDerefNode, labelToKindMap[key]);
366
+ std::string label = kindToLabelMap[ConstraintEdge::Addr];
367
+ label.append("bar");
368
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), CFLDerefNode, labelToKindMap[label]);
318
369
  }
319
370
  /// Add Copy Edge
320
371
  cflGraph->addCFLEdge(cflGraph->getGNode(CFLDerefNode->getId()), cflGraph->getGNode(edge->getDstID()), ConstraintEdge::Copy);
321
- std::string key = kindToLabelMap[ConstraintEdge::Copy];
322
- key.append("bar");
323
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(CFLDerefNode->getId()), labelToKindMap[key]);
372
+ std::string label = kindToLabelMap[ConstraintEdge::Copy];
373
+ label.append("bar");
374
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(CFLDerefNode->getId()), labelToKindMap[label]);
324
375
  }
325
376
  else if ( edge->getEdgeKind() == ConstraintEdge::VariantGep)
326
377
  {
@@ -332,27 +383,27 @@ CFLGraph* AliasCFLGraphBuilder::buildBiPEGgraph(ConstraintGraph *graph, Kind sta
332
383
  }
333
384
  else
334
385
  {
335
- CFLGrammar::Kind edgeLabel = edge->getEdgeKind();
386
+ CFGrammar::Kind edgeLabel = edge->getEdgeKind();
336
387
  // Need to get the offset from the Const Edge
337
388
  // The offset present edge is only from Normal Gep CG at moment
338
389
  if(NormalGepCGEdge::classof(edge))
339
390
  {
340
391
  NormalGepCGEdge *nGepEdge = SVFUtil::dyn_cast<NormalGepCGEdge>(edge);
341
- CFLGrammar::Attribute attr = nGepEdge->getConstantFieldIdx();
392
+ CFGrammar::Attribute attr = nGepEdge->getConstantFieldIdx();
342
393
  addAttribute(edgeLabel, attr);
343
- edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
394
+ edgeLabel = CFGrammar::getAttributedKind(attr, edgeLabel);
344
395
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
345
- std::string key = kindToLabelMap[edge->getEdgeKind()];
346
- key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
347
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, labelToKindMap[key]));
348
- addAttribute(labelToKindMap[key], attr);
396
+ std::string label = kindToLabelMap[edge->getEdgeKind()];
397
+ label.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
398
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFGrammar::getAttributedKind(attr, labelToKindMap[label]));
399
+ addAttribute(labelToKindMap[label], attr);
349
400
  }
350
401
  else
351
402
  {
352
403
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
353
- std::string key = kindToLabelMap[edge->getEdgeKind()];
354
- key.append("bar");
355
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[key]);
404
+ std::string label = kindToLabelMap[edge->getEdgeKind()];
405
+ label.append("bar");
406
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[label]);
356
407
  }
357
408
  }
358
409
  }
@@ -379,22 +430,22 @@ void AliasCFLGraphBuilder::AliasCFLGraphBuilder::connectVGep(CFLGraph *cflGraph,
379
430
  return;
380
431
  }
381
432
 
382
- void AliasCFLGraphBuilder::addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Kind label)
433
+ void AliasCFLGraphBuilder::addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFGrammar::Kind kind)
383
434
  {
384
- cflGraph->addCFLEdge(cflGraph->getGNode(src->getId()), cflGraph->getGNode(dst->getId()), label);
385
- std::string key = kindToLabelMap[label];
386
- key.append("bar");
387
- cflGraph->addCFLEdge(cflGraph->getGNode(dst->getId()), cflGraph->getGNode(src->getId()), labelToKindMap[key]);
435
+ cflGraph->addCFLEdge(cflGraph->getGNode(src->getId()), cflGraph->getGNode(dst->getId()), kind);
436
+ std::string label = kindToLabelMap[kind];
437
+ label.append("bar");
438
+ cflGraph->addCFLEdge(cflGraph->getGNode(dst->getId()), cflGraph->getGNode(src->getId()), labelToKindMap[label]);
388
439
  return;
389
440
  }
390
441
 
391
- void AliasCFLGraphBuilder::addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Attribute attri)
442
+ void AliasCFLGraphBuilder::addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFGrammar::Attribute attri)
392
443
  {
393
- CFLEdge::GEdgeFlag edgeLabel = CFLGrammar::getAttributedKind(attri, ConstraintEdge::NormalGep);
444
+ CFLEdge::GEdgeFlag edgeLabel = CFGrammar::getAttributedKind(attri, ConstraintEdge::NormalGep);
394
445
  cflGraph->addCFLEdge(cflGraph->getGNode(src->getId()), cflGraph->getGNode(dst->getId()), edgeLabel);
395
- std::string key = kindToLabelMap[ConstraintEdge::NormalGep];
396
- key.append("bar");
397
- cflGraph->addCFLEdge(cflGraph->getGNode(dst->getId()), cflGraph->getGNode(src->getId()), CFLGrammar::getAttributedKind(attri, labelToKindMap[key]));
446
+ std::string label = kindToLabelMap[ConstraintEdge::NormalGep];
447
+ label.append("bar");
448
+ cflGraph->addCFLEdge(cflGraph->getGNode(dst->getId()), cflGraph->getGNode(src->getId()), CFGrammar::getAttributedKind(attri, labelToKindMap[label]));
398
449
  return;
399
450
  }
400
451
 
@@ -413,72 +464,72 @@ CFLGraph* VFCFLGraphBuilder::buildBigraph(SVFG *graph, Kind startKind, GrammarBa
413
464
  VFGNode* node = (*it).second;
414
465
  for(VFGEdge* edge : node->getOutEdges())
415
466
  {
416
- CFLGrammar::Kind edgeLabel;
467
+ CFGrammar::Kind edgeLabel;
417
468
  // Get 'a' edge : IntraDirectVF || IntraIndirectVF
418
469
  if (edge->getEdgeKind() == VFGEdge::IntraDirectVF || edge->getEdgeKind() == VFGEdge::IntraIndirectVF || edge->getEdgeKind() == VFGEdge::TheadMHPIndirectVF )
419
470
  {
420
471
  edgeLabel = 0;
421
472
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
422
473
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
423
- std::string key = kindToLabelMap[edge->getEdgeKind()];
424
- key.append("bar");
425
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[key]);
474
+ std::string label = kindToLabelMap[edge->getEdgeKind()];
475
+ label.append("bar");
476
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), labelToKindMap[label]);
426
477
  }
427
478
  // Get 'call' edge : CallDirVF || CallIndVF
428
479
  else if ( edge->getEdgeKind() == VFGEdge::CallDirVF )
429
480
  {
430
481
  edgeLabel = 1;
431
482
  CallDirSVFGEdge *attributedEdge = SVFUtil::dyn_cast<CallDirSVFGEdge>(edge);
432
- CFLGrammar::Attribute attr = attributedEdge->getCallSiteId();
483
+ CFGrammar::Attribute attr = attributedEdge->getCallSiteId();
433
484
  addAttribute(edgeLabel, attr);
434
- edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
485
+ edgeLabel = CFGrammar::getAttributedKind(attr, edgeLabel);
435
486
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
436
- std::string key = kindToLabelMap[edgeLabel];
437
- key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
438
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, labelToKindMap[key]));
439
- addAttribute(labelToKindMap[key], attr);
487
+ std::string label = kindToLabelMap[edgeLabel];
488
+ label.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
489
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFGrammar::getAttributedKind(attr, labelToKindMap[label]));
490
+ addAttribute(labelToKindMap[label], attr);
440
491
  }
441
492
  // Get 'call' edge : CallIndVF
442
493
  else if ( edge->getEdgeKind() == VFGEdge::CallIndVF )
443
494
  {
444
495
  edgeLabel = 1;
445
496
  CallIndSVFGEdge *attributedEdge = SVFUtil::dyn_cast<CallIndSVFGEdge>(edge);
446
- CFLGrammar::Attribute attr = attributedEdge->getCallSiteId();
497
+ CFGrammar::Attribute attr = attributedEdge->getCallSiteId();
447
498
  addAttribute(edgeLabel, attr);
448
- edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
499
+ edgeLabel = CFGrammar::getAttributedKind(attr, edgeLabel);
449
500
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
450
- std::string key = kindToLabelMap[edgeLabel];
451
- key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
452
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, labelToKindMap[key]));
453
- addAttribute(labelToKindMap[key], attr);
501
+ std::string label = kindToLabelMap[edgeLabel];
502
+ label.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
503
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFGrammar::getAttributedKind(attr, labelToKindMap[label]));
504
+ addAttribute(labelToKindMap[label], attr);
454
505
  }
455
506
  // Get 'ret' edge : RetDirVF
456
507
  else if ( edge->getEdgeKind() == VFGEdge::RetDirVF )
457
508
  {
458
509
  edgeLabel = 2;
459
510
  RetDirSVFGEdge *attributedEdge = SVFUtil::dyn_cast<RetDirSVFGEdge>(edge);
460
- CFLGrammar::Attribute attr = attributedEdge->getCallSiteId();
511
+ CFGrammar::Attribute attr = attributedEdge->getCallSiteId();
461
512
  addAttribute(edgeLabel, attr);
462
- edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
513
+ edgeLabel = CFGrammar::getAttributedKind(attr, edgeLabel);
463
514
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
464
- std::string key = kindToLabelMap[edgeLabel];
465
- key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
466
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, labelToKindMap[key]));
467
- addAttribute(labelToKindMap[key], attr);
515
+ std::string label = kindToLabelMap[edgeLabel];
516
+ label.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
517
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFGrammar::getAttributedKind(attr, labelToKindMap[label]));
518
+ addAttribute(labelToKindMap[label], attr);
468
519
  }
469
520
  // Get 'ret' edge : RetIndVF
470
521
  else if ( edge->getEdgeKind() == VFGEdge::RetIndVF )
471
522
  {
472
523
  edgeLabel = 2;
473
524
  RetIndSVFGEdge *attributedEdge = SVFUtil::dyn_cast<RetIndSVFGEdge>(edge);
474
- CFLGrammar::Attribute attr = attributedEdge->getCallSiteId();
525
+ CFGrammar::Attribute attr = attributedEdge->getCallSiteId();
475
526
  addAttribute(edgeLabel, attr);
476
- edgeLabel = CFLGrammar::getAttributedKind(attr, edgeLabel);
527
+ edgeLabel = CFGrammar::getAttributedKind(attr, edgeLabel);
477
528
  cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
478
- std::string key = kindToLabelMap[edgeLabel];
479
- key.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
480
- cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFLGrammar::getAttributedKind(attr, labelToKindMap[key]));
481
- addAttribute(labelToKindMap[key], attr);
529
+ std::string label = kindToLabelMap[edgeLabel];
530
+ label.append("bar"); // for example Gep_i should be Gepbar_i, not Gep_ibar
531
+ cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), CFGrammar::getAttributedKind(attr, labelToKindMap[label]));
532
+ addAttribute(labelToKindMap[label], attr);
482
533
  }
483
534
  }
484
535
  }
@@ -46,7 +46,7 @@ void CFLVF::buildCFLGraph()
46
46
  graph = cflGraphBuilder.buildBigraph(svfg, grammarBase->getStartKind(), grammarBase);
47
47
  }
48
48
  else
49
- graph = cflGraphBuilder.buildFromDot(Options::CFLGraph(), grammarBase);
49
+ graph = cflGraphBuilder.build(Options::CFLGraph(), grammarBase);
50
50
 
51
51
  // Check CFL Graph and Grammar are accordance with grammar
52
52
  CFLGramGraphChecker cflChecker = CFLGramGraphChecker();
@@ -75,7 +75,7 @@ void CFLVF::checkParameter()
75
75
  {
76
76
  // Check for valid grammar file before parsing other options
77
77
  std::string filename = Options::GrammarFilename();
78
- bool vfgfile = (filename.rfind("VFG.txt") == filename.length() - std::string("VFG.txt").length());
78
+ bool vfgfile = (filename.rfind("VFGGrammar.txt") == filename.length() - std::string("VFGGrammar.txt").length());
79
79
  if (!Options::Customized() && !vfgfile)
80
80
  {
81
81
  SVFUtil::errs() << "Invalid VFG grammar file: " << Options::GrammarFilename() << "\n"