svf-tools 1.0.304 → 1.0.308

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 (449) hide show
  1. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +3 -3
  5. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +4 -4
  6. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -5
  7. package/SVF-doxygen/html/html/AndersenWaveDiffWithType_8cpp_source.html +4 -4
  8. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  9. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +20 -20
  10. package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -10
  11. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +8 -8
  12. package/SVF-doxygen/html/html/CHG_8cpp_source.html +6 -6
  13. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  14. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  16. package/SVF-doxygen/html/html/CommonCHG_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +2 -2
  18. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +2 -2
  19. package/SVF-doxygen/html/html/Conditions_8h_source.html +2 -2
  20. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  22. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  23. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -10
  24. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
  25. package/SVF-doxygen/html/html/CoreBitVector_8h.html +2 -0
  26. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +3 -1
  27. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +5 -5
  29. package/SVF-doxygen/html/html/DCHG_8h_source.html +3 -3
  30. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
  31. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  32. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +11 -11
  33. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  34. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
  35. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +7 -7
  37. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +2 -2
  40. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +3 -3
  41. package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +3 -3
  42. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +8 -8
  43. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  44. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +5 -5
  45. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
  46. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +5 -5
  47. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +8 -8
  48. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +3 -3
  49. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +14 -14
  50. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +5 -5
  51. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
  52. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  56. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  57. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +1 -1
  59. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  63. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
  65. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +7 -7
  66. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +6 -6
  67. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
  68. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
  69. package/SVF-doxygen/html/html/MHP_8cpp_source.html +11 -11
  70. package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
  71. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  73. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +5 -5
  75. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
  76. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  77. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/MTA_8cpp_source.html +6 -6
  79. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  80. package/SVF-doxygen/html/html/MemModel_8h_source.html +1 -1
  81. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  82. package/SVF-doxygen/html/html/MemPartition_8h_source.html +3 -3
  83. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
  84. package/SVF-doxygen/html/html/MemRegion_8h_source.html +4 -4
  85. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +6 -6
  86. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  87. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  88. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +4 -4
  89. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +2 -2
  90. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  91. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  92. package/SVF-doxygen/html/html/Options_8cpp_source.html +97 -96
  93. package/SVF-doxygen/html/html/Options_8h_source.html +97 -96
  94. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +3 -3
  95. package/SVF-doxygen/html/html/PAGEdge_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/PAG_8cpp_source.html +7 -7
  97. package/SVF-doxygen/html/html/PAG_8h_source.html +5 -5
  98. package/SVF-doxygen/html/html/PCG_8cpp_source.html +3 -3
  99. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  100. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  101. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +3 -3
  102. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +11 -10
  103. package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
  104. package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
  105. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +5 -5
  106. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
  107. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +27 -24
  108. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +3 -3
  109. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +21 -17
  110. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +72 -72
  111. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  112. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
  113. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
  114. package/SVF-doxygen/html/html/PointsTo_8h_source.html +2 -2
  115. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
  116. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +2 -2
  117. package/SVF-doxygen/html/html/SCC_8h_source.html +3 -3
  118. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +33 -27
  119. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +52 -49
  120. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +6 -6
  121. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +2 -2
  122. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
  123. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
  124. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  125. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +4 -4
  126. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +3 -3
  127. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +3 -3
  128. package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
  129. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  130. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  131. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +10 -9
  132. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +7 -7
  133. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  134. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +4 -4
  135. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
  136. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
  137. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +3 -3
  138. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  139. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
  140. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +5 -5
  141. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  142. package/SVF-doxygen/html/html/TCT_8cpp_source.html +5 -5
  143. package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
  144. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
  145. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  146. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  147. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
  148. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  149. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  150. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
  151. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  152. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  153. package/SVF-doxygen/html/html/VFG_8cpp_source.html +4 -4
  154. package/SVF-doxygen/html/html/VFG_8h_source.html +3 -3
  155. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +10 -8
  156. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp.html +3 -0
  157. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +77 -64
  158. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h.html +3 -2
  159. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +78 -69
  160. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +2 -2
  161. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  162. package/SVF-doxygen/html/html/WPASolver_8h_source.html +2 -2
  163. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  164. package/SVF-doxygen/html/html/annotated.html +189 -186
  165. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  166. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +22 -22
  169. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +14 -14
  170. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
  171. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +9 -9
  172. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +6 -6
  174. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  175. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +6 -6
  176. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +86 -83
  178. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +2 -2
  179. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +4 -4
  181. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +12 -12
  182. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +3 -3
  183. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
  184. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +2 -2
  185. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +2 -2
  186. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +116 -116
  188. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +22 -22
  189. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +7 -7
  193. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  194. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +11 -11
  195. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
  196. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +25 -25
  197. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +4 -4
  199. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +2 -2
  200. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +13 -13
  201. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +48 -48
  202. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +5 -5
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +26 -26
  204. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +13 -13
  205. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  206. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  210. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  211. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  212. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +2 -2
  214. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +2 -2
  215. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  216. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +2 -2
  220. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +3 -3
  221. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +8 -8
  224. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
  225. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
  227. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +33 -33
  228. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +4 -4
  229. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +29 -29
  230. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +22 -22
  231. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +8 -8
  233. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
  234. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +12 -12
  235. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +18 -18
  236. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  237. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +17 -17
  239. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  241. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +8 -8
  242. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +2 -2
  243. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +2 -2
  244. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +2 -2
  245. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +3 -2
  246. package/SVF-doxygen/html/html/classSVF_1_1Options.html +125 -96
  247. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +6 -6
  248. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +29 -29
  249. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +3 -3
  250. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +2 -2
  252. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  253. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +21 -20
  254. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +8 -8
  255. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +4 -4
  256. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  257. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +7 -7
  258. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +19 -16
  259. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +194 -101
  260. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +22 -22
  261. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +8 -7
  262. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +5 -5
  263. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
  266. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +8 -8
  267. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +7 -7
  268. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
  269. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +13 -13
  270. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +7 -7
  271. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
  272. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +2 -2
  273. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  274. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  275. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +4 -4
  276. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +12 -12
  277. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +2 -2
  279. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +17 -17
  280. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +16 -16
  281. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +2 -2
  282. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +2 -2
  283. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  284. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  285. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  286. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +6 -6
  287. package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
  288. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +2 -2
  289. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  290. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +3 -3
  291. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
  292. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +2 -2
  293. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +161 -162
  294. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +571 -532
  295. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +20 -21
  296. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC-members.html +83 -0
  297. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +297 -0
  298. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
  299. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
  301. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  303. package/SVF-doxygen/html/html/classes.html +96 -95
  304. package/SVF-doxygen/html/html/functions_b.html +11 -5
  305. package/SVF-doxygen/html/html/functions_c.html +13 -14
  306. package/SVF-doxygen/html/html/functions_d.html +13 -4
  307. package/SVF-doxygen/html/html/functions_e.html +3 -0
  308. package/SVF-doxygen/html/html/functions_f.html +1 -1
  309. package/SVF-doxygen/html/html/functions_func_b.html +6 -0
  310. package/SVF-doxygen/html/html/functions_func_d.html +7 -4
  311. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  312. package/SVF-doxygen/html/html/functions_func_g.html +15 -9
  313. package/SVF-doxygen/html/html/functions_func_i.html +11 -11
  314. package/SVF-doxygen/html/html/functions_func_m.html +0 -3
  315. package/SVF-doxygen/html/html/functions_func_n.html +1 -4
  316. package/SVF-doxygen/html/html/functions_func_o.html +6 -4
  317. package/SVF-doxygen/html/html/functions_func_p.html +1 -1
  318. package/SVF-doxygen/html/html/functions_func_r.html +4 -1
  319. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  320. package/SVF-doxygen/html/html/functions_func_v.html +2 -1
  321. package/SVF-doxygen/html/html/functions_g.html +15 -9
  322. package/SVF-doxygen/html/html/functions_i.html +26 -19
  323. package/SVF-doxygen/html/html/functions_l.html +6 -9
  324. package/SVF-doxygen/html/html/functions_m.html +1 -16
  325. package/SVF-doxygen/html/html/functions_n.html +3 -3
  326. package/SVF-doxygen/html/html/functions_o.html +17 -16
  327. package/SVF-doxygen/html/html/functions_p.html +26 -16
  328. package/SVF-doxygen/html/html/functions_r.html +9 -7
  329. package/SVF-doxygen/html/html/functions_s.html +10 -10
  330. package/SVF-doxygen/html/html/functions_t.html +5 -5
  331. package/SVF-doxygen/html/html/functions_type_l.html +1 -4
  332. package/SVF-doxygen/html/html/functions_type_m.html +1 -1
  333. package/SVF-doxygen/html/html/functions_type_n.html +3 -0
  334. package/SVF-doxygen/html/html/functions_type_o.html +0 -3
  335. package/SVF-doxygen/html/html/functions_type_v.html +0 -3
  336. package/SVF-doxygen/html/html/functions_v.html +8 -10
  337. package/SVF-doxygen/html/html/functions_vars_c.html +0 -3
  338. package/SVF-doxygen/html/html/functions_vars_d.html +6 -0
  339. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  340. package/SVF-doxygen/html/html/functions_vars_i.html +7 -0
  341. package/SVF-doxygen/html/html/functions_vars_l.html +3 -3
  342. package/SVF-doxygen/html/html/functions_vars_m.html +0 -12
  343. package/SVF-doxygen/html/html/functions_vars_o.html +3 -3
  344. package/SVF-doxygen/html/html/functions_vars_p.html +12 -0
  345. package/SVF-doxygen/html/html/functions_vars_r.html +0 -3
  346. package/SVF-doxygen/html/html/functions_vars_v.html +3 -3
  347. package/SVF-doxygen/html/html/functions_vars_y.html +0 -3
  348. package/SVF-doxygen/html/html/functions_w.html +1 -3
  349. package/SVF-doxygen/html/html/functions_y.html +0 -3
  350. package/SVF-doxygen/html/html/globals_f.html +3 -3
  351. package/SVF-doxygen/html/html/globals_func_i.html +8 -8
  352. package/SVF-doxygen/html/html/globals_func_s.html +6 -6
  353. package/SVF-doxygen/html/html/globals_r.html +3 -3
  354. package/SVF-doxygen/html/html/globals_s.html +12 -14
  355. package/SVF-doxygen/html/html/hierarchy.html +176 -173
  356. package/SVF-doxygen/html/html/namespaceSVF.html +70 -32
  357. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +13 -12
  358. package/SVF-doxygen/html/html/namespacemembers_type_v.html +6 -0
  359. package/SVF-doxygen/html/html/namespacemembers_v.html +6 -0
  360. package/SVF-doxygen/html/html/search/all_10.js +11 -7
  361. package/SVF-doxygen/html/html/search/all_12.js +4 -4
  362. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  363. package/SVF-doxygen/html/html/search/all_14.js +5 -5
  364. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  365. package/SVF-doxygen/html/html/search/all_16.js +5 -4
  366. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  367. package/SVF-doxygen/html/html/search/all_19.js +0 -1
  368. package/SVF-doxygen/html/html/search/all_2.js +2 -0
  369. package/SVF-doxygen/html/html/search/all_3.js +1 -2
  370. package/SVF-doxygen/html/html/search/all_4.js +5 -2
  371. package/SVF-doxygen/html/html/search/all_5.js +1 -0
  372. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  373. package/SVF-doxygen/html/html/search/all_7.js +5 -3
  374. package/SVF-doxygen/html/html/search/all_8.js +2 -0
  375. package/SVF-doxygen/html/html/search/all_9.js +7 -5
  376. package/SVF-doxygen/html/html/search/all_c.js +2 -3
  377. package/SVF-doxygen/html/html/search/all_d.js +1 -6
  378. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  379. package/SVF-doxygen/html/html/search/all_f.js +2 -3
  380. package/SVF-doxygen/html/html/search/classes_12.js +0 -1
  381. package/SVF-doxygen/html/html/search/classes_7.js +2 -0
  382. package/SVF-doxygen/html/html/search/classes_b.js +1 -0
  383. package/SVF-doxygen/html/html/search/classes_f.js +1 -0
  384. package/SVF-doxygen/html/html/search/functions_1.js +2 -0
  385. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  386. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  387. package/SVF-doxygen/html/html/search/functions_3.js +3 -2
  388. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  389. package/SVF-doxygen/html/html/search/functions_6.js +5 -3
  390. package/SVF-doxygen/html/html/search/functions_8.js +3 -3
  391. package/SVF-doxygen/html/html/search/functions_b.js +0 -1
  392. package/SVF-doxygen/html/html/search/functions_c.js +0 -1
  393. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  394. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  395. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  396. package/SVF-doxygen/html/html/search/typedefs_14.js +2 -1
  397. package/SVF-doxygen/html/html/search/typedefs_b.js +1 -2
  398. package/SVF-doxygen/html/html/search/typedefs_c.js +1 -1
  399. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -0
  400. package/SVF-doxygen/html/html/search/typedefs_e.js +0 -1
  401. package/SVF-doxygen/html/html/search/variables_10.js +4 -0
  402. package/SVF-doxygen/html/html/search/variables_12.js +0 -1
  403. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  404. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  405. package/SVF-doxygen/html/html/search/variables_16.js +1 -1
  406. package/SVF-doxygen/html/html/search/variables_19.js +0 -1
  407. package/SVF-doxygen/html/html/search/variables_3.js +0 -1
  408. package/SVF-doxygen/html/html/search/variables_4.js +2 -0
  409. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  410. package/SVF-doxygen/html/html/search/variables_9.js +3 -1
  411. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  412. package/SVF-doxygen/html/html/search/variables_d.js +0 -4
  413. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  414. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  415. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01CoreBitVector_01_4-members.html +81 -0
  416. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01CoreBitVector_01_4.html +126 -0
  417. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  418. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData-members.html +83 -0
  419. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +145 -0
  420. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  421. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
  422. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  423. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SmallVector_3_01T_00_01N_01_4_01_4.html +3 -3
  424. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  425. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4-members.html +81 -0
  426. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +129 -0
  427. package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
  428. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  429. package/SVF-doxygen/html/html/tools_2DDA_2CMakeLists_8txt.html +1 -1
  430. package/SVF-doxygen/html/html/tools_2Example_2CMakeLists_8txt.html +1 -1
  431. package/SVF-doxygen/html/html/tools_2MTA_2CMakeLists_8txt.html +1 -1
  432. package/SVF-doxygen/html/html/tools_2SABER_2CMakeLists_8txt.html +1 -1
  433. package/SVF-doxygen/html/html/tools_2WPA_2CMakeLists_8txt.html +9 -9
  434. package/include/MemoryModel/PersistentPointsToCache.h +43 -34
  435. package/include/MemoryModel/PointerAnalysisImpl.h +1 -5
  436. package/include/Util/CoreBitVector.h +8 -0
  437. package/include/Util/Options.h +3 -0
  438. package/include/Util/SVFBasicTypes.h +22 -2
  439. package/include/WPA/VersionedFlowSensitive.h +96 -65
  440. package/lib/MemoryModel/PointerAnalysisImpl.cpp +7 -0
  441. package/lib/MemoryModel/PointsTo.cpp +3 -3
  442. package/lib/Util/Options.cpp +6 -0
  443. package/lib/Util/PTAStat.cpp +3 -4
  444. package/lib/Util/SVFUtil.cpp +1 -0
  445. package/lib/WPA/FlowSensitive.cpp +1 -1
  446. package/lib/WPA/VersionedFlowSensitive.cpp +503 -229
  447. package/lib/WPA/VersionedFlowSensitiveStat.cpp +23 -38
  448. package/package.json +1 -1
  449. package/tools/WPA/CMakeLists.txt +3 -1
