svf-tools 1.0.303 → 1.0.307

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 (468) 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 +11 -11
  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 +21 -21
  10. package/SVF-doxygen/html/html/Andersen_8h_source.html +8 -8
  11. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +8 -8
  12. package/SVF-doxygen/html/html/CHG_8cpp.html +7 -6
  13. package/SVF-doxygen/html/html/CHG_8cpp_source.html +42 -41
  14. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  15. package/SVF-doxygen/html/html/CSC_8cpp_source.html +2 -2
  16. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  17. package/SVF-doxygen/html/html/CommonCHG_8h_source.html +1 -1
  18. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +2 -2
  19. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/Conditions_8h_source.html +2 -2
  21. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  23. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +9 -9
  25. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  26. package/SVF-doxygen/html/html/CoreBitVector_8h.html +2 -0
  27. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +3 -1
  28. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  29. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +5 -5
  30. package/SVF-doxygen/html/html/DCHG_8h_source.html +4 -4
  31. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +5 -5
  32. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  33. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +11 -11
  34. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +8 -8
  36. package/SVF-doxygen/html/html/DDAStat_8h_source.html +2 -2
  37. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  38. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +2 -2
  41. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +3 -3
  42. package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +3 -3
  43. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +8 -8
  44. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  45. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +5 -5
  46. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  47. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +5 -5
  48. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +7 -7
  49. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +3 -3
  50. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +17 -17
  51. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +3 -3
  52. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  55. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +2 -2
  56. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  57. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +3 -3
  59. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +1 -1
  60. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  61. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  62. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  63. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  64. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/LocationSet_8h_source.html +2 -2
  66. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +8 -8
  67. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +6 -6
  68. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
  69. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
  70. package/SVF-doxygen/html/html/MHP_8cpp_source.html +12 -12
  71. package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
  72. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  73. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  74. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  75. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +5 -5
  76. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +3 -3
  77. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  78. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  79. package/SVF-doxygen/html/html/MTA_8cpp_source.html +7 -7
  80. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  81. package/SVF-doxygen/html/html/MemModel_8h_source.html +1 -1
  82. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/html/MemPartition_8h_source.html +3 -3
  84. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +5 -5
  85. package/SVF-doxygen/html/html/MemRegion_8h_source.html +4 -4
  86. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +7 -7
  87. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  88. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +11 -11
  90. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +2 -2
  91. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  92. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  93. package/SVF-doxygen/html/html/Options_8cpp_source.html +112 -110
  94. package/SVF-doxygen/html/html/Options_8h.html +1 -0
  95. package/SVF-doxygen/html/html/Options_8h_source.html +114 -111
  96. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +3 -3
  97. package/SVF-doxygen/html/html/PAGEdge_8h_source.html +1 -1
  98. package/SVF-doxygen/html/html/PAG_8cpp_source.html +7 -7
  99. package/SVF-doxygen/html/html/PAG_8h_source.html +5 -5
  100. package/SVF-doxygen/html/html/PCG_8cpp_source.html +3 -3
  101. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  103. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +3 -3
  104. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +21 -18
  105. package/SVF-doxygen/html/html/PTAStat_8h_source.html +19 -17
  106. package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
  107. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +5 -5
  108. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
  109. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +2 -2
  110. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  111. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
  112. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +4 -4
  113. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +19 -19
  114. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
  115. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +4 -5
  116. package/SVF-doxygen/html/html/PointsTo_8h_source.html +2 -2
  117. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +4 -4
  118. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +2 -2
  119. package/SVF-doxygen/html/html/SCC_8h_source.html +3 -3
  120. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +33 -27
  121. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +52 -49
  122. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +6 -6
  123. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +2 -2
  124. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
  125. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
  126. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
  127. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +11 -11
  128. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +5 -5
  129. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  130. package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
  131. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  132. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  133. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +10 -9
  134. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +7 -7
  135. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  136. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +4 -4
  137. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
  138. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
  139. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +3 -3
  140. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  141. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
  142. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +5 -5
  143. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  144. package/SVF-doxygen/html/html/TCT_8cpp_source.html +5 -5
  145. package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
  146. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
  147. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  148. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  149. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +2 -2
  150. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  151. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  152. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +2 -2
  153. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +2 -2
  154. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  155. package/SVF-doxygen/html/html/VFG_8cpp_source.html +4 -4
  156. package/SVF-doxygen/html/html/VFG_8h_source.html +3 -3
  157. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +10 -8
  158. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp.html +3 -0
  159. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +78 -65
  160. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h.html +3 -2
  161. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +78 -69
  162. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +2 -2
  163. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  164. package/SVF-doxygen/html/html/WPASolver_8h_source.html +2 -2
  165. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  166. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  167. package/SVF-doxygen/html/html/annotated.html +189 -186
  168. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  169. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  170. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +2 -2
  171. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +24 -24
  172. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +10 -10
  173. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +5 -5
  174. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +12 -12
  175. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
  176. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat-members.html +10 -7
  177. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +18 -14
  178. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +5 -5
  179. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +4 -4
  180. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
  181. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +2 -2
  182. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1BranchCondManager.html +4 -4
  184. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +91 -91
  185. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +2 -2
  186. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +3 -3
  187. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
  188. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +2 -2
  189. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +17 -17
  193. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +7 -7
  197. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +11 -11
  199. package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +5 -2
  200. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +14 -10
  201. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +27 -27
  202. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +3 -3
  203. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +4 -4
  204. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +2 -2
  205. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +14 -14
  206. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +48 -48
  207. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat-members.html +5 -2
  208. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +16 -12
  209. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +23 -23
  210. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +13 -13
  211. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  212. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  214. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +2 -2
  219. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +2 -2
  220. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +2 -2
  221. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  222. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat-members.html +5 -2
  223. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +7 -3
  224. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  226. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +2 -2
  228. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +3 -3
  229. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  230. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +8 -8
  232. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
  233. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
  235. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +36 -36
  236. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +4 -4
  237. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +31 -31
  238. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +20 -20
  239. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  240. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +9 -9
  241. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +9 -9
  242. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +12 -12
  243. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +18 -18
  244. package/SVF-doxygen/html/html/classSVF_1_1MTAStat-members.html +6 -3
  245. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +17 -13
  246. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +2 -2
  247. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +19 -19
  248. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +5 -2
  249. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +12 -8
  250. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +17 -17
  253. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +2 -2
  254. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +102 -100
  257. package/SVF-doxygen/html/html/classSVF_1_1Options.html +166 -111
  258. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +6 -6
  259. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +29 -29
  260. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +3 -3
  261. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +6 -3
  265. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +88 -56
  266. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +8 -8
  267. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  268. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  269. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
  270. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
  271. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +23 -23
  272. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +9 -8
  273. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +5 -5
  274. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +2 -2
  275. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +2 -2
  276. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
  277. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +8 -8
  278. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
  279. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
  280. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +13 -13
  281. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +11 -8
  282. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +40 -36
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +2 -2
  285. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  287. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +4 -4
  288. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +12 -12
  289. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
  290. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +2 -2
  291. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +18 -18
  292. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +16 -16
  293. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +2 -2
  294. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +2 -2
  295. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  296. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  297. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +5 -5
  299. package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
  300. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +2 -2
  301. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +3 -3
  303. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +2 -2
  305. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +161 -162
  306. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +578 -539
  307. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +7 -4
  308. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +31 -28
  309. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC-members.html +83 -0
  310. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +297 -0
  311. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
  312. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  313. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +12 -12
  314. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
  315. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  316. package/SVF-doxygen/html/html/classes.html +96 -95
  317. package/SVF-doxygen/html/html/functions_b.html +11 -5
  318. package/SVF-doxygen/html/html/functions_c.html +24 -18
  319. package/SVF-doxygen/html/html/functions_d.html +13 -4
  320. package/SVF-doxygen/html/html/functions_e.html +3 -0
  321. package/SVF-doxygen/html/html/functions_enum.html +3 -0
  322. package/SVF-doxygen/html/html/functions_eval_c.html +3 -0
  323. package/SVF-doxygen/html/html/functions_eval_w.html +76 -0
  324. package/SVF-doxygen/html/html/functions_f.html +14 -14
  325. package/SVF-doxygen/html/html/functions_func_b.html +6 -0
  326. package/SVF-doxygen/html/html/functions_func_d.html +7 -4
  327. package/SVF-doxygen/html/html/functions_func_g.html +15 -9
  328. package/SVF-doxygen/html/html/functions_func_i.html +11 -11
  329. package/SVF-doxygen/html/html/functions_func_m.html +0 -3
  330. package/SVF-doxygen/html/html/functions_func_n.html +1 -4
  331. package/SVF-doxygen/html/html/functions_func_o.html +6 -4
  332. package/SVF-doxygen/html/html/functions_func_r.html +4 -1
  333. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  334. package/SVF-doxygen/html/html/functions_func_v.html +2 -1
  335. package/SVF-doxygen/html/html/functions_g.html +15 -9
  336. package/SVF-doxygen/html/html/functions_i.html +23 -16
  337. package/SVF-doxygen/html/html/functions_l.html +12 -15
  338. package/SVF-doxygen/html/html/functions_m.html +1 -16
  339. package/SVF-doxygen/html/html/functions_n.html +3 -3
  340. package/SVF-doxygen/html/html/functions_o.html +17 -16
  341. package/SVF-doxygen/html/html/functions_p.html +16 -13
  342. package/SVF-doxygen/html/html/functions_r.html +6 -8
  343. package/SVF-doxygen/html/html/functions_s.html +14 -16
  344. package/SVF-doxygen/html/html/functions_t.html +9 -9
  345. package/SVF-doxygen/html/html/functions_type_l.html +1 -4
  346. package/SVF-doxygen/html/html/functions_type_m.html +1 -1
  347. package/SVF-doxygen/html/html/functions_type_n.html +3 -0
  348. package/SVF-doxygen/html/html/functions_type_o.html +0 -3
  349. package/SVF-doxygen/html/html/functions_type_v.html +0 -3
  350. package/SVF-doxygen/html/html/functions_u.html +3 -3
  351. package/SVF-doxygen/html/html/functions_v.html +8 -10
  352. package/SVF-doxygen/html/html/functions_vars_c.html +3 -3
  353. package/SVF-doxygen/html/html/functions_vars_d.html +6 -0
  354. package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
  355. package/SVF-doxygen/html/html/functions_vars_i.html +7 -0
  356. package/SVF-doxygen/html/html/functions_vars_l.html +3 -3
  357. package/SVF-doxygen/html/html/functions_vars_m.html +0 -12
  358. package/SVF-doxygen/html/html/functions_vars_o.html +3 -3
  359. package/SVF-doxygen/html/html/functions_vars_p.html +3 -0
  360. package/SVF-doxygen/html/html/functions_vars_r.html +0 -3
  361. package/SVF-doxygen/html/html/functions_vars_v.html +3 -3
  362. package/SVF-doxygen/html/html/functions_vars_y.html +0 -3
  363. package/SVF-doxygen/html/html/functions_w.html +5 -6
  364. package/SVF-doxygen/html/html/functions_y.html +0 -3
  365. package/SVF-doxygen/html/html/globals_f.html +3 -3
  366. package/SVF-doxygen/html/html/globals_func_i.html +8 -8
  367. package/SVF-doxygen/html/html/globals_func_s.html +6 -6
  368. package/SVF-doxygen/html/html/globals_r.html +3 -3
  369. package/SVF-doxygen/html/html/globals_s.html +12 -14
  370. package/SVF-doxygen/html/html/hierarchy.html +176 -173
  371. package/SVF-doxygen/html/html/menudata.js +2 -1
  372. package/SVF-doxygen/html/html/namespaceSVF.html +70 -32
  373. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +13 -12
  374. package/SVF-doxygen/html/html/namespacemembers_type_v.html +6 -0
  375. package/SVF-doxygen/html/html/namespacemembers_v.html +6 -0
  376. package/SVF-doxygen/html/html/search/all_10.js +4 -3
  377. package/SVF-doxygen/html/html/search/all_12.js +4 -4
  378. package/SVF-doxygen/html/html/search/all_13.js +13 -13
  379. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  380. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  381. package/SVF-doxygen/html/html/search/all_16.js +5 -4
  382. package/SVF-doxygen/html/html/search/all_17.js +2 -1
  383. package/SVF-doxygen/html/html/search/all_19.js +0 -1
  384. package/SVF-doxygen/html/html/search/all_2.js +2 -0
  385. package/SVF-doxygen/html/html/search/all_3.js +2 -1
  386. package/SVF-doxygen/html/html/search/all_4.js +5 -2
  387. package/SVF-doxygen/html/html/search/all_5.js +1 -0
  388. package/SVF-doxygen/html/html/search/all_6.js +6 -6
  389. package/SVF-doxygen/html/html/search/all_7.js +5 -3
  390. package/SVF-doxygen/html/html/search/all_8.js +2 -0
  391. package/SVF-doxygen/html/html/search/all_9.js +6 -4
  392. package/SVF-doxygen/html/html/search/all_c.js +4 -5
  393. package/SVF-doxygen/html/html/search/all_d.js +1 -6
  394. package/SVF-doxygen/html/html/search/all_e.js +5 -5
  395. package/SVF-doxygen/html/html/search/all_f.js +2 -3
  396. package/SVF-doxygen/html/html/search/classes_12.js +0 -1
  397. package/SVF-doxygen/html/html/search/classes_7.js +2 -0
  398. package/SVF-doxygen/html/html/search/classes_b.js +1 -0
  399. package/SVF-doxygen/html/html/search/classes_f.js +1 -0
  400. package/SVF-doxygen/html/html/search/enums_1.js +1 -0
  401. package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
  402. package/SVF-doxygen/html/html/search/enumvalues_2.js +1 -0
  403. package/SVF-doxygen/html/html/search/functions_1.js +2 -0
  404. package/SVF-doxygen/html/html/search/functions_10.js +3 -3
  405. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  406. package/SVF-doxygen/html/html/search/functions_3.js +3 -2
  407. package/SVF-doxygen/html/html/search/functions_6.js +5 -3
  408. package/SVF-doxygen/html/html/search/functions_8.js +3 -3
  409. package/SVF-doxygen/html/html/search/functions_b.js +0 -1
  410. package/SVF-doxygen/html/html/search/functions_c.js +0 -1
  411. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  412. package/SVF-doxygen/html/html/search/functions_f.js +1 -0
  413. package/SVF-doxygen/html/html/search/searchdata.js +1 -1
  414. package/SVF-doxygen/html/html/search/typedefs_14.js +2 -1
  415. package/SVF-doxygen/html/html/search/typedefs_b.js +1 -2
  416. package/SVF-doxygen/html/html/search/typedefs_c.js +1 -1
  417. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -0
  418. package/SVF-doxygen/html/html/search/typedefs_e.js +0 -1
  419. package/SVF-doxygen/html/html/search/variables_10.js +1 -0
  420. package/SVF-doxygen/html/html/search/variables_12.js +0 -1
  421. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  422. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  423. package/SVF-doxygen/html/html/search/variables_16.js +1 -1
  424. package/SVF-doxygen/html/html/search/variables_19.js +0 -1
  425. package/SVF-doxygen/html/html/search/variables_3.js +1 -1
  426. package/SVF-doxygen/html/html/search/variables_4.js +2 -0
  427. package/SVF-doxygen/html/html/search/variables_5.js +1 -0
  428. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  429. package/SVF-doxygen/html/html/search/variables_9.js +3 -1
  430. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  431. package/SVF-doxygen/html/html/search/variables_d.js +0 -4
  432. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  433. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  434. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01CoreBitVector_01_4-members.html +81 -0
  435. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01CoreBitVector_01_4.html +126 -0
  436. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  437. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData-members.html +83 -0
  438. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +145 -0
  439. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +12 -12
  440. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  441. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
  442. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  443. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SmallVector_3_01T_00_01N_01_4_01_4.html +3 -3
  444. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  445. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4-members.html +81 -0
  446. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +129 -0
  447. package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
  448. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  449. package/SVF-doxygen/html/html/tools_2DDA_2CMakeLists_8txt.html +1 -1
  450. package/SVF-doxygen/html/html/tools_2Example_2CMakeLists_8txt.html +1 -1
  451. package/SVF-doxygen/html/html/tools_2MTA_2CMakeLists_8txt.html +1 -1
  452. package/SVF-doxygen/html/html/tools_2SABER_2CMakeLists_8txt.html +1 -1
  453. package/SVF-doxygen/html/html/tools_2WPA_2CMakeLists_8txt.html +9 -9
  454. package/include/Graphs/SVFGStat.h +10 -10
  455. package/include/MemoryModel/PTAStat.h +8 -2
  456. package/include/Util/CoreBitVector.h +8 -0
  457. package/include/Util/Options.h +6 -0
  458. package/include/Util/SVFBasicTypes.h +22 -2
  459. package/include/WPA/VersionedFlowSensitive.h +96 -65
  460. package/lib/MemoryModel/PointsTo.cpp +3 -3
  461. package/lib/SVF-FE/CHG.cpp +3 -2
  462. package/lib/Util/Options.cpp +16 -0
  463. package/lib/Util/PTAStat.cpp +16 -2
  464. package/lib/Util/SVFUtil.cpp +1 -0
  465. package/lib/WPA/VersionedFlowSensitive.cpp +503 -229
  466. package/lib/WPA/VersionedFlowSensitiveStat.cpp +23 -38
  467. package/package.json +1 -1
  468. package/tools/WPA/CMakeLists.txt +3 -1
