svf-tools 1.0.306 → 1.0.310

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 (237) hide show
  1. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +3 -3
  4. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +9 -9
  6. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  7. package/SVF-doxygen/html/html/BasicTypes_8h_source.html +8 -8
  8. package/SVF-doxygen/html/html/CHG_8cpp_source.html +5 -5
  9. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +9 -9
  11. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
  12. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  13. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +5 -5
  14. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +4 -4
  15. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  18. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +5 -5
  19. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
  20. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  21. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +7 -7
  23. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +4 -4
  25. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  27. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
  28. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +2 -2
  29. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  30. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/MHP_8cpp_source.html +6 -6
  32. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  33. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
  35. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +4 -4
  37. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +3 -3
  39. package/SVF-doxygen/html/html/PAG_8cpp_source.html +3 -3
  40. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -7
  43. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +3 -3
  44. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +25 -22
  45. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
  46. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +18 -14
  47. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +68 -68
  48. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  50. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +23 -23
  52. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +23 -23
  53. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
  54. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +2 -2
  55. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +2 -2
  56. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  57. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -7
  59. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +4 -4
  60. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +2 -2
  62. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +3 -3
  63. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  64. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  65. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  66. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  67. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
  69. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
  71. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  72. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  73. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  74. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  75. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +12 -12
  76. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +9 -9
  77. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +2 -2
  78. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +5 -5
  79. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +4 -4
  80. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -2
  81. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +2 -2
  82. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
  83. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +81 -78
  84. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  85. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  86. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +11 -11
  87. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +2 -2
  88. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  89. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  90. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  91. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
  92. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -20
  93. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  94. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  95. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  96. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  97. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +6 -6
  98. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +24 -24
  99. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  100. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +12 -12
  101. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +36 -36
  102. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
  103. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +13 -13
  104. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +4 -4
  105. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  106. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  107. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  108. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  109. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  110. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  111. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
  112. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  113. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  114. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  115. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  116. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  117. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +2 -2
  118. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  119. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1 -1
  121. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
  124. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +16 -16
  126. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +6 -6
  127. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  128. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +7 -7
  129. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  130. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +1 -1
  131. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +8 -8
  132. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +4 -4
  133. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +15 -15
  134. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
  135. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
  136. package/SVF-doxygen/html/html/classSVF_1_1NormalGepPE.html +1 -1
  137. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +29 -29
  140. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  141. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +18 -17
  145. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +4 -4
  146. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +19 -16
  149. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +188 -95
  150. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
  151. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +2 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
  156. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +8 -8
  157. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +4 -4
  158. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  159. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
  160. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +3 -3
  161. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
  162. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  164. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  165. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  166. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +7 -7
  167. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  168. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +13 -13
  169. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +9 -9
  170. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  171. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1VariantGepPE.html +1 -1
  180. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +7 -7
  181. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
  182. package/SVF-doxygen/html/html/functions_c.html +10 -10
  183. package/SVF-doxygen/html/html/functions_f.html +1 -1
  184. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  185. package/SVF-doxygen/html/html/functions_i.html +5 -5
  186. package/SVF-doxygen/html/html/functions_o.html +3 -3
  187. package/SVF-doxygen/html/html/functions_p.html +23 -20
  188. package/SVF-doxygen/html/html/functions_r.html +6 -4
  189. package/SVF-doxygen/html/html/functions_s.html +8 -8
  190. package/SVF-doxygen/html/html/functions_t.html +6 -6
  191. package/SVF-doxygen/html/html/functions_u.html +3 -3
  192. package/SVF-doxygen/html/html/functions_v.html +3 -3
  193. package/SVF-doxygen/html/html/functions_vars_p.html +9 -0
  194. package/SVF-doxygen/html/html/globals_func_i.html +8 -8
  195. package/SVF-doxygen/html/html/globals_func_s.html +6 -6
  196. package/SVF-doxygen/html/html/globals_s.html +12 -14
  197. package/SVF-doxygen/html/html/namespaceSVF.html +2 -2
  198. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +10 -9
  199. package/SVF-doxygen/html/html/search/all_10.js +12 -9
  200. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  201. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  202. package/SVF-doxygen/html/html/search/all_14.js +4 -4
  203. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  204. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  205. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  206. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  207. package/SVF-doxygen/html/html/search/all_9.js +3 -3
  208. package/SVF-doxygen/html/html/search/all_e.js +4 -4
  209. package/SVF-doxygen/html/html/search/all_f.js +1 -1
  210. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  211. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  212. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  213. package/SVF-doxygen/html/html/search/variables_10.js +3 -0
  214. package/SVF-doxygen/html/html/search/variables_14.js +2 -2
  215. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  216. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +1 -1
  217. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  218. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +1 -1
  219. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  220. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SmallVector_3_01T_00_01N_01_4_01_4.html +3 -3
  221. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  222. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  223. package/SVF-doxygen/html/html/tools_2DDA_2CMakeLists_8txt.html +1 -1
  224. package/SVF-doxygen/html/html/tools_2Example_2CMakeLists_8txt.html +1 -1
  225. package/SVF-doxygen/html/html/tools_2MTA_2CMakeLists_8txt.html +1 -1
  226. package/SVF-doxygen/html/html/tools_2SABER_2CMakeLists_8txt.html +1 -1
  227. package/SVF-doxygen/html/html/tools_2WPA_2CMakeLists_8txt.html +9 -9
  228. package/include/MemoryModel/PersistentPointsToCache.h +43 -34
  229. package/include/MemoryModel/PointerAnalysisImpl.h +1 -5
  230. package/include/Util/SVFBasicTypes.h +4 -2
  231. package/lib/MemoryModel/PointerAnalysisImpl.cpp +7 -0
  232. package/lib/MemoryModel/PointsTo.cpp +3 -3
  233. package/lib/Util/PTAStat.cpp +3 -4
  234. package/lib/Util/SVFUtil.cpp +1 -0
  235. package/lib/WPA/FlowSensitive.cpp +1 -1
  236. package/package.json +1 -1
  237. package/tools/WPA/CMakeLists.txt +3 -1