@@ -30,30 +30,16 @@ class VersionedFlowSensitive : public FlowSensitive
30
30
  friend class VersionedFlowSensitiveStat;
31
31
 
32
32
  private:
33
- typedef llvm::SparseBitVector<> MeldVersion;
33
+ typedef CoreBitVector MeldVersion;
34
34
 
35
35
  public:
36
36
  typedef Map<NodeID, Version> ObjToVersionMap;
37
- typedef Map<NodeID, MeldVersion> ObjToMeldVersionMap;
38
37
  typedef Map<VersionedVar, const DummyVersionPropSVFGNode *> VarToPropNodeMap;
39
38
 
40
- typedef Map<NodeID, ObjToVersionMap> LocVersionMap;
41
- /// Maps locations to all versions it sees (through objects).
42
- typedef Map<NodeID, ObjToMeldVersionMap> LocMeldVersionMap;
39
+ typedef std::vector<ObjToVersionMap> LocVersionMap;
43
40
  /// (o -> (v -> versions with rely on o:v).
44
41
  typedef Map<NodeID, Map<Version, std::vector<Version>>> VersionRelianceMap;
45
42
 
46
- /// For caching the first step in LocVersionMaps.
47
- typedef struct VersionCache
48
- {
49
- /// SVFG node ID.
50
- NodeID l;
51
- /// Nested map, i.e. consume[l] or yield[l].
52
- ObjToVersionMap *ovm;
53
- /// Whether l and ovm can be accessed.
54
- bool valid;
55
- } VersionCache;
56
-
57
43
  /// If this version appears, there has been an error.