@@ -86,7 +86,7 @@ struct std::hash&lt; SVF::SmallVector&lt; T, N &gt; &gt;</h3>
86
86
 
87
87
  <p>Specialise hash for SmallVectors. </p>
88
88
 
89
- <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00272">272</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
89
+ <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00275">275</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
90
90
  </div><h2 class="groupheader">Member Function Documentation</h2>
91
91
  <a id="ae282a411b1a579a34ccd7eec3a492eb2"></a>
92
92
  <h2 class="memtitle"><span class="permalink"><a href="#ae282a411b1a579a34ccd7eec3a492eb2">&#9670;&nbsp;</a></span>operator()()</h2>
@@ -114,8 +114,8 @@ template&lt;typename T , unsigned N&gt; </div>
114
114
  </table>
115
115
  </div><div class="memdoc">
116
116
 
117
- <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00274">274</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
118
- <div class="fragment"><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; {</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (sv.empty()) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (sv.size() == 1) <span class="keywordflow">return</span> sv[0];</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// Iterate and accumulate the hash.</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">size_t</span> hash = 0;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;T, size_t&gt;</a>&gt; hts;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; std::hash&lt;T&gt; ht;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> T &amp;t : sv)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; {</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; hash = hts(std::make_pair(ht(t), hash));</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; }</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">return</span> hash;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
117
+ <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00277">277</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
118
+ <div class="fragment"><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (sv.empty()) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (sv.size() == 1) <span class="keywordflow">return</span> sv[0];</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="comment">// Iterate and accumulate the hash.</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordtype">size_t</span> hash = 0;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;T, size_t&gt;</a>&gt; hts;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; std::hash&lt;T&gt; ht;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> T &amp;t : sv)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; hash = hts(std::make_pair(ht(t), hash));</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">return</span> hash;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; }</div><div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
119
119
  </div><!-- fragment -->
120
120
  </div>
121
121
  </div>
@@ -86,7 +86,7 @@ struct std::hash&lt; llvm::SparseBitVector&lt; N &gt; &gt;</h3>
86
86
 
87
87
  <p>Specialise hash for SparseBitVectors. </p>
88
88
 
89
- <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00293">293</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
89
+ <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00296">296</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
90
90
  </div><h2 class="groupheader">Member Function Documentation</h2>
91
91
  <a id="ae6df53599aefcd010d7e3fd6bf95bdb6"></a>
92
92
  <h2 class="memtitle"><span class="permalink"><a href="#ae6df53599aefcd010d7e3fd6bf95bdb6">&#9670;&nbsp;</a></span>operator()()</h2>
@@ -114,8 +114,8 @@ template&lt;unsigned N&gt; </div>
114
114
  </table>
115
115
  </div><div class="memdoc">
116
116
 
117
- <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00295">295</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
118
- <div class="fragment"><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;std::pair&lt;size_t, size_t&gt;</a>, <span class="keywordtype">size_t</span>&gt;&gt; h;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(std::make_pair(sbv.count(), sbv.find_first()), sbv.find_last()));</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; }</div><div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
117
+ <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00298">298</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
118
+ <div class="fragment"><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;std::pair&lt;std::pair&lt;size_t, size_t&gt;</a>, <span class="keywordtype">size_t</span>&gt;&gt; h;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> h(std::make_pair(std::make_pair(sbv.count(), sbv.find_first()), sbv.find_last()));</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
119
119
  </div><!-- fragment -->