@@ -82,7 +82,7 @@ Public Member Functions</h2></td></tr>
82
82
  struct std::hash&lt; std::vector&lt; T &gt; &gt;</h3>
83
83
 
84
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>
85
+ <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>
86
86
  </div><h2 class="groupheader">Member Function Documentation</h2>
87
87
  <a id="a921ca626d87c3eed7b71210cfc24d0dd"></a>
88
88
  <h2 class="memtitle"><span class="permalink"><a href="#a921ca626d87c3eed7b71210cfc24d0dd">&#9670;&nbsp;</a></span>operator()()</h2>
@@ -110,8 +110,8 @@ template&lt;typename T &gt; </div>
110
110
  </table>
111
111
  </div><div class="memdoc">
112
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>
113
+ <p class="definition">Definition at line <a class="el" href="SVFBasicTypes_8h_source.html#l00309">309</a> of file <a class="el" href="SVFBasicTypes_8h_source.html">SVFBasicTypes.h</a>.</p>
114
+ <div class="fragment"><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="comment">// TODO: repetition with CBV.</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordtype">size_t</span> h = v.size();</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="structSVF_1_1Hash.html">SVF::Hash&lt;T&gt;</a> hf;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> T &amp;t : v)</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; h ^= hf(t) + 0x9e3779b9 + (h &lt;&lt; 6) + (h &gt;&gt; 2);</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; }</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> h;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</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
115
  </div><!-- fragment -->
116
116
  </div>
117
117
  </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 -->
@@ -138,7 +138,7 @@ public:
138
138
  if (lhs != result)
139
139
  {
140
140
  unionCache[std::minmax(lhs, result)] = result;
141
- ++propertyUnions;
141
+ ++preemptiveUnions;
142
142
  ++totalUnions;
143
143
  }
144
144
 
@@ -146,7 +146,7 @@ public:
146
146
  if (rhs != result)
147
147
  {
148
148
  unionCache[std::minmax(rhs, result)] = result;
149
- ++propertyUnions;
149
+ ++preemptiveUnions;
150
150
  ++totalUnions;
151
151
  }
152
152
  } else ++lookupUnions;
@@ -195,17 +195,17 @@ public:
195
195
  {
196
196
  // result AND rhs = EMPTY_SET,
197
197
  intersectionCache[std::minmax(result, rhs)] = emptyPointsToId();
198
- ++propertyIntersections;
198
+ ++preemptiveIntersections;
199
199
  ++totalIntersections;
200
200
 
201
201
  // and result AND lhs = result,
202
202
  intersectionCache[std::minmax(result, lhs)] = result;
203
- ++propertyIntersections;
203
+ ++preemptiveIntersections;
204
204
  ++totalIntersections;
205
205
 
206
206
  // and result - rhs = result.
207
207
  complementCache[std::make_pair(result, rhs)] = result;
208
- ++propertyComplements;
208
+ ++preemptiveComplements;
209
209
  ++totalComplements;
210
210
  }
211
211
  } else ++lookupComplements;
