svf-tools 1.0.289 → 1.0.293

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 (275) hide show
  1. package/README.md +1 -0
  2. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +2 -2
  5. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
  7. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
  8. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +5 -5
  10. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +3 -3
  11. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +45 -29
  12. package/SVF-doxygen/html/html/Andersen_8h_source.html +50 -50
  13. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +2 -2
  14. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +9 -9
  15. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  19. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  20. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
  24. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  25. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +22 -22
  28. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +52 -32
  29. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +58 -55
  30. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +1 -1
  31. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  32. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  33. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  34. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +64 -11
  38. package/SVF-doxygen/html/html/NodeIDAllocator_8h.html +5 -1
  39. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +52 -15
  40. package/SVF-doxygen/html/html/PAG_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  42. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
  43. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +34 -33
  46. package/SVF-doxygen/html/html/PointsTo_8h_source.html +32 -32
  47. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -12
  48. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +33 -35
  49. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +31 -36
  51. package/SVF-doxygen/html/html/SVFG_8h_source.html +19 -19
  52. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +15 -7
  53. package/SVF-doxygen/html/html/SVFUtil_8h.html +3 -0
  54. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +10 -8
  55. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
  56. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  57. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  60. package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -11
  61. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +51 -43
  63. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +34 -33
  64. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  65. package/SVF-doxygen/html/html/annotated.html +2 -1
  66. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  67. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +1 -1
  68. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +3 -3
  69. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +213 -212
  70. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +124 -72
  71. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +223 -222
  73. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +36 -34
  74. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +232 -231
  75. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +21 -19
  76. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +220 -219
  77. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +38 -36
  78. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +221 -220
  79. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +11 -9
  80. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +232 -231
  81. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -4
  82. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +220 -219
  84. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +21 -19
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType-members.html +227 -226
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +26 -24
  87. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +2 -3
  88. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
  89. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -4
  91. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
  92. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  93. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  94. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -4
  95. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +2 -2
  96. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  97. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +1 -1
  98. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +3 -3
  99. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  101. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  102. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  103. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +110 -107
  104. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +12 -4
  105. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +2 -2
  106. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
  107. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +109 -106
  108. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +286 -157
  109. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +30 -30
  110. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +121 -118
  111. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +36 -28
  112. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  113. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
  114. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
  115. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +3 -3
  118. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  122. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
  123. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +3 -3
  126. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  130. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
  131. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  132. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator-members.html +11 -10
  133. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +74 -34
  134. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer-members.html +109 -0
  135. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1188 -0
  136. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -4
  139. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  140. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
  141. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +77 -66
  142. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +32 -26
  143. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice-members.html +36 -37
  144. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +121 -153
  145. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  148. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +49 -49
  149. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  150. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
  151. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +6 -6
  153. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +8 -9
  156. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +3 -3
  159. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  161. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  162. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
  163. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +132 -129
  169. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +171 -116
  170. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +37 -37
  171. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +5 -5
  172. package/SVF-doxygen/html/html/classes.html +62 -62
  173. package/SVF-doxygen/html/html/functions_b.html +10 -5
  174. package/SVF-doxygen/html/html/functions_c.html +36 -22
  175. package/SVF-doxygen/html/html/functions_d.html +12 -0
  176. package/SVF-doxygen/html/html/functions_e.html +9 -3
  177. package/SVF-doxygen/html/html/functions_f.html +21 -18
  178. package/SVF-doxygen/html/html/functions_func_c.html +19 -10
  179. package/SVF-doxygen/html/html/functions_func_d.html +3 -0
  180. package/SVF-doxygen/html/html/functions_func_e.html +3 -0
  181. package/SVF-doxygen/html/html/functions_func_g.html +16 -10
  182. package/SVF-doxygen/html/html/functions_func_p.html +6 -2
  183. package/SVF-doxygen/html/html/functions_func_r.html +7 -1
  184. package/SVF-doxygen/html/html/functions_func_t.html +3 -0
  185. package/SVF-doxygen/html/html/functions_g.html +15 -9
  186. package/SVF-doxygen/html/html/functions_l.html +10 -7
  187. package/SVF-doxygen/html/html/functions_n.html +21 -3
  188. package/SVF-doxygen/html/html/functions_o.html +16 -8
  189. package/SVF-doxygen/html/html/functions_p.html +23 -17
  190. package/SVF-doxygen/html/html/functions_r.html +13 -6
  191. package/SVF-doxygen/html/html/functions_s.html +9 -9
  192. package/SVF-doxygen/html/html/functions_t.html +18 -9
  193. package/SVF-doxygen/html/html/functions_type_d.html +3 -0
  194. package/SVF-doxygen/html/html/functions_v.html +3 -3
  195. package/SVF-doxygen/html/html/functions_vars_b.html +3 -0
  196. package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
  197. package/SVF-doxygen/html/html/functions_vars_d.html +6 -0
  198. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  199. package/SVF-doxygen/html/html/functions_vars_f.html +3 -0
  200. package/SVF-doxygen/html/html/functions_vars_l.html +3 -0
  201. package/SVF-doxygen/html/html/functions_vars_n.html +18 -0
  202. package/SVF-doxygen/html/html/functions_vars_o.html +6 -0
  203. package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
  204. package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
  205. package/SVF-doxygen/html/html/functions_w.html +8 -6
  206. package/SVF-doxygen/html/html/globals_f.html +3 -3
  207. package/SVF-doxygen/html/html/hierarchy.html +413 -412
  208. package/SVF-doxygen/html/html/menudata.js +2 -0
  209. package/SVF-doxygen/html/html/namespaceSVF.html +8 -8
  210. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +47 -16
  211. package/SVF-doxygen/html/html/namespacemembers_func.html +17 -10
  212. package/SVF-doxygen/html/html/namespacemembers_h.html +76 -0
  213. package/SVF-doxygen/html/html/search/all_10.js +9 -8
  214. package/SVF-doxygen/html/html/search/all_12.js +5 -2
  215. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  216. package/SVF-doxygen/html/html/search/all_14.js +8 -5
  217. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  218. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  219. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  220. package/SVF-doxygen/html/html/search/all_2.js +1 -0
  221. package/SVF-doxygen/html/html/search/all_3.js +4 -0
  222. package/SVF-doxygen/html/html/search/all_4.js +4 -0
  223. package/SVF-doxygen/html/html/search/all_5.js +2 -0
  224. package/SVF-doxygen/html/html/search/all_6.js +4 -3
  225. package/SVF-doxygen/html/html/search/all_7.js +4 -2
  226. package/SVF-doxygen/html/html/search/all_8.js +1 -0
  227. package/SVF-doxygen/html/html/search/all_c.js +4 -3
  228. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  229. package/SVF-doxygen/html/html/search/all_e.js +9 -4
  230. package/SVF-doxygen/html/html/search/all_f.js +4 -2
  231. package/SVF-doxygen/html/html/search/classes_2.js +1 -0
  232. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  233. package/SVF-doxygen/html/html/search/functions_11.js +1 -0
  234. package/SVF-doxygen/html/html/search/functions_2.js +2 -0
  235. package/SVF-doxygen/html/html/search/functions_3.js +1 -0
  236. package/SVF-doxygen/html/html/search/functions_4.js +1 -0
  237. package/SVF-doxygen/html/html/search/functions_6.js +4 -2
  238. package/SVF-doxygen/html/html/search/functions_7.js +1 -0
  239. package/SVF-doxygen/html/html/search/functions_e.js +3 -2
  240. package/SVF-doxygen/html/html/search/functions_f.js +2 -0
  241. package/SVF-doxygen/html/html/search/typedefs_3.js +1 -0
  242. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  243. package/SVF-doxygen/html/html/search/variables_14.js +3 -1
  244. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  245. package/SVF-doxygen/html/html/search/variables_2.js +1 -0
  246. package/SVF-doxygen/html/html/search/variables_3.js +1 -0
  247. package/SVF-doxygen/html/html/search/variables_4.js +2 -0
  248. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  249. package/SVF-doxygen/html/html/search/variables_6.js +1 -0
  250. package/SVF-doxygen/html/html/search/variables_c.js +1 -0
  251. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  252. package/SVF-doxygen/html/html/search/variables_e.js +7 -2
  253. package/SVF-doxygen/html/html/search/variables_f.js +2 -0
  254. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  255. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
  256. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +20 -20
  257. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  258. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
  259. package/include/SABER/ProgSlice.h +0 -3
  260. package/include/Util/NodeIDAllocator.h +94 -0
  261. package/include/Util/SVFUtil.h +3 -0
  262. package/include/WPA/Andersen.h +4 -0
  263. package/include/WPA/FlowSensitive.h +9 -0
  264. package/include/WPA/VersionedFlowSensitive.h +3 -0
  265. package/lib/Graphs/SVFG.cpp +0 -20
  266. package/lib/Graphs/VFG.cpp +18 -0
  267. package/lib/MemoryModel/PointsTo.cpp +76 -19
  268. package/lib/SABER/ProgSlice.cpp +0 -37
  269. package/lib/SABER/SaberAnnotator.cpp +1 -1
  270. package/lib/Util/NodeIDAllocator.cpp +548 -1
  271. package/lib/Util/SVFUtil.cpp +19 -0
  272. package/lib/WPA/Andersen.cpp +34 -0
  273. package/lib/WPA/FlowSensitive.cpp +70 -0
  274. package/lib/WPA/VersionedFlowSensitive.cpp +20 -0
  275. package/package.json +1 -1
@@ -115,6 +115,9 @@ protected:
115
115
  /// Override to do nothing. Instead, we will use propagateVersion when necessary.
116
116
  virtual bool propAlongIndirectEdge(const IndirectSVFGEdge*) override { return false; }
117
117
 
118
+ /// Override since we want to assign different weights based on versioning.
119
+ virtual void cluster(void) override;
120
+
118
121
  private:
119
122
  /// Prelabel the SVFG: set y(o) for stores and c(o) for delta nodes to a new version.
120
123
  void prelabel(void);
@@ -161,26 +161,6 @@ const std::string ThreadMHPIndSVFGEdge::toString() const {
161
161
  return rawstr.str();
162
162
  }
163
163
 
164
- const Value* StmtSVFGNode::getValue() const {
165
- return getPAGEdge()->getValue();
166
- }
167
-
168
- const Value* CmpVFGNode::getValue() const {
169
- return getRes()->getValue();
170
- }
171
-
172
- const Value* BinaryOPVFGNode::getValue() const {
173
- return getRes()->getValue();
174
- }
175
-
176
- const Value* PHIVFGNode::getValue() const {
177
- return getRes()->getValue();
178
- }
179
-
180
- const Value* ArgumentVFGNode::getValue() const {
181
- return param->getValue();
182
- }
183
-
184
164
 
185
165
  FormalOUTSVFGNode::FormalOUTSVFGNode(NodeID id, const MRVer* mrVer, const FunExitBlockNode* funExit): MRSVFGNode(id, FPOUT)
186
166
  {
@@ -891,7 +891,25 @@ const SVFFunction* VFG::isFunEntryVFGNode(const VFGNode* node) const
891
891
  }
892
892
 
893
893
 
894
+ const Value* StmtVFGNode::getValue() const {
895
+ return getPAGEdge()->getValue();
896
+ }
897
+
898
+ const Value* CmpVFGNode::getValue() const {
899
+ return getRes()->getValue();
900
+ }
901
+
902
+ const Value* BinaryOPVFGNode::getValue() const {
903
+ return getRes()->getValue();
904
+ }
905
+
906
+ const Value* PHIVFGNode::getValue() const {
907
+ return getRes()->getValue();
908
+ }
894
909
 
910
+ const Value* ArgumentVFGNode::getValue() const {
911
+ return param->getValue();
912
+ }
895
913
 
896
914
  /*!
897
915
  * GraphTraits specialization
@@ -96,7 +96,10 @@ bool PointsTo::empty(void) const
96
96
  if (type == CBV) return cbv.empty();
97
97
  else if (type == SBV) return sbv.empty();
98
98
  else if (type == BV) return bv.empty();
99
- assert(false && "PointsTo::empty: unknown type");
99
+ else {
100
+ assert(false && "PointsTo::empty: unknown type");
101
+ abort();
102
+ }
100
103
  }
101
104
 
102
105
  /// Returns number of elements.
@@ -105,7 +108,10 @@ u32_t PointsTo::count(void) const
105
108
  if (type == CBV) return cbv.count();
106
109
  else if (type == SBV) return sbv.count();
107
110
  else if (type == BV) return bv.count();
108
- assert(false && "PointsTo::count: unknown type");
111
+ else {
112
+ assert(false && "PointsTo::count: unknown type");
113
+ abort();
114
+ }
109
115
  }
110
116
 
111
117
  void PointsTo::clear(void)
@@ -122,7 +128,10 @@ bool PointsTo::test(u32_t n) const
122
128
  if (type == CBV) return cbv.test(n);
123
129
  else if (type == SBV) return sbv.test(n);
124
130
  else if (type == BV) return bv.test(n);
125
- assert(false && "PointsTo::test: unknown type");
131
+ else {
132
+ assert(false && "PointsTo::test: unknown type");
133
+ abort();
134
+ }
126
135
  }
127
136
 
128
137
  bool PointsTo::test_and_set(u32_t n)
@@ -131,7 +140,10 @@ bool PointsTo::test_and_set(u32_t n)
131
140
  if (type == CBV) return cbv.test_and_set(n);
132
141
  else if (type == SBV) return sbv.test_and_set(n);
133
142
  else if (type == BV) return bv.test_and_set(n);
134
- assert(false && "PointsTo::test_and_set: unknown type");
143
+ else {
144
+ assert(false && "PointsTo::test_and_set: unknown type");
145
+ abort();
146
+ }
135
147
  }
136
148
 
137
149
  void PointsTo::set(u32_t n)
@@ -159,7 +171,10 @@ bool PointsTo::contains(const PointsTo &rhs) const
159
171
  if (type == CBV) return cbv.contains(rhs.cbv);
160
172
  else if (type == SBV) return sbv.contains(rhs.sbv);
161
173
  else if (type == BV) return bv.contains(rhs.bv);
162
- assert(false && "PointsTo::contains: unknown type");
174
+ else {
175
+ assert(false && "PointsTo::contains: unknown type");
176
+ abort();
177
+ }
163
178
  }
164
179
 
165
180
  bool PointsTo::intersects(const PointsTo &rhs) const
@@ -169,7 +184,10 @@ bool PointsTo::intersects(const PointsTo &rhs) const
169
184
  if (type == CBV) return cbv.intersects(rhs.cbv);
170
185
  else if (type == SBV) return sbv.intersects(rhs.sbv);
171
186
  else if (type == BV) return bv.intersects(rhs.bv);
172
- assert(false && "PointsTo::intersects: unknown type");
187
+ else {
188
+ assert(false && "PointsTo::intersects: unknown type");
189
+ abort();
190
+ }
173
191
  }
174
192
 
175
193
  int PointsTo::find_first(void)
@@ -185,7 +203,10 @@ bool PointsTo::operator==(const PointsTo &rhs) const
185
203
  if (type == CBV) return cbv == rhs.cbv;
186
204
  else if (type == SBV) return sbv == rhs.sbv;
187
205
  else if (type == BV) return bv == rhs.bv;
188
- assert(false && "PointsTo::==: unknown type");
206
+ else {
207
+ assert(false && "PointsTo::==: unknown type");
208
+ abort();
209
+ }
189
210
  }
190
211
 
191
212
  bool PointsTo::operator!=(const PointsTo &rhs) const
@@ -203,7 +224,10 @@ bool PointsTo::operator|=(const PointsTo &rhs)
203
224
  if (type == CBV) return cbv |= rhs.cbv;
204
225
  else if (type == SBV) return sbv |= rhs.sbv;
205
226
  else if (type == BV) return bv |= rhs.bv;
206
- assert(false && "PointsTo::|=: unknown type");
227
+ else{
228
+ assert(false && "PointsTo::|=: unknown type");
229
+ abort();
230
+ }
207
231
  }
208
232
 
209
233
  bool PointsTo::operator|=(const NodeBS &rhs)
@@ -226,7 +250,10 @@ bool PointsTo::operator&=(const PointsTo &rhs)
226
250
  if (type == CBV) return cbv &= rhs.cbv;
227
251
  else if (type == SBV) return sbv &= rhs.sbv;
228
252
  else if (type == BV) return bv &= rhs.bv;
229
- assert(false && "PointsTo::&=: unknown type");
253
+ else{
254
+ assert(false && "PointsTo::&=: unknown type");
255
+ abort();
256
+ }
230
257
  }
231
258
 
232
259
  bool PointsTo::operator-=(const PointsTo &rhs)
@@ -236,7 +263,10 @@ bool PointsTo::operator-=(const PointsTo &rhs)
236
263
  if (type == CBV) return cbv.intersectWithComplement(rhs.cbv);
237
264
  else if (type == SBV) return sbv.intersectWithComplement(rhs.sbv);
238
265
  else if (type == BV) return bv.intersectWithComplement(rhs.bv);
239
- assert(false && "PointsTo::-=: unknown type");
266
+ else{
267
+ assert(false && "PointsTo::-=: unknown type");
268
+ abort();
269
+ }
240
270
  }
241
271
 
242
272
  bool PointsTo::intersectWithComplement(const PointsTo &rhs)
@@ -246,7 +276,9 @@ bool PointsTo::intersectWithComplement(const PointsTo &rhs)
246
276
  if (type == CBV) return cbv.intersectWithComplement(rhs.cbv);
247
277
  else if (type == SBV) return sbv.intersectWithComplement(rhs.sbv);
248
278
  else if (type == BV) return bv.intersectWithComplement(rhs.bv);
249
- assert(false && "PointsTo::intersectWithComplement(PT): unknown type");
279
+ else {
280
+ assert(false && "PointsTo::intersectWithComplement(PT): unknown type");
281
+ }
250
282
  }
251
283
 
252
284
  void PointsTo::intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs)
@@ -257,7 +289,10 @@ void PointsTo::intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs)
257
289
  if (type == CBV) cbv.intersectWithComplement(lhs.cbv, rhs.cbv);
258
290
  else if (type == SBV) sbv.intersectWithComplement(lhs.sbv, rhs.sbv);
259
291
  else if (type == BV) bv.intersectWithComplement(lhs.bv, rhs.bv);
260
- else assert(false && "PointsTo::intersectWithComplement(PT, PT): unknown type");
292
+ else {
293
+ assert(false && "PointsTo::intersectWithComplement(PT, PT): unknown type");
294
+ abort();
295
+ }
261
296
  }
262
297
 
263
298
  NodeBS PointsTo::toNodeBS(void) const
@@ -277,7 +312,10 @@ size_t PointsTo::hash(void) const
277
312
  }
278
313
  else if (type == BV) return bv.hash();
279
314
 
280
- assert(false && "PointsTo::hash: unknown type");
315
+ else{
316
+ assert(false && "PointsTo::hash: unknown type");
317
+ abort();
318
+ }
281
319
  }
282
320
 
283
321
  PointsTo::MappingPtr PointsTo::getNodeMapping(void) const
@@ -347,7 +385,11 @@ PointsTo::PointsToIterator::PointsToIterator(const PointsTo *pt, bool end)
347
385
  {
348
386
  new (&bvIt) BitVector::iterator(end ? pt->bv.end() : pt->bv.begin());
349
387
  }
350
- else assert(false && "PointsToIterator::PointsToIterator: unknown type");
388
+ else
389
+ {
390
+ assert(false && "PointsToIterator::PointsToIterator: unknown type");
391
+ abort();
392
+ }
351
393
  }
352
394
 
353
395
  PointsTo::PointsToIterator::PointsToIterator(const PointsToIterator &pt)
@@ -365,7 +407,10 @@ PointsTo::PointsToIterator::PointsToIterator(const PointsToIterator &pt)
365
407
  {
366
408
  new (&bvIt) BitVector::iterator(pt.bvIt);
367
409
  }
368
- else assert(false && "PointsToIterator::PointsToIterator&: unknown type");
410
+ else {
411
+ assert(false && "PointsToIterator::PointsToIterator&: unknown type");
412
+ abort();
413
+ }
369
414
  }
370
415
 
371
416
  PointsTo::PointsToIterator::PointsToIterator(PointsToIterator &&pt)
@@ -383,7 +428,10 @@ PointsTo::PointsToIterator::PointsToIterator(PointsToIterator &&pt)
383
428
  {
384
429
  new (&bvIt) BitVector::iterator(std::move(pt.bvIt));
385
430
  }
386
- else assert(false && "PointsToIterator::PointsToIterator&&: unknown type");
431
+ else {
432
+ assert(false && "PointsToIterator::PointsToIterator&&: unknown type");
433
+ abort();
434
+ }
387
435
  }
388
436
 
389
437
  PointsTo::PointsToIterator &PointsTo::PointsToIterator::operator=(const PointsToIterator &rhs)
@@ -453,7 +501,10 @@ const NodeID PointsTo::PointsToIterator::operator*(void) const
453
501
  if (pt->type == Type::CBV) return pt->getExternalNode(*cbvIt);
454
502
  else if (pt->type == Type::SBV) return pt->getExternalNode(*sbvIt);
455
503
  else if (pt->type == Type::BV) return pt->getExternalNode(*bvIt);
456
- assert(false && "PointsToIterator::*: unknown type");
504
+ else {
505
+ assert(false && "PointsToIterator::*: unknown type");
506
+ abort();
507
+ }
457
508
  }
458
509
 
459
510
  bool PointsTo::PointsToIterator::operator==(const PointsToIterator &rhs) const
@@ -465,7 +516,10 @@ bool PointsTo::PointsToIterator::operator==(const PointsToIterator &rhs) const
465
516
  if (pt->type == Type::CBV) return cbvIt == rhs.cbvIt;
466
517
  else if (pt->type == Type::SBV) return sbvIt == rhs.sbvIt;
467
518
  else if (pt->type == Type::BV) return bvIt == rhs.bvIt;
468
- assert(false && "PointsToIterator::==: unknown type");
519
+ else {
520
+ assert(false && "PointsToIterator::==: unknown type");
521
+ abort();
522
+ }
469
523
  }
470
524
 
471
525
  bool PointsTo::PointsToIterator::operator!=(const PointsToIterator &rhs) const
@@ -481,7 +535,10 @@ bool PointsTo::PointsToIterator::atEnd(void) const
481
535
  if (pt->type == Type::CBV) return cbvIt == pt->cbv.end();
482
536
  else if (pt->type == Type::SBV) return sbvIt == pt->sbv.end();
483
537
  else if (pt->type == Type::BV) return bvIt == pt->bv.end();
484
- assert(false && "PointsToIterator::atEnd: unknown type");
538
+ else {
539
+ assert(false && "PointsToIterator::atEnd: unknown type");
540
+ abort();
541
+ }
485
542
  }
486
543
 
487
544
  PointsTo operator|(const PointsTo &lhs, const PointsTo &rhs)
@@ -147,43 +147,6 @@ const CallBlockNode* ProgSlice::getRetSite(const SVFGEdge* edge) const
147
147
  return getSVFG()->getCallSite(SVFUtil::cast<RetIndSVFGEdge>(edge)->getCallSiteId());
148
148
  }
149
149
 
150
- /*!
151
- * Return llvm value for addr/copy/gep/load/phi/actualParam/formalParam/actualRet/formalRet
152
- * but not for store/mssaphi/actualIn/acutalOut/formalIn/formalOut
153
- */
154
- const Value* ProgSlice::getLLVMValue(const SVFGNode* node) const
155
- {
156
- if(const StmtSVFGNode* stmt = SVFUtil::dyn_cast<StmtSVFGNode>(node))
157
- {
158
- if(SVFUtil::isa<StoreSVFGNode>(stmt) == false)
159
- {
160
- if(stmt->getPAGDstNode()->hasValue())
161
- return stmt->getPAGDstNode()->getValue();
162
- }
163
- }
164
- else if(const PHISVFGNode* phi = SVFUtil::dyn_cast<PHISVFGNode>(node))
165
- {
166
- return phi->getRes()->getValue();
167
- }
168
- else if(const ActualParmSVFGNode* ap = SVFUtil::dyn_cast<ActualParmSVFGNode>(node))
169
- {
170
- return ap->getParam()->getValue();
171
- }
172
- else if(const FormalParmSVFGNode* fp = SVFUtil::dyn_cast<FormalParmSVFGNode>(node))
173
- {
174
- return fp->getParam()->getValue();
175
- }
176
- else if(const ActualRetSVFGNode* ar = SVFUtil::dyn_cast<ActualRetSVFGNode>(node))
177
- {
178
- return ar->getRev()->getValue();
179
- }
180
- else if(const FormalRetSVFGNode* fr = SVFUtil::dyn_cast<FormalRetSVFGNode>(node))
181
- {
182
- return fr->getRet()->getValue();
183
- }
184
-
185
- return nullptr;
186
- }
187
150
 
188
151
  /*!
189
152
  * Evaluate Atoms of a condition
@@ -40,7 +40,7 @@ void SaberAnnotator::annotateSource()
40
40
  std::string str;
41
41
  raw_string_ostream rawstr(str);
42
42
  rawstr << SB_SLICESOURCE ; //<< _curSlice->getSource()->getId();
43
- if(const Instruction* sourceinst = SVFUtil::dyn_cast<Instruction>(_curSlice->getLLVMValue(_curSlice->getSource())))
43
+ if(const Instruction* sourceinst = SVFUtil::dyn_cast<Instruction>(_curSlice->getSource()->getValue()))
44
44
  {
45
45
  addMDTag(const_cast<Instruction*>(sourceinst),rawstr.str());
46
46
  }