58
44
  static const Version invalidVersion;
59
45
 
@@ -126,16 +112,8 @@ private:
126
112
  /// Melds v2 into v1 (in place), returns whether a change occurred.
127
113
  static bool meld(MeldVersion &mv1, const MeldVersion &mv2);
128
114
 
129
- /// Moves meldConsume/Yield to consume/yield.
130
- void mapMeldVersions();
131
-
132
- /// Returns a new MeldVersion for o during the prelabeling phase.
133
- MeldVersion newMeldVersion(NodeID o);
134
-
135
- /// Determine which versions rely on which versions (e.g. c_l'(o) relies on y_l(o)
136
- /// given l-o->l' and y_l(o) = a, c_l'(o) = b), and which statements rely on which
137
- /// versions (e.g. node l relies on c_l(o)).
138
- void determineReliance(void);
115
+ /// Removes all indirect edges in the SVFG.
116
+ void removeAllIndirectSVFGEdges(void);
139
117
 
140
118
  /// Propagates version v of o to any version of o which relies on v when o/v is changed.
141
119
  /// Recursively applies to reliant versions till no new changes are made.
@@ -146,22 +124,37 @@ private:
146
124
  /// taken itself.
147
125
  void propagateVersion(const NodeID o, const Version v, const Version vp, bool time=true);
148
126
 
149
- /// Returns true if l is a delta node, i.e., may have new incoming edges due to
150
- /// on-the-fly call graph resolution. approxCallGraph is the over-approximate
151
- /// call graph built by the pre-analysis.
152
- virtual bool delta(NodeID l) const;
127
+ /// Fills in isStoreMap and isLoadMap.
128
+ virtual void buildIsStoreLoadMaps(void);
129
+
130
+ /// Returns true if l is a store node.
131
+ virtual bool isStore(const NodeID l) const;
132
+
133
+ /// Returns true if l is a load node.
134
+ virtual bool isLoad(const NodeID l) const;
135
+
136
+ /// Fills in deltaMap and deltaSourceMap for the SVFG.
137
+ virtual void buildDeltaMaps(void);
138
+
139
+ /// Returns true if l is a delta node, i.e., may get a new incoming indirect
140
+ /// edge due to on-the-fly callgraph construction.
141
+ virtual bool delta(const NodeID l) const;
142
+
143
+ /// Returns true if l is a delta-source node, i.e., may get a new outgoing indirect
144
+ /// edge to a delta node due to on-the-fly callgraph construction.
145
+ virtual bool deltaSource(const NodeID l) const;
153
146
 
154
147
  /// Shared code for getConsume and getYield. They wrap this function.
155
- Version getVersion(const NodeID l, const NodeID o, VersionCache &cache, LocVersionMap &lvm);
148
+ Version getVersion(const NodeID l, const NodeID o, const LocVersionMap &lvm) const;
156
149
 
157
150
  /// Returns the consumed version of o at l. If no such version exists, returns invalidVersion.
158
- Version getConsume(const NodeID l, const NodeID o);
151
+ Version getConsume(const NodeID l, const NodeID o) const;
159
152
 
160
153
  /// Returns the yielded version of o at l. If no such version exists, returns invalidVersion.
161
- Version getYield(const NodeID l, const NodeID o);
154
+ Version getYield(const NodeID l, const NodeID o) const;
162
155
 
163
156
  /// Shared code for setConsume and setYield. They wrap this function.
164
- void setVersion(const NodeID l, const NodeID o, const Version v, VersionCache &cache, LocVersionMap &lvm);
157
+ void setVersion(const NodeID l, const NodeID o, const Version v, LocVersionMap &lvm);
165
158
 
166
159
  /// Sets the consumed version of o at l to v.
167
160
  void setConsume(const NodeID l, const NodeID o, const Version v);
@@ -169,11 +162,11 @@ private:
169
162
  /// Sets the yielded version of o at l to v.
170
163
  void setYield(const NodeID l, const NodeID o, const Version v);
171
164
 
172
- /// Invalidates yieldCache.
173
- void invalidateYieldCache(void);
165
+ /// Returns the versions of o which rely on o:v.
166
+ std::vector<Version> &getReliantVersions(const NodeID o, const Version v);
174
167
 
175
- /// Invalidates consumeCache.
176
- void invalidateConsumeCache(void);
168
+ /// Returns the statements which rely on o:v.
169
+ NodeBS &getStmtReliance(const NodeID o, const Version v);
177
170
 
178
171
  /// Dumps versionReliance and stmtReliance.
179
172
  void dumpReliances(void) const;
@@ -184,35 +177,12 @@ private:
184
177
  /// Dumps a MeldVersion to stdout.
185
178
  static void dumpMeldVersion(MeldVersion &v);
186
179
 
187
- /// SVFG node (label) x object -> version to consume.
188
- /// Used during meld labeling. We use MeldVersions and Versions for performance.
189
- /// MeldVersions are currently SparseBitVectors which are necessary for the meld operator,
190
- /// but when meld labeling is complete, we don't want to carry around SBVs and use them; integers
191
- /// are better.
192
- LocMeldVersionMap meldConsume;
193
- /// SVFG node (label) x object -> version to yield.
194
- /// Used during meld labeling.
195
- /// For non-stores, yield == consume, so meldYield only has entries for stores.
196
- LocMeldVersionMap meldYield;
197
- /// Object -> MeldVersion counter. Used in the prelabeling phase to generate a
198
- /// new MeldVersion.
199
- Map<NodeID, unsigned> meldVersions;
200
-
201
- /// Like meldConsume but with Versions, not MeldVersions.
202
- /// Created after meld labeling from meldConsume and used during the analysis.
203
- /// When modifying consume itself (not a value) outside of setConsume, invalidateConsumeCache
204
- /// should be called. E.g. if a call like consume[l] is an insertion.
180
+ /// Maps locations to objects to a version. The object version is what is
181
+ /// consumed at that location.
205
182
  LocVersionMap consume;
206
183
  /// Actual yield map. Yield analogue to consume.
207
- /// When modifying yield itself (not a value) outside of setYield, invalidateYieldCache
208
- /// should be called.
209
184
  LocVersionMap yield;
210
185
 
211
- /// Cache for the nested map in consume.
212
- VersionCache consumeCache;
213
- /// Cache for the nested map in yield.
214
- VersionCache yieldCache;
215
-
216
186
  /// o -> (version -> versions which rely on it).
217
187
  VersionRelianceMap versionReliance;
218
188
  /// o x version -> statement nodes which rely on that o/version.
@@ -222,26 +192,87 @@ private:
222
192
  /// needs to be propagated.
223
193
  VarToPropNodeMap versionedVarToPropNode;
224
194
 
195
+ // Maps an object o to o' if o is equivalent to o' with respect to
196
+ // versioning. Thus, we don't need to store the versions of o and look
197
+ // up those for o' instead.
198
+ Map<NodeID, NodeID> equivalentObject;
199
+
225
200
  /// Worklist for performing meld labeling, takes SVFG node l.
226
201
  /// Nodes are added when the version they yield is changed.
227
202
  FIFOWorkList<NodeID> vWorklist;
228
203
 
204
+ Set<NodeID> prelabeledObjects;
205
+
229
206
  /// Points-to DS for working with versions.
230
207
  BVDataPTAImpl::VersionedPTDataTy *vPtD;
231
208
 
209
+ /// deltaMap[l] means SVFG node l is a delta node, i.e., may get new
210
+ /// incoming edges due to OTF callgraph construction.
211
+ std::vector<bool> deltaMap;
212
+
213
+ /// deltaSourceMap[l] means SVFG node l *may* be a source to a delta node
214
+ /// through an dge added as a result of on-the-fly callgraph
215
+ /// construction.
216
+ std::vector<bool> deltaSourceMap;
217
+
218
+ /// isStoreMap[l] means SVFG node l is a store node.
219
+ std::vector<bool> isStoreMap;
220
+
221
+ /// isLoadMap[l] means SVFG node l is a load node.
222
+ std::vector<bool> isLoadMap;
223
+
232
224
  /// Additional statistics.
233
225
  //@{
234
226
  Size_t numPrelabeledNodes; ///< Number of prelabeled nodes.
235
227
  Size_t numPrelabelVersions; ///< Number of versions created during prelabeling.
236
228
 
237
- double relianceTime; ///< Time to determine version and statement reliance.
238
229
  double prelabelingTime; ///< Time to prelabel SVFG.
239
230
  double meldLabelingTime; ///< Time to meld label SVFG.
240
- double meldMappingTime; ///< Time to map MeldVersions to Versions.
241
231
  double versionPropTime; ///< Time to propagate versions to versions which rely on them.
242
232
  //@}
243
233
 
244
234
  static VersionedFlowSensitive *vfspta;
235
+
236
+ class SCC
237
+ {
238
+ private:
239
+ typedef struct NodeData
240
+ {
241
+ int index;
242
+ int lowlink;
243
+ bool onStack;
244
+ } NodeData;
245
+
246
+ public:
247
+ /// Determines the strongly connected components of svfg following only
248
+ /// edges labelled with object. partOf[n] = scc means nodes n is part of
249
+ /// SCC scc. startingNodes contains the nodes to begin the search from.
250
+ /// After completion, footprint will contain all edges which object
251
+ /// appears on (as reached through the algorithm described above) sorted.
252
+ ///
253
+ /// This is not a general SCC detection but specifically for versioning,
254
+ /// so edges to delta nodes are skipped as they are prelabelled. Edges
255
+ /// to stores are also skipped to as they yield a new version (they
256
+ /// cannot be part of an SCC containing more than themselves).
257
+ /// Skipped edges still form part of the footprint.
258
+ static unsigned detectSCCs(VersionedFlowSensitive *vfs,
259
+ const SVFG *svfg, const NodeID object,
260
+ const std::vector<const SVFGNode *> &startingNodes,
261
+ std::vector<int> &partOf,
262
+ std::vector<const IndirectSVFGEdge *> &footprint);
263
+
264
+ private:
265
+ /// Called by detectSCCs then called recursively.
266
+ static void visit(VersionedFlowSensitive *vfs,
267
+ const NodeID object,
268
+ std::vector<int> &partOf,
269
+ std::vector<const IndirectSVFGEdge *> &footprint,
270
+ std::vector<NodeData> &nodeData,
271
+ std::stack<const SVFGNode *> &stack,
272
+ int &index,
273
+ int &currentSCC,
274
+ const SVFGNode *v);
275
+ };
245
276
  };