@@ -252,7 +252,7 @@ public:
252
252
  if (result != rhs)
253
253
  {
254
254
  intersectionCache[std::minmax(result, rhs)] = result;
255
- ++propertyIntersections;
255
+ ++preemptiveIntersections;
256
256
  ++totalIntersections;
257
257
  }
258
258
 
@@ -260,7 +260,7 @@ public:
260
260
  if (result != lhs)
261
261
  {
262
262
  intersectionCache[std::minmax(result, lhs)] = result;
263
- ++propertyIntersections;
263
+ ++preemptiveIntersections;
264
264
  ++totalIntersections;
265
265
  }
266
266
 
@@ -269,7 +269,7 @@ public:
269
269
  if (result != emptyPointsToId() && result != lhs)
270
270
  {
271
271
  unionCache[std::minmax(lhs, result)] = lhs;
272
- ++propertyUnions;
272
+ ++preemptiveUnions;
273
273
  ++totalUnions;
274
274
  }
275
275
 
@@ -277,7 +277,7 @@ public:
277
277
  if (result != emptyPointsToId() && result != rhs)
278
278
  {
279
279
  unionCache[std::minmax(rhs, result)] = rhs;
280
- ++propertyUnions;
280
+ ++preemptiveUnions;
281
281
  ++totalUnions;
282
282
  }
283
283
  }
@@ -294,22 +294,25 @@ public:
294
294
 
295
295
  std::cout << "****Persistent Points-To Cache Statistics: " << subtitle << "****\n";
296
296
 
297
- std::cout << std::setw(fieldWidth) << "UniquePointsToSets" << idToPts.size() << "\n";
297
+ std::cout << std::setw(fieldWidth) << "UniquePointsToSets" << idToPts.size() << "\n";
298
298
 
299
- std::cout << std::setw(fieldWidth) << "TotalUnions" << totalUnions << "\n";
300
- std::cout << std::setw(fieldWidth) << "PropertyUnions" << propertyUnions << "\n";
301
- std::cout << std::setw(fieldWidth) << "UniqueUnions" << uniqueUnions << "\n";
302
- std::cout << std::setw(fieldWidth) << "LookupUnions" << lookupUnions << "\n";
299
+ std::cout << std::setw(fieldWidth) << "TotalUnions" << totalUnions << "\n";
300
+ std::cout << std::setw(fieldWidth) << "PropertyUnions" << propertyUnions << "\n";
301
+ std::cout << std::setw(fieldWidth) << "UniqueUnions" << uniqueUnions << "\n";
302
+ std::cout << std::setw(fieldWidth) << "LookupUnions" << lookupUnions << "\n";
303
+ std::cout << std::setw(fieldWidth) << "PreemptiveUnions" << preemptiveUnions << "\n";
303
304
 
304
- std::cout << std::setw(fieldWidth) << "TotalComplements" << totalComplements << "\n";
305
- std::cout << std::setw(fieldWidth) << "PropertyComplements" << propertyComplements << "\n";
306
- std::cout << std::setw(fieldWidth) << "UniqueComplements" << uniqueComplements << "\n";
307
- std::cout << std::setw(fieldWidth) << "LookupComplements" << lookupComplements << "\n";
305
+ std::cout << std::setw(fieldWidth) << "TotalComplements" << totalComplements << "\n";
306
+ std::cout << std::setw(fieldWidth) << "PropertyComplements" << propertyComplements << "\n";
307
+ std::cout << std::setw(fieldWidth) << "UniqueComplements" << uniqueComplements << "\n";
308
+ std::cout << std::setw(fieldWidth) << "LookupComplements" << lookupComplements << "\n";
309
+ std::cout << std::setw(fieldWidth) << "PreemptiveComplements" << preemptiveComplements << "\n";
308
310
 
309
- std::cout << std::setw(fieldWidth) << "TotalIntersections" << totalIntersections << "\n";
310
- std::cout << std::setw(fieldWidth) << "PropertyIntersections" << propertyIntersections << "\n";
311
- std::cout << std::setw(fieldWidth) << "UniqueIntersections" << uniqueIntersections << "\n";
312
- std::cout << std::setw(fieldWidth) << "LookupIntersections" << lookupIntersections << "\n";
311
+ std::cout << std::setw(fieldWidth) << "TotalIntersections" << totalIntersections << "\n";
312
+ std::cout << std::setw(fieldWidth) << "PropertyIntersections" << propertyIntersections << "\n";
313
+ std::cout << std::setw(fieldWidth) << "UniqueIntersections" << uniqueIntersections << "\n";
314
+ std::cout << std::setw(fieldWidth) << "LookupIntersections" << lookupIntersections << "\n";
315
+ std::cout << std::setw(fieldWidth) << "PreemptiveIntersections" << preemptiveIntersections << "\n";
313
316
 