120
120
  </div>
121
121
  </div>
@@ -0,0 +1,81 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.8.13"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Static Value-Flow Analysis: Member List</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="search/searchdata.js"></script>
14
+ <script type="text/javascript" src="search/search.js"></script>
15
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
16
+ </head>
17
+ <body>
18
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
19
+ <div id="titlearea">
20
+ <table cellspacing="0" cellpadding="0">
21
+ <tbody>
22
+ <tr style="height: 56px;">
23
+ <td id="projectalign" style="padding-left: 0.5em;">
24
+ <div id="projectname">Static Value-Flow Analysis
25
+ </div>
26
+ </td>
27
+ </tr>
28
+ </tbody>
29
+ </table>
30
+ </div>
31
+ <!-- end header part -->
32
+ <!-- Generated by Doxygen 1.8.13 -->
33
+ <script type="text/javascript">
34
+ var searchBox = new SearchBox("searchBox", "search",false,'Search');
35
+ </script>
36
+ <script type="text/javascript" src="menudata.js"></script>
37
+ <script type="text/javascript" src="menu.js"></script>
38
+ <script type="text/javascript">
39
+ $(function() {
40
+ initMenu('',true,false,'search.php','Search');
41
+ $(document).ready(function() { init_search(); });
42
+ });
43
+ </script>
44
+ <div id="main-nav"></div>
45
+ <!-- window showing the filter options -->
46
+ <div id="MSearchSelectWindow"
47
+ onmouseover="return searchBox.OnSearchSelectShow()"
48
+ onmouseout="return searchBox.OnSearchSelectHide()"
49
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
50
+ </div>
51
+
52
+ <!-- iframe showing the search results (closed by default) -->
53
+ <div id="MSearchResultsWindow">
54
+ <iframe src="javascript:void(0)" frameborder="0"
55
+ name="MSearchResults" id="MSearchResults">
56
+ </iframe>
57
+ </div>
58
+
59
+ <div id="nav-path" class="navpath">
60
+ <ul>
61
+ <li class="navelem"><b>std</b></li><li class="navelem"><a class="el" href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html">hash&lt; std::vector&lt; T &gt; &gt;</a></li> </ul>
62
+ </div>
63
+ </div><!-- top -->
64
+ <div class="header">
65
+ <div class="headertitle">
66
+ <div class="title">std::hash&lt; std::vector&lt; T &gt; &gt; Member List</div> </div>
67
+ </div><!--header-->
68
+ <div class="contents">
69
+
70
+ <p>This is the complete list of members for <a class="el" href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html">std::hash&lt; std::vector&lt; T &gt; &gt;</a>, including all inherited members.</p>
71
+ <table class="directory">
72
+ <tr class="even"><td class="entry"><a class="el" href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html#a921ca626d87c3eed7b71210cfc24d0dd">operator()</a>(const std::vector&lt; T &gt; &amp;v) const</td><td class="entry"><a class="el" href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html">std::hash&lt; std::vector&lt; T &gt; &gt;</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
73
+ </table></div><!-- contents -->
74
+ <!-- start footer part -->
75
+ <hr class="footer"/><address class="footer"><small>
76
+ Generated by &#160;<a href="http://www.doxygen.org/index.html">
77
+ <img class="footer" src="doxygen.png" alt="doxygen"/>
78
+ </a> 1.8.13
79
+ </small></address>
80
+ </body>
81
+ </html>
@@ -0,0 +1,129 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
+ <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
+ <meta name="generator" content="Doxygen 1.8.13"/>
7
+ <meta name="viewport" content="width=device-width, initial-scale=1"/>
8
+ <title>Static Value-Flow Analysis: std::hash&lt; std::vector&lt; T &gt; &gt; Struct Template Reference</title>
9
+ <link href="tabs.css" rel="stylesheet" type="text/css"/>
10
+ <script type="text/javascript" src="jquery.js"></script>
11
+ <script type="text/javascript" src="dynsections.js"></script>
12
+ <link href="search/search.css" rel="stylesheet" type="text/css"/>
13
+ <script type="text/javascript" src="search/searchdata.js"></script>
14
+ <script type="text/javascript" src="search/search.js"></script>
15
+ <link href="doxygen.css" rel="stylesheet" type="text/css" />
16
+ </head>
17
+ <body>
18
+ <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
19
+ <div id="titlearea">
20
+ <table cellspacing="0" cellpadding="0">
21
+ <tbody>
22
+ <tr style="height: 56px;">
23
+ <td id="projectalign" style="padding-left: 0.5em;">
24
+ <div id="projectname">Static Value-Flow Analysis
25
+ </div>
26
+ </td>
27
+ </tr>
28
+ </tbody>
29
+ </table>
30
+ </div>
31
+ <!-- end header part -->
32
+ <!-- Generated by Doxygen 1.8.13 -->
33
+ <script type="text/javascript">
34
+ var searchBox = new SearchBox("searchBox", "search",false,'Search');
35
+ </script>
36
+ <script type="text/javascript" src="menudata.js"></script>
37
+ <script type="text/javascript" src="menu.js"></script>
38
+ <script type="text/javascript">
39
+ $(function() {
40
+ initMenu('',true,false,'search.php','Search');
41
+ $(document).ready(function() { init_search(); });
42
+ });
43
+ </script>
44
+ <div id="main-nav"></div>
45
+ <!-- window showing the filter options -->
46
+ <div id="MSearchSelectWindow"
47
+ onmouseover="return searchBox.OnSearchSelectShow()"
48
+ onmouseout="return searchBox.OnSearchSelectHide()"
49
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
50
+ </div>
51
+
52
+ <!-- iframe showing the search results (closed by default) -->
53
+ <div id="MSearchResultsWindow">
54
+ <iframe src="javascript:void(0)" frameborder="0"
55
+ name="MSearchResults" id="MSearchResults">
56
+ </iframe>
57
+ </div>
58
+
59
+ <div id="nav-path" class="navpath">
60
+ <ul>
61
+ <li class="navelem"><b>std</b></li><li class="navelem"><a class="el" href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html">hash&lt; std::vector&lt; T &gt; &gt;</a></li> </ul>
62
+ </div>
63
+ </div><!-- top -->
64
+ <div class="header">
65
+ <div class="summary">
66
+ <a href="#pub-methods">Public Member Functions</a> &#124;
67
+ <a href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4-members.html">List of all members</a> </div>
68
+ <div class="headertitle">
69
+ <div class="title">std::hash&lt; std::vector&lt; T &gt; &gt; Struct Template Reference</div> </div>
70
+ </div><!--header-->
71
+ <div class="contents">
72
+
73
+ <p><code>#include &lt;<a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>&gt;</code></p>
74
+ <table class="memberdecls">
75
+ <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
76
+ Public Member Functions</h2></td></tr>
77
+ <tr class="memitem:a921ca626d87c3eed7b71210cfc24d0dd"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html#a921ca626d87c3eed7b71210cfc24d0dd">operator()</a> (const std::vector&lt; T &gt; &amp;v) const</td></tr>
78
+ <tr class="separator:a921ca626d87c3eed7b71210cfc24d0dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
79
+ </table>
80
+ <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
81
+ <div class="textblock"><h3>template&lt;typename T&gt;<br />
82
+ struct std::hash&lt; std::vector&lt; T &gt; &gt;</h3>
83
+
84
+
85
+ <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00305">305</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
86
+ </div><h2 class="groupheader">Member Function Documentation</h2>
87
+ <a id="a921ca626d87c3eed7b71210cfc24d0dd"></a>
88
+ <h2 class="memtitle"><span class="permalink"><a href="#a921ca626d87c3eed7b71210cfc24d0dd">&#9670;&nbsp;</a></span>operator()()</h2>
89
+
90
+ <div class="memitem">
91
+ <div class="memproto">
92
+ <div class="memtemplate">
93
+ template&lt;typename T &gt; </div>
94
+ <table class="mlabels">
95
+ <tr>
96
+ <td class="mlabels-left">
97
+ <table class="memname">
98
+ <tr>
99
+ <td class="memname">size_t std::hash&lt; std::vector&lt; T &gt; &gt;::operator() </td>
100
+ <td>(</td>
101
+ <td class="paramtype">const std::vector&lt; T &gt; &amp;&#160;</td>
102
+ <td class="paramname"><em>v</em></td><td>)</td>
103
+ <td> const</td>
104
+ </tr>
105
+ </table>
106
+ </td>
107
+ <td class="mlabels-right">
108
+ <span class="mlabels"><span class="mlabel">inline</span></span> </td>
109
+ </tr>
110
+ </table>
111
+ </div><div class="memdoc">
112
+
113
+ <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00307">307</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
114
+ <div class="fragment"><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="comment">// TODO: repetition with CBV.</span></div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordtype">size_t</span> h = v.size();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;T&gt;</a> hf;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> T &amp;t : v)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; {</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; h ^= hf(t) + 0x9e3779b9 + (h &lt;&lt; 6) + (h &gt;&gt; 2);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> h;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; }</div><div class="ttc" id="structSVF_1_1Hash_html"><div class="ttname"><a href="structSVF_1_1Hash.html">SVF::Hash</a></div><div class="ttdoc">provide extra hash function for std::pair handling </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00052">SVFBasicTypes.h:52</a></div></div>
115
+ </div><!-- fragment -->
116
+ </div>
117
+ </div>
118
+ <hr/>The documentation for this struct was generated from the following file:<ul>
119
+ <li>/home/runner/work/SVF/SVF/include/Util/<a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a></li>
120
+ </ul>
121
+ </div><!-- contents -->
122
+ <!-- start footer part -->
123
+ <hr class="footer"/><address class="footer"><small>
124
+ Generated by &#160;<a href="http://www.doxygen.org/index.html">
125
+ <img class="footer" src="doxygen.png" alt="doxygen"/>
126
+ </a> 1.8.13
127
+ </small></address>
128
+ </body>
129
+ </html>
@@ -305,7 +305,7 @@ Functions</h2></td></tr>
305
305
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
306
306
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
307
307
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
308
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00096">SVFBasicTypes.h:96</a></div></div>
308
+ <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
309
309
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
310
310
  <div class="ttc" id="classSVF_1_1ICFGNode_html_ac16c5a3227a44d3b9f7c3209156d9df2"><div class="ttname"><a href="classSVF_1_1ICFGNode.html#ac16c5a3227a44d3b9f7c3209156d9df2">SVF::ICFGNode::const_iterator</a></div><div class="ttdeci">ICFGEdge::ICFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00066">ICFGNode.h:66</a></div></div>
311
311
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
@@ -354,7 +354,7 @@ Functions</h2></td></tr>
354
354
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
355
355
  <div class="ttc" id="classSVF_1_1PAG_html_a3aa1c92eb8a6fab72996964de80f19ac"><div class="ttname"><a href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">SVF::PAG::getPAGNode</a></div><div class="ttdeci">PAGNode * getPAGNode(NodeID id) const</div><div class="ttdoc">Get PAGNode ID. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00539">PAG.h:539</a></div></div>
356
356
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
357
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00096">SVFBasicTypes.h:96</a></div></div>
357
+ <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
358
358
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
359
359
  <div class="ttc" id="classSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00061">VFGNode.h:61</a></div></div>
360
360
  <div class="ttc" id="classSVF_1_1PAGNode_html"><div class="ttname"><a href="classSVF_1_1PAGNode.html">SVF::PAGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00046">PAGNode.h:46</a></div></div>
@@ -98,7 +98,7 @@ $(function() {
98
98
  <div class="ttc" id="classSVF_1_1PAG_html_a3aa1c92eb8a6fab72996964de80f19ac"><div class="ttname"><a href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">SVF::PAG::getPAGNode</a></div><div class="ttdeci">PAGNode * getPAGNode(NodeID id) const</div><div class="ttdoc">Get PAGNode ID. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00539">PAG.h:539</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1PAGBuilder_html_a757ab2c9481467842e1ad4c46a1f6291"><div class="ttname"><a href="classSVF_1_1PAGBuilder.html#a757ab2c9481467842e1ad4c46a1f6291">SVF::PAGBuilder::build</a></div><div class="ttdeci">virtual PAG * build(SVFModule *svfModule)</div><div class="ttdoc">Start building PAG here. </div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilder_8cpp_source.html#l00047">PAGBuilder.cpp:47</a></div></div>
101
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00096">SVFBasicTypes.h:96</a></div></div>
101
+ <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
102
102
  <div class="ttc" id="svf-ex_8cpp_html_a3c04138a5bfe5d72780bb7e82a18e627"><div class="ttname"><a href="svf-ex_8cpp.html#a3c04138a5bfe5d72780bb7e82a18e627">main</a></div><div class="ttdeci">int main(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00145">svf-ex.cpp:145</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
104
104
  <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00079">BasicTypes.h:79</a></div></div>
@@ -67,7 +67,7 @@ $(function() {
67
67
  <table class="memberdecls">
68
68
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
69
69
  Functions</h2></td></tr>
70
- <tr class="memitem:a7686df215f6da6fdcfa2c20950c96939"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2DDA_2CMakeLists_8txt.html#a7686df215f6da6fdcfa2c20950c96939">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="lib_2CUDD_2CMakeLists_8txt.html#a97d8d30dc013aa2acba4c146fdcb1acf">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(dvf dda.cpp) else() add_executable(dvf dda.cpp) target_link_libraries(dvf Svf Cudd $</td></tr>
70
+ <tr class="memitem:a7686df215f6da6fdcfa2c20950c96939"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2DDA_2CMakeLists_8txt.html#a7686df215f6da6fdcfa2c20950c96939">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="tools_2WPA_2CMakeLists_8txt.html#ae7f9c126d87731a942268db0cad0ac75">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(dvf dda.cpp) else() add_executable(dvf dda.cpp) target_link_libraries(dvf Svf Cudd $</td></tr>
71
71
  <tr class="separator:a7686df215f6da6fdcfa2c20950c96939"><td class="memSeparator" colspan="2">&#160;</td></tr>
72
72
  </table>
73
73
  <h2 class="groupheader">Function Documentation</h2>
@@ -67,7 +67,7 @@ $(function() {
67
67
  <table class="memberdecls">
68
68
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
69
69
  Functions</h2></td></tr>
70
- <tr class="memitem:a99a811bf6e0c9c244f0663f312a3ee41"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2Example_2CMakeLists_8txt.html#a99a811bf6e0c9c244f0663f312a3ee41">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="lib_2CUDD_2CMakeLists_8txt.html#a97d8d30dc013aa2acba4c146fdcb1acf">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(svf-ex svf-ex.cpp) else() add_executable(svf-ex svf-ex.cpp) target_link_libraries(svf-ex Svf Cudd $</td></tr>
70
+ <tr class="memitem:a99a811bf6e0c9c244f0663f312a3ee41"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2Example_2CMakeLists_8txt.html#a99a811bf6e0c9c244f0663f312a3ee41">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="tools_2WPA_2CMakeLists_8txt.html#ae7f9c126d87731a942268db0cad0ac75">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(svf-ex svf-ex.cpp) else() add_executable(svf-ex svf-ex.cpp) target_link_libraries(svf-ex Svf Cudd $</td></tr>
71
71
  <tr class="separator:a99a811bf6e0c9c244f0663f312a3ee41"><td class="memSeparator" colspan="2">&#160;</td></tr>
72
72
  </table>
73
73
  <h2 class="groupheader">Function Documentation</h2>
@@ -67,7 +67,7 @@ $(function() {
67
67
  <table class="memberdecls">
68
68
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
69
69
  Functions</h2></td></tr>
70
- <tr class="memitem:a4bd9f4b25fec671a4e18608050c47e87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2MTA_2CMakeLists_8txt.html#a4bd9f4b25fec671a4e18608050c47e87">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="lib_2CUDD_2CMakeLists_8txt.html#a97d8d30dc013aa2acba4c146fdcb1acf">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(mta mta.cpp) else() add_executable(mta mta.cpp) target_link_libraries(mta Svf Cudd $</td></tr>
70
+ <tr class="memitem:a4bd9f4b25fec671a4e18608050c47e87"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2MTA_2CMakeLists_8txt.html#a4bd9f4b25fec671a4e18608050c47e87">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="tools_2WPA_2CMakeLists_8txt.html#ae7f9c126d87731a942268db0cad0ac75">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(mta mta.cpp) else() add_executable(mta mta.cpp) target_link_libraries(mta Svf Cudd $</td></tr>
71
71
  <tr class="separator:a4bd9f4b25fec671a4e18608050c47e87"><td class="memSeparator" colspan="2">&#160;</td></tr>
72
72
  </table>
73
73
  <h2 class="groupheader">Function Documentation</h2>
@@ -67,7 +67,7 @@ $(function() {
67
67
  <table class="memberdecls">
68
68
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
69
69
  Functions</h2></td></tr>
70
- <tr class="memitem:a8090d680f76934d4cad048ea01b7fe8e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2SABER_2CMakeLists_8txt.html#a8090d680f76934d4cad048ea01b7fe8e">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="lib_2CUDD_2CMakeLists_8txt.html#a97d8d30dc013aa2acba4c146fdcb1acf">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(saber saber.cpp) else() add_executable(saber saber.cpp) target_link_libraries(saber Svf Cudd $</td></tr>
70
+ <tr class="memitem:a8090d680f76934d4cad048ea01b7fe8e"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2SABER_2CMakeLists_8txt.html#a8090d680f76934d4cad048ea01b7fe8e">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="tools_2WPA_2CMakeLists_8txt.html#ae7f9c126d87731a942268db0cad0ac75">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(saber saber.cpp) else() add_executable(saber saber.cpp) target_link_libraries(saber Svf Cudd $</td></tr>
71
71
  <tr class="separator:a8090d680f76934d4cad048ea01b7fe8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
72
72
  </table>
73
73
  <h2 class="groupheader">Function Documentation</h2>
@@ -67,28 +67,28 @@ $(function() {
67
67
  <table class="memberdecls">
68
68
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
69
69
  Functions</h2></td></tr>
70
- <tr class="memitem:a8f8a16342f9f4e608e8173ec0d0d7e0b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2WPA_2CMakeLists_8txt.html#a8f8a16342f9f4e608e8173ec0d0d7e0b">if</a> (DEFINED IN_SOURCE_BUILD) <a class="el" href="lib_2CUDD_2CMakeLists_8txt.html#a97d8d30dc013aa2acba4c146fdcb1acf">set</a>(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(wpa wpa.cpp) else() add_executable(wpa wpa.cpp) target_link_libraries(wpa Svf Cudd $</td></tr>
71
- <tr class="separator:a8f8a16342f9f4e608e8173ec0d0d7e0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
70
+ <tr class="memitem:ae7f9c126d87731a942268db0cad0ac75"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="tools_2WPA_2CMakeLists_8txt.html#ae7f9c126d87731a942268db0cad0ac75">set</a> (THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) <a class="el" href="tools_2SABER_2CMakeLists_8txt.html#a8090d680f76934d4cad048ea01b7fe8e">if</a>(DEFINED IN_SOURCE_BUILD) set(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd) add_llvm_tool(wpa wpa.cpp) else() add_executable(wpa wpa.cpp) target_link_libraries(wpa Svf Cudd $</td></tr>
71
+ <tr class="separator:ae7f9c126d87731a942268db0cad0ac75"><td class="memSeparator" colspan="2">&#160;</td></tr>
72
72
  </table>
73
73
  <h2 class="groupheader">Function Documentation</h2>
74
- <a id="a8f8a16342f9f4e608e8173ec0d0d7e0b"></a>
75
- <h2 class="memtitle"><span class="permalink"><a href="#a8f8a16342f9f4e608e8173ec0d0d7e0b">&#9670;&nbsp;</a></span>if()</h2>
74
+ <a id="ae7f9c126d87731a942268db0cad0ac75"></a>
75
+ <h2 class="memtitle"><span class="permalink"><a href="#ae7f9c126d87731a942268db0cad0ac75">&#9670;&nbsp;</a></span>set()</h2>
76
76
 
77
77
  <div class="memitem">
78
78
  <div class="memproto">
79
79
  <table class="memname">
80
80
  <tr>
81
- <td class="memname">if </td>
81
+ <td class="memname">set </td>
82
82
  <td>(</td>
83
- <td class="paramtype">DEFINED&#160;</td>
84
- <td class="paramname"><em>IN_SOURCE_BUILD</em></td><td>)</td>
83
+ <td class="paramtype">THREADS_PREFER_PTHREAD_FLAG&#160;</td>
84
+ <td class="paramname"><em>ON</em></td><td>)</td>
85
85
  <td></td>
86
86
  </tr>
87
87
  </table>
88
88
  </div><div class="memdoc">
89
89
 
90
- <p class="definition">Definition at line <a class="el" href="tools_2WPA_2CMakeLists_8txt_source.html#l00002">2</a> of file <a class="el" href="tools_2WPA_2CMakeLists_8txt_source.html">CMakeLists.txt</a>.</p>
91
- <div class="fragment"><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; {llvm_libs} )</div></div><!-- fragment -->
90
+ <p class="definition">Definition at line <a class="el" href="tools_2WPA_2CMakeLists_8txt_source.html#l00001">1</a> of file <a class="el" href="tools_2WPA_2CMakeLists_8txt_source.html">CMakeLists.txt</a>.</p>
91
+ <div class="fragment"><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; {llvm_libs} Threads::Threads )</div></div><!-- fragment -->
92
92
  </div>
93
93
  </div>
94
94
  </div><!-- contents -->
@@ -108,52 +108,52 @@ public:
108
108
 
109
109
  void dirVFEdgeStart()
110
110
  {
111
- connectDirSVFGEdgeTimeStart = CLOCK_IN_MS();
111
+ connectDirSVFGEdgeTimeStart = PTAStat::getClk(true);
112
112
  }
113
113
 
114
114
  void dirVFEdgeEnd()
115
115
  {
116
- connectDirSVFGEdgeTimeEnd = CLOCK_IN_MS();
116
+ connectDirSVFGEdgeTimeEnd = PTAStat::getClk(true);
117
117
  }
118
118
 
119
119
  void indVFEdgeStart()
120
120
  {
121
- connectIndSVFGEdgeTimeStart = CLOCK_IN_MS();
121
+ connectIndSVFGEdgeTimeStart = PTAStat::getClk(true);
122
122
  }
123
123
 
124
124
  void indVFEdgeEnd()
125
125
  {
126
- connectIndSVFGEdgeTimeEnd = CLOCK_IN_MS();
126
+ connectIndSVFGEdgeTimeEnd = PTAStat::getClk(true);
127
127
  }
128
128
 
129
129
  void TLVFNodeStart()
130
130
  {
131
- addTopLevelNodeTimeStart = CLOCK_IN_MS();
131
+ addTopLevelNodeTimeStart = PTAStat::getClk(true);
132
132
  }
133
133
 
134
134
  void TLVFNodeEnd()
135
135
  {
136
- addTopLevelNodeTimeEnd = CLOCK_IN_MS();
136
+ addTopLevelNodeTimeEnd = PTAStat::getClk(true);
137
137
  }
138
138
 
139
139
  void ATVFNodeStart()
140
140
  {
141
- addAddrTakenNodeTimeStart = CLOCK_IN_MS();
141
+ addAddrTakenNodeTimeStart = PTAStat::getClk(true);
142
142
  }
143
143
 
144
144
  void ATVFNodeEnd()
145
145
  {
146
- addAddrTakenNodeTimeEnd = CLOCK_IN_MS();
146
+ addAddrTakenNodeTimeEnd = PTAStat::getClk(true);
147
147
  }
148
148
 
149
149
  void sfvgOptStart()
150
150
  {
151
- svfgOptTimeStart = CLOCK_IN_MS();
151
+ svfgOptTimeStart = PTAStat::getClk(true);
152
152
  }
153
153
 
154
154
  void sfvgOptEnd()
155
155
  {
156
- svfgOptTimeEnd = CLOCK_IN_MS();
156
+ svfgOptTimeEnd = PTAStat::getClk(true);
157
157
  }
158
158
 
159
159
  private:
@@ -122,16 +122,22 @@ public:
122
122
 
123
123
  typedef Map<const char*,double> TIMEStatMap;
124
124
 
125
+ enum ClockType
126
+ {
127
+ Wall,
128
+ CPU,
129
+ };
130
+
125
131
  PTAStat(PointerAnalysis* p);
126
132
  virtual ~PTAStat() {}
127
133
 
128
134
  virtual inline void startClk()
129
135
  {
130
- startTime = CLOCK_IN_MS();
136
+ startTime = getClk(true);
131
137
  }
132
138
  virtual inline void endClk()
133
139
  {
134
- endTime = CLOCK_IN_MS();
140
+ endTime = getClk(true);
135
141
  }
136
142
  /// When mark is true, real clock is always returned. When mark is false, it is
137
143
  /// only returned when Options::MarkedClocksOnly is not set.
@@ -200,6 +200,14 @@ private:
200
200
  std::vector<Word> words;
201
201
  };
202
202
 
203
+ template <>
204
+ struct Hash<CoreBitVector>
205
+ {
206
+ size_t operator()(const CoreBitVector &cbv) const {
207
+ return cbv.hash();
208
+ }
209
+ };
210
+
203
211
  };
204
212
 
205
213
  #endif // COREBITVECTOR_H_
@@ -5,6 +5,7 @@
5
5
 
6
6
  #include <sstream>
7
7
  #include "FastCluster/fastcluster.h"
8
+ #include "MemoryModel/PTAStat.h"
8
9
  #include "MemoryModel/PointerAnalysisImpl.h"
9
10
  #include "Util/NodeIDAllocator.h"
10
11
  #include "MSSA/MemSSA.h"
@@ -19,6 +20,8 @@ class Options
19
20
  public:
20
21
  Options(void) = delete;
21
22
 
23
+ static const llvm::cl::opt<enum PTAStat::ClockType> ClockType;
24
+
22
25
  /// If set, only return the clock when getClk is called as getClk(true).
23
26
  /// Retrieving the clock is slow but it should be fine for a few calls.
24
27
  /// This is good for benchmarking when we don't need to know how long processLoad
@@ -70,6 +73,9 @@ public:
70
73
  /// Time limit for the Andersen's analyses.
71
74
  static const llvm::cl::opt<unsigned> AnderTimeLimit;
72
75
 
76
+ /// Number of threads for the versioning phase.
77
+ static const llvm::cl::opt<unsigned> VersioningThreads;
78
+
73
79
  // ContextDDA.cpp
74
80
  static const llvm::cl::opt<unsigned long long> CxtBudget;
75
81
 
@@ -82,7 +82,6 @@ typedef u32_t EdgeID;
82
82
  typedef unsigned SymID;
83
83
  typedef unsigned CallSiteID;
84
84
  typedef unsigned ThreadID;
85
- typedef unsigned Version;
86
85
 
87
86
  typedef llvm::SparseBitVector<> NodeBS;
88
87
  typedef llvm::SparseBitVector<> SparseBitVector;
@@ -111,7 +110,6 @@ template <typename T, unsigned N>
111
110
  using SmallVector = llvm::SmallVector<T, N>;
112
111
 
113
112
  typedef std::pair<NodeID, NodeID> NodePair;
114
- typedef std::pair<NodeID, Version> VersionedVar;
115
113
  typedef OrderedSet<NodeID> OrderedNodeSet;
116
114
  typedef Set<NodeID> NodeSet;
117
115
  typedef Set<NodePair> NodePairSet;
@@ -127,6 +125,11 @@ typedef NodeSet EdgeSet;
127
125
  typedef SmallVector16 CallStrCxt;
128
126
  typedef llvm::StringMap<u32_t> StringMap;
129
127
 
128
+ typedef unsigned Version;
129
+ typedef Set<Version> VersionSet;
130
+ typedef std::pair<NodeID, Version> VersionedVar;
131
+ typedef Set<VersionedVar> VersionedVarSet;
132
+
130
133
  // TODO: be explicit that this is a pair of 32-bit unsigneds?
131
134
  template <> struct Hash<NodePair>
132
135
  {
@@ -298,4 +301,21 @@ struct std::hash<llvm::SparseBitVector<N>>
298
301
  }
299
302
  };
300
303
 
304
+ template <typename T>
305
+ struct std::hash<std::vector<T>>
306
+ {
307
+ size_t operator()(const std::vector<T> &v) const {
308
+ // TODO: repetition with CBV.
309
+ size_t h = v.size();
310
+
311
+ SVF::Hash<T> hf;
312
+ for (const T &t : v)
313
+ {
314
+ h ^= hf(t) + 0x9e3779b9 + (h << 6) + (h >> 2);
315
+ }
316
+
317
+ return h;
318
+ }
319
+ };
320
+
301
321
  #endif /* INCLUDE_UTIL_SVFBASICTYPES_H_ */