246
277
 
247
278
  } // End namespace SVF
@@ -69,6 +69,13 @@ BVDataPTAImpl::BVDataPTAImpl(PAG* p, PointerAnalysis::PTATY type, bool alias_che
69
69
  ptaImplTy = BVDataImpl;
70
70
  }
71
71
 
72
+ void BVDataPTAImpl::finalize()
73
+ {
74
+ normalizePointsTo();
75
+ PointerAnalysis::finalize();
76
+ if (Options::ptDataBacking == PTBackingType::Persistent && Options::PStat) ptCache.printStats("bv-finalize");
77
+ }
78
+
72
79
  /*!
73
80
  * Expand all fields of an aggregate in all points-to sets
74
81
  */
@@ -276,9 +276,9 @@ bool PointsTo::intersectWithComplement(const PointsTo &rhs)
276
276
  if (type == CBV) return cbv.intersectWithComplement(rhs.cbv);
277
277
  else if (type == SBV) return sbv.intersectWithComplement(rhs.sbv);
278
278
  else if (type == BV) return bv.intersectWithComplement(rhs.bv);
279
- else {
280
- assert(false && "PointsTo::intersectWithComplement(PT): unknown type");
281
- }
279
+
280
+ assert(false && "PointsTo::intersectWithComplement(PT): unknown type");
281
+ abort();
282
282
  }
283
283
 
284
284
  void PointsTo::intersectWithComplement(const PointsTo &lhs, const PointsTo &rhs)
@@ -48,6 +48,12 @@ namespace SVF
48
48
  llvm::cl::desc("time limit for main phase of flow-sensitive analyses")
49
49
  );
50
50
 
51
+ const llvm::cl::opt<unsigned> Options::VersioningThreads(
52
+ "versioning-threads",
53
+ llvm::cl::init(1),
54
+ llvm::cl::desc("number of threads to use in the versioning phase of versioned flow-sensitive analysis")
55
+ );
56
+
51
57
  const llvm::cl::opt<unsigned> Options::AnderTimeLimit(
52
58
  "ander-time-limit",
53
59
  llvm::cl::init(0),
@@ -124,10 +124,9 @@ double PTAStat::getClk(bool mark) {
124
124
  {
125
125
  return CLOCK_IN_MS();
126
126
  }
127
- else
128
- {
129
- assert(false && "PTAStat::getClk: unknown clock type");
130
- }
127
+
128
+ assert(false && "PTAStat::getClk: unknown clock type");
129
+ abort();
131
130
  }
132
131
 
133
132
  void PTAStat::performStat()
@@ -378,6 +378,7 @@ std::string SVFUtil::hclustMethodToString(hclust_fast_methods method)
378
378
  return "svf-best";
379
379
  default:
380
380
  assert(false && "SVFUtil::hclustMethodToString: unknown method");
381
+ abort();
381
382
  }
382
383
  }
383
384
 
@@ -170,7 +170,7 @@ void FlowSensitive::finalize()
170
170
  }
171
171
  }
172
172
 
173
- PointerAnalysis::finalize();
173
+ BVDataPTAImpl::finalize();
174
174
  }
175
175
 
176
176
  /*!