314
317
  std::cout.flush();
315
318
  }
@@ -379,18 +382,21 @@ private:
379
382
  inline void initStats(void)
380
383
  {
381
384
 
382
- totalUnions = 0;
383
- uniqueUnions = 0;
384
- propertyUnions = 0;
385
- lookupUnions = 0;
386
- totalComplements = 0;
387
- uniqueComplements = 0;
388
- propertyComplements = 0;
389
- lookupComplements = 0;
390
- totalIntersections = 0;
391
- uniqueIntersections = 0;
392
- propertyIntersections = 0;
393
- lookupIntersections = 0;
385
+ totalUnions = 0;
386
+ uniqueUnions = 0;
387
+ propertyUnions = 0;
388
+ lookupUnions = 0;
389
+ preemptiveUnions = 0;
390
+ totalComplements = 0;
391
+ uniqueComplements = 0;
392
+ propertyComplements = 0;
393
+ lookupComplements = 0;
394
+ preemptiveComplements = 0;
395
+ totalIntersections = 0;
396
+ uniqueIntersections = 0;
397
+ propertyIntersections = 0;
398
+ lookupIntersections = 0;
399
+ preemptiveIntersections = 0;
394
400
  }
395
401
 
396
402
  private:
@@ -418,14 +424,17 @@ private:
418
424
  u64_t uniqueUnions;
419
425
  u64_t propertyUnions;
420
426
  u64_t lookupUnions;
427
+ u64_t preemptiveUnions;
421
428
  u64_t totalComplements;
422
429
  u64_t uniqueComplements;
423
430
  u64_t propertyComplements;
424
431
  u64_t lookupComplements;
432
+ u64_t preemptiveComplements;
425
433
  u64_t totalIntersections;
426
434
  u64_t uniqueIntersections;
427
435
  u64_t propertyIntersections;
428
436
  u64_t lookupIntersections;
437
+ u64_t preemptiveIntersections;
429
438
  };
430
439
 
431
440
  } // End namespace SVF
@@ -165,11 +165,7 @@ protected:
165
165
 
166
166
 
167
167
  /// Finalization of pointer analysis, and normalize points-to information to Bit Vector representation
168
- virtual void finalize()
169
- {
170
- normalizePointsTo();
171
- PointerAnalysis::finalize();
172
- }
168
+ virtual void finalize();
173
169
 
174
170
  /// Update callgraph. This should be implemented by its subclass.
175
171
  virtual inline bool updateCallGraph(const CallSiteToFunPtrMap&)
@@ -138,7 +138,9 @@ template <> struct Hash<NodePair>
138
138
  // and u64_t. If NodeID is not actually u32_t or size_t
139
139
  // is not u64_t we should be fine since we get a
140
140
  // consistent result.
141
- return ((uint64_t)(p.first) << 32) | (uint64_t)(p.second);
141
+ uint32_t first = (uint32_t)(p.first);
142
+ uint32_t second = (uint32_t)(p.second);
143
+ return ((uint64_t)(first) << 32) | (uint64_t)(second);
142
144
  }
143
145
  };
144
146
 
@@ -266,7 +268,7 @@ template <> struct std::hash<SVF::NodePair> {
266
268
  // consistent result.
267
269
  uint32_t first = (uint32_t)(p.first);
268
270
  uint32_t second = (uint32_t)(p.second);
269
- return ((uint64_t)(p.first) << 32) | (uint64_t)(p.second);
271
+ return ((uint64_t)(first) << 32) | (uint64_t)(second);
270
272
  }
271
273
  };
272
274
 
@@ -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)
@@ -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
  /*!
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.306",
3
+ "version": "1.0.310",
4
4
  "description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,3 +1,5 @@
1
+ set(THREADS_PREFER_PTHREAD_FLAG ON)
2
+ find_package(Threads REQUIRED)
1
3
 
2
4
  if(DEFINED IN_SOURCE_BUILD)
3
5
  set(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd)
@@ -5,7 +7,7 @@ if(DEFINED IN_SOURCE_BUILD)
5
7
  else()
6
8
  add_executable( wpa wpa.cpp )
7
9
 
8
- target_link_libraries( wpa Svf Cudd ${llvm_libs} )
10
+ target_link_libraries( wpa Svf Cudd ${llvm_libs} Threads::Threads )
9
11
 
10
12
  set_target_properties( wpa PROPERTIES
11
13
  RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )