svf-tools 1.0.613 → 1.0.615

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 (542) hide show
  1. package/CMakeLists.txt +13 -0
  2. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -6
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +15 -15
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +22 -22
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +16 -16
  9. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +7 -7
  11. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +6 -6
  12. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +11 -11
  16. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +5 -5
  19. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +14 -14
  22. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  24. package/SVF-doxygen/html/html/ConsG_8h_source.html +9 -9
  25. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +18 -18
  26. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +9 -9
  27. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +4 -4
  28. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  29. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
  30. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -6
  32. package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
  33. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +9 -9
  34. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +22 -22
  36. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +21 -21
  40. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  41. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
  43. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
  44. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
  45. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -28
  46. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +65 -65
  47. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  50. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  51. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
  52. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
  54. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -3
  55. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +24 -29
  56. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +8 -8
  57. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
  59. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  60. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
  61. package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
  63. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  64. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
  66. package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +17 -17
  68. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +8 -8
  69. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  70. package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -17
  71. package/SVF-doxygen/html/html/MTA_8h_source.html +3 -4
  72. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +10 -10
  73. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +34 -34
  75. package/SVF-doxygen/html/html/MemRegion_8h_source.html +7 -7
  76. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -15
  77. package/SVF-doxygen/html/html/MemSSA_8h_source.html +53 -52
  78. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -8
  79. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +7 -7
  80. package/SVF-doxygen/html/html/Options_8cpp_source.html +52 -53
  81. package/SVF-doxygen/html/html/Options_8h_source.html +53 -54
  82. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
  84. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
  86. package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +33 -33
  88. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +91 -95
  89. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +31 -39
  90. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +85 -92
  91. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +20 -20
  92. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +16 -16
  93. package/SVF-doxygen/html/html/PointsTo_8cpp.html +1 -0
  94. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +51 -51
  95. package/SVF-doxygen/html/html/PointsTo_8h_source.html +38 -38
  96. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
  97. package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
  98. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +11 -22
  99. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +14 -17
  100. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
  103. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +21 -19
  104. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -5
  105. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +18 -18
  106. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +49 -62
  107. package/SVF-doxygen/html/html/SVFG_8h_source.html +45 -45
  108. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
  109. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -8
  110. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +3 -3
  111. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -16
  112. package/SVF-doxygen/html/html/SVFIR_8h_source.html +83 -83
  113. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +19 -19
  114. package/SVF-doxygen/html/html/SVFType_8h.html +22 -22
  115. package/SVF-doxygen/html/html/SVFType_8h_source.html +76 -77
  116. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +5 -5
  117. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +11 -11
  118. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +5 -5
  119. package/SVF-doxygen/html/html/SVFValue_8h_source.html +6 -6
  120. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  121. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +6 -6
  123. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
  124. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +15 -15
  125. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -3
  126. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +69 -71
  127. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
  128. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +39 -39
  129. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  130. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
  131. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +49 -51
  132. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
  133. package/SVF-doxygen/html/html/TCT_8cpp_source.html +4 -4
  134. package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
  135. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -8
  136. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
  137. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  138. package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
  139. package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
  140. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
  141. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +33 -33
  142. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  143. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +11 -11
  144. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +12 -12
  145. package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
  146. package/SVF-doxygen/html/html/WPASolver_8h_source.html +25 -25
  147. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
  148. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -5
  149. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -5
  150. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +187 -188
  155. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +104 -107
  156. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +163 -164
  157. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +47 -50
  158. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +194 -195
  159. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +45 -48
  160. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +204 -205
  161. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +35 -38
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
  163. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +191 -192
  164. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +29 -32
  165. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +122 -123
  166. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +158 -219
  167. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +137 -138
  169. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +57 -49
  170. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +138 -139
  171. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +34 -34
  172. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +7 -7
  173. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +140 -141
  175. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +30 -30
  176. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +8 -8
  177. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1CallSite-members.html +1 -1
  179. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +10 -10
  180. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  181. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +114 -114
  182. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
  183. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  184. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +28 -28
  185. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  186. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
  187. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
  188. package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +17 -31
  190. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
  191. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +40 -40
  192. package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +15 -15
  193. package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +4 -4
  194. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +11 -11
  195. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
  196. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  197. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
  198. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +228 -229
  200. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +62 -65
  201. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
  202. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +17 -17
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +194 -195
  204. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +55 -55
  205. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +219 -220
  206. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +335 -342
  207. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +57 -57
  208. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +6 -6
  209. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
  210. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
  212. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
  214. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
  216. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
  217. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +4 -4
  218. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
  219. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  220. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +8 -8
  221. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +1 -1
  222. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +20 -14
  223. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +4 -4
  224. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +108 -94
  225. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
  226. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +36 -36
  227. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
  228. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
  229. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
  230. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
  231. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
  232. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +87 -87
  233. package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +27 -33
  235. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +21 -21
  236. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
  237. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +41 -43
  238. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +57 -80
  239. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  240. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
  241. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
  242. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +4 -3
  243. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +170 -143
  244. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +16 -16
  245. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
  246. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData-members.html +3 -3
  247. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +13 -15
  248. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
  249. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
  250. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
  251. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +17 -18
  253. package/SVF-doxygen/html/html/classSVF_1_1Options.html +53 -79
  254. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  257. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
  258. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
  259. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +4 -4
  260. package/SVF-doxygen/html/html/classSVF_1_1PTData.html +11 -11
  261. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData-members.html +28 -28
  262. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +174 -177
  263. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData-members.html +17 -17
  264. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +99 -102
  265. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData-members.html +30 -30
  266. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +125 -127
  267. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData-members.html +13 -13
  268. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +83 -86
  269. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +122 -122
  271. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData-members.html +22 -22
  272. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +137 -140
  273. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +56 -56
  274. package/SVF-doxygen/html/html/classSVF_1_1PointsTo-members.html +16 -16
  275. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +183 -178
  276. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +7 -7
  277. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +87 -65
  278. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +6 -6
  279. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
  280. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
  281. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +4 -4
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -6
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +3 -3
  285. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +13 -16
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +1 -1
  287. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +2 -2
  288. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +2 -2
  290. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +3 -3
  292. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +1 -1
  293. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +2 -2
  294. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +2 -2
  296. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +5 -7
  302. package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -9
  303. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +211 -236
  305. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +7 -9
  306. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +50 -138
  307. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
  308. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +82 -82
  309. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
  310. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +2 -2
  312. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +203 -215
  314. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +13 -13
  315. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
  316. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +1 -1
  317. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +4 -4
  318. package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -5
  319. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo-members.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +5 -5
  321. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +2 -2
  323. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +0 -4
  324. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +5 -5
  325. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +3 -3
  327. package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -9
  328. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +19 -19
  329. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -5
  330. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +38 -38
  331. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +4 -5
  333. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
  334. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +1 -1
  335. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +2 -2
  336. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +9 -9
  337. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +12 -14
  338. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +42 -68
  339. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
  340. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +108 -109
  341. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +1 -1
  342. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +50 -50
  343. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +6 -6
  344. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +146 -146
  345. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +5 -5
  346. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +48 -61
  347. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +178 -179
  348. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +35 -38
  349. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  350. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
  351. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +42 -46
  352. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +10 -10
  353. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
  354. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +169 -170
  355. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +31 -34
  356. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  357. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
  358. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +263 -264
  359. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +112 -115
  360. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +41 -41
  361. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  362. package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +9 -9
  363. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +2 -2
  364. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +9 -9
  365. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver-members.html +2 -2
  366. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +15 -15
  367. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +25 -25
  368. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver-members.html +2 -2
  369. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +17 -17
  370. package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +2 -2
  371. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +76 -81
  372. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +2 -2
  373. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  374. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  375. package/SVF-doxygen/html/html/functions.html +1 -1
  376. package/SVF-doxygen/html/html/functions_0x7e.html +16 -16
  377. package/SVF-doxygen/html/html/functions_a.html +7 -7
  378. package/SVF-doxygen/html/html/functions_b.html +6 -6
  379. package/SVF-doxygen/html/html/functions_c.html +27 -27
  380. package/SVF-doxygen/html/html/functions_d.html +10 -11
  381. package/SVF-doxygen/html/html/functions_e.html +2 -2
  382. package/SVF-doxygen/html/html/functions_f.html +6 -6
  383. package/SVF-doxygen/html/html/functions_func.html +6 -6
  384. package/SVF-doxygen/html/html/functions_func_0x7e.html +16 -16
  385. package/SVF-doxygen/html/html/functions_func_b.html +6 -6
  386. package/SVF-doxygen/html/html/functions_func_c.html +27 -27
  387. package/SVF-doxygen/html/html/functions_func_d.html +10 -11
  388. package/SVF-doxygen/html/html/functions_func_e.html +2 -2
  389. package/SVF-doxygen/html/html/functions_func_f.html +5 -5
  390. package/SVF-doxygen/html/html/functions_func_g.html +22 -22
  391. package/SVF-doxygen/html/html/functions_func_h.html +3 -3
  392. package/SVF-doxygen/html/html/functions_func_i.html +3 -3
  393. package/SVF-doxygen/html/html/functions_func_o.html +3 -3
  394. package/SVF-doxygen/html/html/functions_func_p.html +5 -5
  395. package/SVF-doxygen/html/html/functions_func_r.html +5 -8
  396. package/SVF-doxygen/html/html/functions_func_s.html +6 -6
  397. package/SVF-doxygen/html/html/functions_func_t.html +1 -1
  398. package/SVF-doxygen/html/html/functions_func_u.html +23 -23
  399. package/SVF-doxygen/html/html/functions_g.html +25 -28
  400. package/SVF-doxygen/html/html/functions_h.html +3 -3
  401. package/SVF-doxygen/html/html/functions_i.html +6 -6
  402. package/SVF-doxygen/html/html/functions_m.html +1 -1
  403. package/SVF-doxygen/html/html/functions_o.html +13 -13
  404. package/SVF-doxygen/html/html/functions_p.html +19 -19
  405. package/SVF-doxygen/html/html/functions_r.html +11 -12
  406. package/SVF-doxygen/html/html/functions_s.html +33 -36
  407. package/SVF-doxygen/html/html/functions_t.html +12 -12
  408. package/SVF-doxygen/html/html/functions_type_t.html +1 -1
  409. package/SVF-doxygen/html/html/functions_u.html +26 -23
  410. package/SVF-doxygen/html/html/functions_v.html +6 -6
  411. package/SVF-doxygen/html/html/functions_vars.html +1 -1
  412. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  413. package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
  414. package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
  415. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  416. package/SVF-doxygen/html/html/functions_vars_p.html +2 -2
  417. package/SVF-doxygen/html/html/functions_vars_s.html +5 -8
  418. package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
  419. package/SVF-doxygen/html/html/functions_vars_u.html +3 -0
  420. package/SVF-doxygen/html/html/functions_w.html +3 -7
  421. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  422. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  423. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  424. package/SVF-doxygen/html/html/namespaceSVF.html +35 -35
  425. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +2 -2
  426. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +4 -4
  427. package/SVF-doxygen/html/html/saber_8cpp.html +1 -5
  428. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -5
  429. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  430. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  431. package/SVF-doxygen/html/html/search/all_10.js +15 -15
  432. package/SVF-doxygen/html/html/search/all_11.js +1 -2
  433. package/SVF-doxygen/html/html/search/all_12.js +20 -21
  434. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  435. package/SVF-doxygen/html/html/search/all_14.js +13 -12
  436. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  437. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  438. package/SVF-doxygen/html/html/search/all_19.js +16 -16
  439. package/SVF-doxygen/html/html/search/all_2.js +6 -6
  440. package/SVF-doxygen/html/html/search/all_3.js +14 -14
  441. package/SVF-doxygen/html/html/search/all_4.js +5 -5
  442. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  443. package/SVF-doxygen/html/html/search/all_6.js +5 -5
  444. package/SVF-doxygen/html/html/search/all_7.js +11 -12
  445. package/SVF-doxygen/html/html/search/all_8.js +3 -3
  446. package/SVF-doxygen/html/html/search/all_9.js +4 -4
  447. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  448. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  449. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  450. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  451. package/SVF-doxygen/html/html/search/all_f.js +5 -5
  452. package/SVF-doxygen/html/html/search/functions_0.js +4 -4
  453. package/SVF-doxygen/html/html/search/functions_1.js +6 -6
  454. package/SVF-doxygen/html/html/search/functions_10.js +1 -2
  455. package/SVF-doxygen/html/html/search/functions_11.js +11 -11
  456. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  457. package/SVF-doxygen/html/html/search/functions_13.js +12 -12
  458. package/SVF-doxygen/html/html/search/functions_17.js +16 -16
  459. package/SVF-doxygen/html/html/search/functions_2.js +14 -14
  460. package/SVF-doxygen/html/html/search/functions_3.js +5 -5
  461. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  462. package/SVF-doxygen/html/html/search/functions_5.js +4 -4
  463. package/SVF-doxygen/html/html/search/functions_6.js +11 -11
  464. package/SVF-doxygen/html/html/search/functions_7.js +3 -3
  465. package/SVF-doxygen/html/html/search/functions_8.js +3 -3
  466. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  467. package/SVF-doxygen/html/html/search/functions_e.js +3 -3
  468. package/SVF-doxygen/html/html/search/functions_f.js +5 -5
  469. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  470. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  471. package/SVF-doxygen/html/html/search/variables_10.js +2 -2
  472. package/SVF-doxygen/html/html/search/variables_12.js +5 -6
  473. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  474. package/SVF-doxygen/html/html/search/variables_14.js +1 -0
  475. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  476. package/SVF-doxygen/html/html/search/variables_7.js +0 -1
  477. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  478. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  479. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  480. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -14
  481. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
  482. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  483. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
  484. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  485. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  486. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +1 -1
  487. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +47 -57
  488. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  489. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
  490. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +5 -5
  491. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  492. package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -7
  493. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  494. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  495. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  496. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  497. package/build.sh +2 -2
  498. package/include/DDA/DDAPass.h +1 -1
  499. package/include/DDA/FlowDDA.h +1 -1
  500. package/include/Graphs/ICFG.h +1 -1
  501. package/include/Graphs/SVFG.h +3 -4
  502. package/include/Graphs/SVFGOPT.h +7 -7
  503. package/include/MSSA/MemSSA.h +2 -0
  504. package/include/MSSA/SVFGBuilder.h +5 -14
  505. package/include/MTA/MTA.h +2 -2
  506. package/include/MemoryModel/MutablePointsToDS.h +3 -3
  507. package/include/MemoryModel/PersistentPointsToCache.h +7 -8
  508. package/include/MemoryModel/PersistentPointsToDS.h +93 -93
  509. package/include/MemoryModel/PointerAnalysisImpl.h +17 -28
  510. package/include/MemoryModel/PointsTo.h +24 -24
  511. package/include/SABER/SrcSnkDDA.h +10 -13
  512. package/include/SVF-LLVM/LLVMLoopAnalysis.h +2 -1
  513. package/include/SVF-LLVM/LLVMModule.h +6 -6
  514. package/include/SVFIR/SVFIR.h +3 -5
  515. package/include/SVFIR/SVFType.h +6 -8
  516. package/include/SVFIR/SVFValue.h +5 -5
  517. package/include/Util/Options.h +0 -1
  518. package/include/Util/SparseBitVector.h +6 -14
  519. package/include/WPA/FlowSensitive.h +13 -20
  520. package/include/WPA/WPASolver.h +5 -9
  521. package/lib/DDA/DDAPass.cpp +4 -4
  522. package/lib/Graphs/CFLGraph.cpp +3 -0
  523. package/lib/Graphs/SVFG.cpp +1 -1
  524. package/lib/MSSA/MemSSA.cpp +5 -3
  525. package/lib/MSSA/SVFGBuilder.cpp +9 -27
  526. package/lib/MTA/MTA.cpp +4 -4
  527. package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
  528. package/lib/MemoryModel/PointsTo.cpp +23 -19
  529. package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +3 -4
  530. package/lib/SVF-LLVM/LLVMModule.cpp +32 -21
  531. package/lib/SVFIR/SVFIR.cpp +1 -1
  532. package/lib/SVFIR/SymbolTableInfo.cpp +4 -15
  533. package/lib/Util/Options.cpp +0 -6
  534. package/lib/WPA/AndersenSFR.cpp +1 -1
  535. package/lib/WPA/FlowSensitive.cpp +1 -1
  536. package/package.json +1 -1
  537. package/tools/CFL/cfl.cpp +5 -4
  538. package/tools/DDA/dda.cpp +3 -2
  539. package/tools/Example/svf-ex.cpp +3 -2
  540. package/tools/MTA/mta.cpp +6 -4
  541. package/tools/SABER/saber.cpp +7 -5
  542. package/tools/WPA/wpa.cpp +3 -2
@@ -135,8 +135,8 @@ Private Member Functions</h2></td></tr>
135
135
  </table><table class="memberdecls">
136
136
  <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
137
137
  Private Attributes</h2></td></tr>
138
- <tr class="memitem:a390c08099f16afb4b80b6e094d1adf25"><td class="memItemLeft" align="right" valign="top">std::vector&lt; Data * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a></td></tr>
139
- <tr class="separator:a390c08099f16afb4b80b6e094d1adf25"><td class="memSeparator" colspan="2">&#160;</td></tr>
138
+ <tr class="memitem:a32009561c9d3a340ec4e6230ef17f998"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a></td></tr>
139
+ <tr class="separator:a32009561c9d3a340ec4e6230ef17f998"><td class="memSeparator" colspan="2">&#160;</td></tr>
140
140
  <tr class="memitem:a6a3b33721ae00efd2fdf2d71f3298e1c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a9a1b0d0d215c048c7200da0e8f816943">PTSToIDMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a></td></tr>
141
141
  <tr class="memdesc:a6a3b33721ae00efd2fdf2d71f3298e1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maps points-to sets to their corresponding ID. <a href="#a6a3b33721ae00efd2fdf2d71f3298e1c">More...</a><br /></td></tr>
142
142
  <tr class="separator:a6a3b33721ae00efd2fdf2d71f3298e1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -273,11 +273,11 @@ template&lt;typename Data&gt; </div>
273
273
  </div><div class="memdoc">
274
274
 
275
275
  <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00045">45</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
276
- <div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>(1)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.push_back(<span class="keyword">new</span> Data());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[Data()] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00431">PersistentPointsToCache.h:431</a></div></div>
277
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00441">PersistentPointsToCache.h:441</a></div></div>
276
+ <div class="fragment"><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>(1)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>.push_back(std::make_unique&lt;Data&gt;());</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[Data()] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
277
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00430">PersistentPointsToCache.h:430</a></div></div>
278
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00440">PersistentPointsToCache.h:440</a></div></div>
278
279
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00039">PersistentPointsToCache.h:39</a></div></div>
279
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab19e4e17b1896565e0bada1f161d1266"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">SVF::PersistentPointsToCache::initStats</a></div><div class="ttdeci">void initStats(void)</div><div class="ttdoc">Initialises statistics variables to 0. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00403">PersistentPointsToCache.h:403</a></div></div>
280
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
280
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab19e4e17b1896565e0bada1f161d1266"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">SVF::PersistentPointsToCache::initStats</a></div><div class="ttdeci">void initStats(void)</div><div class="ttdoc">Initialises statistics variables to 0. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00402">PersistentPointsToCache.h:402</a></div></div>
281
281
  </div><!-- fragment -->
282
282
  </div>
283
283
  </div>
@@ -310,11 +310,11 @@ template&lt;typename Data&gt; </div>
310
310
  <p>Clear the cache. </p>
311
311
 
312
312
  <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00054">54</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
313
- <div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data *d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>) <span class="keyword">delete</span> d;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; idToPts.clear();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.clear();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>.clear();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>.clear();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>.clear();</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_adef498f8a0d4c75023382e6312a85a58"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">SVF::PersistentPointsToCache::complementCache</a></div><div class="ttdeci">OpCache complementCache</div><div class="ttdoc">Maps two IDs to their relative complement. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00436">PersistentPointsToCache.h:436</a></div></div>
314
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00431">PersistentPointsToCache.h:431</a></div></div>
315
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00434">PersistentPointsToCache.h:434</a></div></div>
316
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
317
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00438">PersistentPointsToCache.h:438</a></div></div>
313
+ <div class="fragment"><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>.clear();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.clear();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>.clear();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>.clear();</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>.clear();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
314
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_adef498f8a0d4c75023382e6312a85a58"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">SVF::PersistentPointsToCache::complementCache</a></div><div class="ttdeci">OpCache complementCache</div><div class="ttdoc">Maps two IDs to their relative complement. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00435">PersistentPointsToCache.h:435</a></div></div>
315
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00430">PersistentPointsToCache.h:430</a></div></div>
316
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00433">PersistentPointsToCache.h:433</a></div></div>
317
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00437">PersistentPointsToCache.h:437</a></div></div>
318
318
  </div><!-- fragment -->
319
319
  </div>
320
320
  </div>
@@ -356,19 +356,19 @@ template&lt;typename Data&gt; </div>
356
356
 
357
357
  <p>Relatively complements lhs and rhs (lhs \ rhs) and returns it's ID. </p>
358
358
 
359
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00173">173</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
360
- <div class="fragment"><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> complementOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> lhs - rhs;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; };</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="comment">// x - x</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (lhs == rhs)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="comment">// x - EMPTY_SET</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="comment">// EMPTY_SET - x</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> result = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, complementOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>, <span class="keyword">false</span>, opPerformed);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="comment">// We performed lhs - rhs = result, so...</span></div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="comment">// result AND rhs = EMPTY_SET,</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, rhs)] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = result;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// and result - rhs = result.</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>[std::make_pair(result, rhs)] = result;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a>;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00451">PersistentPointsToCache.h:451</a></div></div>
361
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00365">PersistentPointsToCache.h:365</a></div></div>
362
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00458">PersistentPointsToCache.h:458</a></div></div>
363
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00450">PersistentPointsToCache.h:450</a></div></div>
364
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_adef498f8a0d4c75023382e6312a85a58"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">SVF::PersistentPointsToCache::complementCache</a></div><div class="ttdeci">OpCache complementCache</div><div class="ttdoc">Maps two IDs to their relative complement. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00436">PersistentPointsToCache.h:436</a></div></div>
359
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00172">172</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
360
+ <div class="fragment"><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; {</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> complementOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> lhs - rhs;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; };</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="comment">// x - x</span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (lhs == rhs)</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; {</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="comment">// x - EMPTY_SET</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span> (rhs == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; {</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">return</span> lhs;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; }</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="comment">// EMPTY_SET - x</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">if</span> (lhs == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; {</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> result = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, complementOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>, <span class="keyword">false</span>, opPerformed);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="comment">// We performed lhs - rhs = result, so...</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="comment">// result AND rhs = EMPTY_SET,</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, rhs)] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = result;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="comment">// and result - rhs = result.</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">complementCache</a>[std::make_pair(result, rhs)] = result;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a>;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a>;</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00450">PersistentPointsToCache.h:450</a></div></div>
361
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00364">PersistentPointsToCache.h:364</a></div></div>
362
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00457">PersistentPointsToCache.h:457</a></div></div>
363
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00449">PersistentPointsToCache.h:449</a></div></div>
364
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_adef498f8a0d4c75023382e6312a85a58"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#adef498f8a0d4c75023382e6312a85a58">SVF::PersistentPointsToCache::complementCache</a></div><div class="ttdeci">OpCache complementCache</div><div class="ttdoc">Maps two IDs to their relative complement. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00435">PersistentPointsToCache.h:435</a></div></div>
365
365
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5a0f1b93f29ce62ad13042ab8435c62c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">SVF::PersistentPointsToCache::DataOp</a></div><div class="ttdeci">std::function&lt; Data(const Data &amp;, const Data &amp;)&gt; DataOp</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00035">PersistentPointsToCache.h:35</a></div></div>
366
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00454">PersistentPointsToCache.h:454</a></div></div>
366
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00453">PersistentPointsToCache.h:453</a></div></div>
367
367
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00039">PersistentPointsToCache.h:39</a></div></div>
368
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00438">PersistentPointsToCache.h:438</a></div></div>
369
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00449">PersistentPointsToCache.h:449</a></div></div>
370
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00453">PersistentPointsToCache.h:453</a></div></div>
371
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00452">PersistentPointsToCache.h:452</a></div></div>
368
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00437">PersistentPointsToCache.h:437</a></div></div>
369
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00448">PersistentPointsToCache.h:448</a></div></div>
370
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00452">PersistentPointsToCache.h:452</a></div></div>
371
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00451">PersistentPointsToCache.h:451</a></div></div>
372
372
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00062">SVFType.h:62</a></div></div>
373
373
  </div><!-- fragment -->
374
374
  </div>
@@ -400,11 +400,11 @@ template&lt;typename Data&gt; </div>
400
400
  </div><div class="memdoc">
401
401
  <p>If pts is not in the <a class="el" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache</a>, inserts it, assigns an ID, and returns that ID. If it is, then the ID is returned. </p>
402
402
 
403
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00091">91</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
404
- <div class="fragment"><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// Is it already in the cache?</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">typename</span> PTSToIDMap::const_iterator foundId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.find(pts);</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keywordflow">if</span> (foundId != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.end()) <span class="keywordflow">return</span> foundId-&gt;second;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// Otherwise, insert it.</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.push_back(<span class="keyword">new</span> Data(pts));</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[pts] = id;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00431">PersistentPointsToCache.h:431</a></div></div>
405
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
403
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00090">90</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
404
+ <div class="fragment"><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// Is it already in the cache?</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">typename</span> PTSToIDMap::const_iterator foundId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.find(pts);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">if</span> (foundId != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.end()) <span class="keywordflow">return</span> foundId-&gt;second;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">// Otherwise, insert it.</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>.push_back(std::make_unique&lt;Data&gt;(pts));</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[pts] = id;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
405
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00430">PersistentPointsToCache.h:430</a></div></div>
406
406
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00062">SVFType.h:62</a></div></div>
407
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a52ec4a787a199bb4d7553e8bafa9c127"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">SVF::PersistentPointsToCache::newPointsToId</a></div><div class="ttdeci">PointsToID newPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00355">PersistentPointsToCache.h:355</a></div></div>
407
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a52ec4a787a199bb4d7553e8bafa9c127"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">SVF::PersistentPointsToCache::newPointsToId</a></div><div class="ttdeci">PointsToID newPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00354">PersistentPointsToCache.h:354</a></div></div>
408
408
  </div><!-- fragment -->
409
409
  </div>
410
410
  </div>
@@ -466,8 +466,8 @@ template&lt;typename Data&gt; </div>
466
466
 
467
467
  <p>Returns the points-to set which id represents. id must be stored in the cache. </p>
468
468
 
469
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00106">106</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
470
- <div class="fragment"><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="comment">// Check if the points-to set for ID has already been stored.</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; assert(<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.size() &gt; <span class="keywordtype">id</span> &amp;&amp; <span class="stringliteral">&quot;PPTC::getActualPts: points-to set not stored!&quot;</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.at(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
469
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00105">105</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
470
+ <div class="fragment"><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="comment">// Check if the points-to set for ID has already been stored.</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; assert(<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>.size() &gt; <span class="keywordtype">id</span> &amp;&amp; <span class="stringliteral">&quot;PPTC::getActualPts: points-to set not stored!&quot;</span>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> *<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>.at(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
471
471
  </div><!-- fragment -->
472
472
  </div>
473
473
  </div>
@@ -498,8 +498,8 @@ template&lt;typename Data&gt; </div>
498
498
  </div><div class="memdoc">
499
499
  <p>Returns all points-to sets stored by this cache as keys to a map. Values are all 1. We use the map to be more compatible with getAllPts in the various PTDatas. Performance is a non-issue (for now) since this is just used for evaluation's sake. </p>
500
500
 
501
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00345">345</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
502
- <div class="fragment"><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; Map&lt;Data, unsigned&gt; allPts;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data *d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>) allPts[*d] = 1;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
501
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00344">344</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
502
+ <div class="fragment"><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; {</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; Map&lt;Data, unsigned&gt; allPts;</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">auto</span> &amp;d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>) allPts[*d] = 1;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
503
503
  </div><!-- fragment -->
504
504
  </div>
505
505
  </div>
@@ -531,22 +531,22 @@ template&lt;typename Data&gt; </div>
531
531
 
532
532
  <p>Initialises statistics variables to 0. </p>
533
533
 
534
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00403">403</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
535
- <div class="fragment"><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; {</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> = 0;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> = 0;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> = 0;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> = 0;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a> = 0;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> = 0;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> = 0;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> = 0;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> = 0;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a> = 0;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> = 0;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> = 0;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> = 0;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> = 0;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a> = 0;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00447">PersistentPointsToCache.h:447</a></div></div>
536
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00451">PersistentPointsToCache.h:451</a></div></div>
537
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00458">PersistentPointsToCache.h:458</a></div></div>
538
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00450">PersistentPointsToCache.h:450</a></div></div>
539
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00444">PersistentPointsToCache.h:444</a></div></div>
540
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00446">PersistentPointsToCache.h:446</a></div></div>
541
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00457">PersistentPointsToCache.h:457</a></div></div>
542
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00455">PersistentPointsToCache.h:455</a></div></div>
543
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00454">PersistentPointsToCache.h:454</a></div></div>
544
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00449">PersistentPointsToCache.h:449</a></div></div>
545
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00448">PersistentPointsToCache.h:448</a></div></div>
546
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00453">PersistentPointsToCache.h:453</a></div></div>
547
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00452">PersistentPointsToCache.h:452</a></div></div>
548
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00456">PersistentPointsToCache.h:456</a></div></div>
549
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00445">PersistentPointsToCache.h:445</a></div></div>
534
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00402">402</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
535
+ <div class="fragment"><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; {</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> = 0;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> = 0;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> = 0;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> = 0;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a> = 0;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> = 0;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> = 0;</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> = 0;</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> = 0;</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a> = 0;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> = 0;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> = 0;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> = 0;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> = 0;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a> = 0;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00446">PersistentPointsToCache.h:446</a></div></div>
536
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00450">PersistentPointsToCache.h:450</a></div></div>
537
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00457">PersistentPointsToCache.h:457</a></div></div>
538
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00449">PersistentPointsToCache.h:449</a></div></div>
539
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00443">PersistentPointsToCache.h:443</a></div></div>
540
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00445">PersistentPointsToCache.h:445</a></div></div>
541
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00456">PersistentPointsToCache.h:456</a></div></div>
542
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00454">PersistentPointsToCache.h:454</a></div></div>
543
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00453">PersistentPointsToCache.h:453</a></div></div>
544
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00448">PersistentPointsToCache.h:448</a></div></div>
545
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00447">PersistentPointsToCache.h:447</a></div></div>
546
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00452">PersistentPointsToCache.h:452</a></div></div>
547
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00451">PersistentPointsToCache.h:451</a></div></div>
548
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00455">PersistentPointsToCache.h:455</a></div></div>
549
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00444">PersistentPointsToCache.h:444</a></div></div>
550
550
  </div><!-- fragment -->
551
551
  </div>
552
552
  </div>
@@ -588,20 +588,20 @@ template&lt;typename Data&gt; </div>
588
588
 
589
589
  <p>Intersects lhs and rhs (lhs AND rhs) and returns the intersection's ID. </p>
590
590
 
591
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00236">236</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
592
- <div class="fragment"><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; {</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> intersectionOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> lhs &amp; rhs;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; };</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="comment">// Order operands so we don&#39;t perform x U y and y U x separately.</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="comment">// EMPTY_SET &amp; x</span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">if</span> (operands.first == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="comment">// x &amp; x</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> result = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, intersectionOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>, <span class="keyword">true</span>, opPerformed);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="comment">// When the result is empty, we won&#39;t be adding anything of substance.</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// We performed lhs AND rhs = result, so...</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// result AND rhs = result,</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (result != rhs)</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; {</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, rhs)] = result;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</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">// and result AND lhs = result,</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (result != lhs)</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; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = result;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; }</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; <span class="comment">// Also (thanks reviewer #2)</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">// result U lhs = result,</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; result != lhs)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = lhs;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="comment">// And result U rhs = rhs.</span></div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; result != rhs)</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; {</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = rhs;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a>;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00365">PersistentPointsToCache.h:365</a></div></div>
593
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00458">PersistentPointsToCache.h:458</a></div></div>
594
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00444">PersistentPointsToCache.h:444</a></div></div>
591
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00235">235</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
592
+ <div class="fragment"><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> intersectionOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; {</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> lhs &amp; rhs;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; };</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="comment">// Order operands so we don&#39;t perform x U y and y U x separately.</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="comment">// EMPTY_SET &amp; x</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (operands.first == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="comment">// x &amp; x</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a>;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> result = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, intersectionOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>, <span class="keyword">true</span>, opPerformed);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="comment">// When the result is empty, we won&#39;t be adding anything of substance.</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; {</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="comment">// We performed lhs AND rhs = result, so...</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="comment">// result AND rhs = result,</span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">if</span> (result != rhs)</div><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; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, rhs)] = result;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="comment">// and result AND lhs = result,</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span> (result != lhs)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">intersectionCache</a>[std::minmax(result, lhs)] = result;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a>;</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;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// Also (thanks reviewer #2)</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="comment">// result U lhs = result,</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; result != lhs)</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = lhs;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><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;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// And result U rhs = rhs.</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">if</span> (result != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; result != rhs)</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = rhs;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a>;</div><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="keywordflow">return</span> result;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00364">PersistentPointsToCache.h:364</a></div></div>
593
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00457">PersistentPointsToCache.h:457</a></div></div>
594
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00443">PersistentPointsToCache.h:443</a></div></div>
595
595
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5a0f1b93f29ce62ad13042ab8435c62c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">SVF::PersistentPointsToCache::DataOp</a></div><div class="ttdeci">std::function&lt; Data(const Data &amp;, const Data &amp;)&gt; DataOp</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00035">PersistentPointsToCache.h:35</a></div></div>
596
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00457">PersistentPointsToCache.h:457</a></div></div>
597
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00455">PersistentPointsToCache.h:455</a></div></div>
598
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00434">PersistentPointsToCache.h:434</a></div></div>
599
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00454">PersistentPointsToCache.h:454</a></div></div>
596
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00456">PersistentPointsToCache.h:456</a></div></div>
597
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00454">PersistentPointsToCache.h:454</a></div></div>
598
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00433">PersistentPointsToCache.h:433</a></div></div>
599
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00453">PersistentPointsToCache.h:453</a></div></div>
600
600
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00039">PersistentPointsToCache.h:39</a></div></div>
601
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00438">PersistentPointsToCache.h:438</a></div></div>
602
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00448">PersistentPointsToCache.h:448</a></div></div>
601
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a525fbb49c91040c078fbcaaae2339ef2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a525fbb49c91040c078fbcaaae2339ef2">SVF::PersistentPointsToCache::intersectionCache</a></div><div class="ttdeci">OpCache intersectionCache</div><div class="ttdoc">Maps two IDs to their intersection. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00437">PersistentPointsToCache.h:437</a></div></div>
602
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00447">PersistentPointsToCache.h:447</a></div></div>
603
603
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00062">SVFType.h:62</a></div></div>
604
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00456">PersistentPointsToCache.h:456</a></div></div>
604
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00455">PersistentPointsToCache.h:455</a></div></div>
605
605
  </div><!-- fragment -->
606
606
  </div>
607
607
  </div>
@@ -631,8 +631,8 @@ template&lt;typename Data&gt; </div>
631
631
  </table>
632
632
  </div><div class="memdoc">
633
633
 
634
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00355">355</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
635
- <div class="fragment"><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="comment">// Make sure we don&#39;t overflow.</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; assert(<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; <span class="stringliteral">&quot;PPTC::newPointsToId: PointsToIDs exhausted! Try a larger type.&quot;</span>);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>++;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00441">PersistentPointsToCache.h:441</a></div></div>
634
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00354">354</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
635
+ <div class="fragment"><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; {</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// Make sure we don&#39;t overflow.</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; assert(<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>() &amp;&amp; <span class="stringliteral">&quot;PPTC::newPointsToId: PointsToIDs exhausted! Try a larger type.&quot;</span>);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a>++;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00440">PersistentPointsToCache.h:440</a></div></div>
636
636
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00039">PersistentPointsToCache.h:39</a></div></div>
637
637
  </div><!-- fragment -->
638
638
  </div>
@@ -698,12 +698,12 @@ template&lt;typename Data&gt; </div>
698
698
  </div><div class="memdoc">
699
699
  <p>Performs dataOp on lhs and rhs, checking the opCache first and updating it afterwards. commutative indicates whether the operation in question is commutative or not. opPerformed is set to true if the operation was <em>not</em> cached and thus performed, false otherwise. </p>
700
700
 
701
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00365">365</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
702
- <div class="fragment"><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; {</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="comment">// If we&#39;re commutative, we want to always perform the same operation: x op y.</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="comment">// Performing x op y sometimes and y op x other times is a waste of time.</span></div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">if</span> (commutative) operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">else</span> operands = std::make_pair(lhs, rhs);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="comment">// Check if we have performed this operation</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; OpCache::const_iterator foundResult = opCache.find(operands);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (foundResult != opCache.end()) <span class="keywordflow">return</span> foundResult-&gt;second;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; opPerformed = <span class="keyword">true</span>;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">const</span> Data &amp;lhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(lhs);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keyword">const</span> Data &amp;rhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(rhs);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; Data result = dataOp(lhsPts, rhsPts);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> resultId;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="comment">// Intern points-to set: check if result already exists.</span></div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keyword">typename</span> PTSToIDMap::const_iterator foundId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.find(result);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (foundId != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.end()) resultId = foundId-&gt;second;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; {</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; resultId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.push_back(<span class="keyword">new</span> Data(result));</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[result] = resultId;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; }</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="comment">// Cache the result, for hash-consing.</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; opCache[operands] = resultId;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">return</span> resultId;</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab2888b033a29de3af48d377dc2fe70aa"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">SVF::PersistentPointsToCache::getActualPts</a></div><div class="ttdeci">const Data &amp; getActualPts(PointsToID id) const</div><div class="ttdoc">Returns the points-to set which id represents. id must be stored in the cache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00106">PersistentPointsToCache.h:106</a></div></div>
703
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00431">PersistentPointsToCache.h:431</a></div></div>
704
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
701
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00364">364</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
702
+ <div class="fragment"><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands;</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="comment">// If we&#39;re commutative, we want to always perform the same operation: x op y.</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="comment">// Performing x op y sometimes and y op x other times is a waste of time.</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">if</span> (commutative) operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">else</span> operands = std::make_pair(lhs, rhs);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="comment">// Check if we have performed this operation</span></div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; OpCache::const_iterator foundResult = opCache.find(operands);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">if</span> (foundResult != opCache.end()) <span class="keywordflow">return</span> foundResult-&gt;second;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; opPerformed = <span class="keyword">true</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">const</span> Data &amp;lhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(lhs);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keyword">const</span> Data &amp;rhsPts = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(rhs);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; Data result = dataOp(lhsPts, rhsPts);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> resultId;</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="comment">// Intern points-to set: check if result already exists.</span></div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">typename</span> PTSToIDMap::const_iterator foundId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.find(result);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">if</span> (foundId != <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.end()) resultId = foundId-&gt;second;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; {</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; resultId = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">newPointsToId</a>();</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>.push_back(std::make_unique&lt;Data&gt;(result));</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[result] = resultId;</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; }</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="comment">// Cache the result, for hash-consing.</span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; opCache[operands] = resultId;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">return</span> resultId;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
703
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab2888b033a29de3af48d377dc2fe70aa"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">SVF::PersistentPointsToCache::getActualPts</a></div><div class="ttdeci">const Data &amp; getActualPts(PointsToID id) const</div><div class="ttdoc">Returns the points-to set which id represents. id must be stored in the cache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00105">PersistentPointsToCache.h:105</a></div></div>
704
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00430">PersistentPointsToCache.h:430</a></div></div>
705
705
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00062">SVFType.h:62</a></div></div>
706
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a52ec4a787a199bb4d7553e8bafa9c127"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">SVF::PersistentPointsToCache::newPointsToId</a></div><div class="ttdeci">PointsToID newPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00355">PersistentPointsToCache.h:355</a></div></div>
706
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a52ec4a787a199bb4d7553e8bafa9c127"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a52ec4a787a199bb4d7553e8bafa9c127">SVF::PersistentPointsToCache::newPointsToId</a></div><div class="ttdeci">PointsToID newPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00354">PersistentPointsToCache.h:354</a></div></div>
707
707
  </div><!-- fragment -->
708
708
  </div>
709
709
  </div>
@@ -735,24 +735,24 @@ template&lt;typename Data&gt; </div>
735
735
 
736
736
  <p>Print statistics on operations and points-to set numbers. </p>
737
737
 
738
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00313">313</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
739
- <div class="fragment"><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; {</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> fieldWidth = 25;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flags(std::ios::left);</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniquePointsToSets&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.size() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00447">PersistentPointsToCache.h:447</a></div></div>
740
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00451">PersistentPointsToCache.h:451</a></div></div>
741
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00458">PersistentPointsToCache.h:458</a></div></div>
742
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00450">PersistentPointsToCache.h:450</a></div></div>
743
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00444">PersistentPointsToCache.h:444</a></div></div>
744
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00446">PersistentPointsToCache.h:446</a></div></div>
745
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00457">PersistentPointsToCache.h:457</a></div></div>
746
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00455">PersistentPointsToCache.h:455</a></div></div>
747
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00454">PersistentPointsToCache.h:454</a></div></div>
738
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00312">312</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
739
+ <div class="fragment"><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; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> fieldWidth = 25;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flags(std::ios::left);</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniquePointsToSets&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>.size() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveUnions&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">totalComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">propertyComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">uniqueComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">lookupComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveComplements&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">preemptiveComplements</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;TotalIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">totalIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PropertyIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">propertyIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;UniqueIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">uniqueIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;LookupIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">lookupIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; std::setw(fieldWidth) &lt;&lt; <span class="stringliteral">&quot;PreemptiveIntersections&quot;</span> &lt;&lt; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">preemptiveIntersections</a> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00446">PersistentPointsToCache.h:446</a></div></div>
740
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7961dd7af7db2774e852beabcba1e5a8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7961dd7af7db2774e852beabcba1e5a8">SVF::PersistentPointsToCache::propertyComplements</a></div><div class="ttdeci">u64_t propertyComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00450">PersistentPointsToCache.h:450</a></div></div>
741
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae80c5037ff49f70d9a87a83a8fcb07c7"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae80c5037ff49f70d9a87a83a8fcb07c7">SVF::PersistentPointsToCache::preemptiveIntersections</a></div><div class="ttdeci">u64_t preemptiveIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00457">PersistentPointsToCache.h:457</a></div></div>
742
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5c1afbaebce46eac6b1172aa5f2824ee"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5c1afbaebce46eac6b1172aa5f2824ee">SVF::PersistentPointsToCache::uniqueComplements</a></div><div class="ttdeci">u64_t uniqueComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00449">PersistentPointsToCache.h:449</a></div></div>
743
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
744
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00443">PersistentPointsToCache.h:443</a></div></div>
745
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00445">PersistentPointsToCache.h:445</a></div></div>
746
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a15d3235017b35f4a5c668d0b6626faff"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a15d3235017b35f4a5c668d0b6626faff">SVF::PersistentPointsToCache::lookupIntersections</a></div><div class="ttdeci">u64_t lookupIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00456">PersistentPointsToCache.h:456</a></div></div>
747
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a474023fe293b080fbda7da06ef380531"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a474023fe293b080fbda7da06ef380531">SVF::PersistentPointsToCache::uniqueIntersections</a></div><div class="ttdeci">u64_t uniqueIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00454">PersistentPointsToCache.h:454</a></div></div>
748
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a099c2319277797ac96aeee859ded9b22"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a099c2319277797ac96aeee859ded9b22">SVF::PersistentPointsToCache::totalIntersections</a></div><div class="ttdeci">u64_t totalIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00453">PersistentPointsToCache.h:453</a></div></div>
748
749
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
749
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
750
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00449">PersistentPointsToCache.h:449</a></div></div>
751
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00448">PersistentPointsToCache.h:448</a></div></div>
752
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00453">PersistentPointsToCache.h:453</a></div></div>
753
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00452">PersistentPointsToCache.h:452</a></div></div>
754
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00456">PersistentPointsToCache.h:456</a></div></div>
755
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00445">PersistentPointsToCache.h:445</a></div></div>
750
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6d52fb93d22b2ce3e4e4acbdd82b88b0"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6d52fb93d22b2ce3e4e4acbdd82b88b0">SVF::PersistentPointsToCache::totalComplements</a></div><div class="ttdeci">u64_t totalComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00448">PersistentPointsToCache.h:448</a></div></div>
751
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00447">PersistentPointsToCache.h:447</a></div></div>
752
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad9a761bcece141764322247cc326bcbe"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad9a761bcece141764322247cc326bcbe">SVF::PersistentPointsToCache::preemptiveComplements</a></div><div class="ttdeci">u64_t preemptiveComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00452">PersistentPointsToCache.h:452</a></div></div>
753
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a47f4e8ef1461396afb2e1c3cbe055e95"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a47f4e8ef1461396afb2e1c3cbe055e95">SVF::PersistentPointsToCache::lookupComplements</a></div><div class="ttdeci">u64_t lookupComplements</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00451">PersistentPointsToCache.h:451</a></div></div>
754
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a4c58a058c50703ba5f35e8bf052ee991"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a4c58a058c50703ba5f35e8bf052ee991">SVF::PersistentPointsToCache::propertyIntersections</a></div><div class="ttdeci">u64_t propertyIntersections</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00455">PersistentPointsToCache.h:455</a></div></div>
755
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00444">PersistentPointsToCache.h:444</a></div></div>
756
756
  </div><!-- fragment -->
757
757
  </div>
758
758
  </div>
@@ -784,9 +784,9 @@ template&lt;typename Data&gt; </div>
784
784
 
785
785
  <p>Remaps all points-to sets stored in the cache to the current mapping. </p>
786
786
 
787
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00080">80</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
788
- <div class="fragment"><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">for</span> (Data *d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>) d-&gt;checkAndRemap();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="comment">// Rebuild ptsToId from idToPts.</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.clear();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> i = 0; i &lt; idToPts.size(); ++i) <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[*idToPts[i]] = i;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00431">PersistentPointsToCache.h:431</a></div></div>
789
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
787
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00079">79</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
788
+ <div class="fragment"><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span> &amp;d : <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>) d-&gt;checkAndRemap();</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="comment">// Rebuild ptsToId from idToPts.</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>.clear();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> i = 0; i &lt; idToPts.size(); ++i) <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[*idToPts[i]] = i;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
789
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00430">PersistentPointsToCache.h:430</a></div></div>
790
790
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00062">SVFType.h:62</a></div></div>
791
791
  </div><!-- fragment -->
792
792
  </div>
@@ -819,13 +819,13 @@ template&lt;typename Data&gt; </div>
819
819
 
820
820
  <p>Resets the cache removing everything except the emptyData it was initialised with. </p>
821
821
 
822
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00066">66</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
823
- <div class="fragment"><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae9017daca63227066bb1be6dedef8b0f">clear</a>();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// Put the empty data back in.</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[Data()] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">idToPts</a>.push_back(<span class="keyword">new</span> Data());</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> = 1;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="comment">// Cache is empty...</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae9017daca63227066bb1be6dedef8b0f"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae9017daca63227066bb1be6dedef8b0f">SVF::PersistentPointsToCache::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clear the cache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00054">PersistentPointsToCache.h:54</a></div></div>
824
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00431">PersistentPointsToCache.h:431</a></div></div>
825
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00441">PersistentPointsToCache.h:441</a></div></div>
822
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00065">65</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
823
+ <div class="fragment"><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; {</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ae9017daca63227066bb1be6dedef8b0f">clear</a>();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// Put the empty data back in.</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">ptsToId</a>[Data()] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">idToPts</a>.push_back(std::make_unique&lt;Data&gt;());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">idCounter</a> = 1;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Cache is empty...</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">initStats</a>();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ae9017daca63227066bb1be6dedef8b0f"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ae9017daca63227066bb1be6dedef8b0f">SVF::PersistentPointsToCache::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clear the cache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00054">PersistentPointsToCache.h:54</a></div></div>
824
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a32009561c9d3a340ec4e6230ef17f998"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a32009561c9d3a340ec4e6230ef17f998">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; std::unique_ptr&lt; Data &gt; &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00428">PersistentPointsToCache.h:428</a></div></div>
825
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6a3b33721ae00efd2fdf2d71f3298e1c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6a3b33721ae00efd2fdf2d71f3298e1c">SVF::PersistentPointsToCache::ptsToId</a></div><div class="ttdeci">PTSToIDMap ptsToId</div><div class="ttdoc">Maps points-to sets to their corresponding ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00430">PersistentPointsToCache.h:430</a></div></div>
826
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad8d24772f7503e0e735f546506d2bcc5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad8d24772f7503e0e735f546506d2bcc5">SVF::PersistentPointsToCache::idCounter</a></div><div class="ttdeci">PointsToID idCounter</div><div class="ttdoc">Used to generate new PointsToIDs. Any non-zero is valid. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00440">PersistentPointsToCache.h:440</a></div></div>
826
827
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00039">PersistentPointsToCache.h:39</a></div></div>
827
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab19e4e17b1896565e0bada1f161d1266"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">SVF::PersistentPointsToCache::initStats</a></div><div class="ttdeci">void initStats(void)</div><div class="ttdoc">Initialises statistics variables to 0. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00403">PersistentPointsToCache.h:403</a></div></div>
828
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a390c08099f16afb4b80b6e094d1adf25"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a390c08099f16afb4b80b6e094d1adf25">SVF::PersistentPointsToCache::idToPts</a></div><div class="ttdeci">std::vector&lt; Data * &gt; idToPts</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00429">PersistentPointsToCache.h:429</a></div></div>
828
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab19e4e17b1896565e0bada1f161d1266"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab19e4e17b1896565e0bada1f161d1266">SVF::PersistentPointsToCache::initStats</a></div><div class="ttdeci">void initStats(void)</div><div class="ttdoc">Initialises statistics variables to 0. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00402">PersistentPointsToCache.h:402</a></div></div>
829
829
  </div><!-- fragment -->
830
830
  </div>
831
831
  </div>
@@ -867,17 +867,17 @@ template&lt;typename Data&gt; </div>
867
867
 
868
868
  <p>Unions lhs and rhs and returns their union's ID. </p>
869
869
 
870
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00114">114</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
871
- <div class="fragment"><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> unionOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> lhs | rhs;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; };</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="comment">// Order operands so we don&#39;t perform x U y and y U x separately.</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="comment">// EMPTY_SET U x</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">if</span> (operands.first == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; {</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> operands.second;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="comment">// x U x</span></div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; {</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; }</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> result = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, unionOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>, <span class="keyword">true</span>, opPerformed);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// We can use lhs/rhs here rather than our ordered operands,</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// because the operation was commutative.</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="comment">// if x U y = z, then x U z = z,</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <span class="keywordflow">if</span> (lhs != result)</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; {</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = result;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="comment">// and y U z = z.</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (rhs != result)</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = result;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a>;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00447">PersistentPointsToCache.h:447</a></div></div>
872
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00365">PersistentPointsToCache.h:365</a></div></div>
873
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00444">PersistentPointsToCache.h:444</a></div></div>
874
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00446">PersistentPointsToCache.h:446</a></div></div>
870
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00113">113</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
871
+ <div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">DataOp</a> unionOp = [](<span class="keyword">const</span> Data &amp;lhs, <span class="keyword">const</span> Data &amp;rhs)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> lhs | rhs;</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; };</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// Order operands so we don&#39;t perform x U y and y U x separately.</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; std::pair&lt;PointsToID, PointsToID&gt; operands = std::minmax(lhs, rhs);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// Property cases.</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// EMPTY_SET U x</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">if</span> (operands.first == <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>())</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">return</span> operands.second;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="comment">// x U x</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (operands.first == operands.second)</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; {</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">propertyUnions</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> operands.first;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordtype">bool</span> opPerformed = <span class="keyword">false</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> result = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">opPts</a>(lhs, rhs, unionOp, <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>, <span class="keyword">true</span>, opPerformed);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (opPerformed)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">uniqueUnions</a>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="comment">// We can use lhs/rhs here rather than our ordered operands,</span></div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="comment">// because the operation was commutative.</span></div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="comment">// if x U y = z, then x U z = z,</span></div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (lhs != result)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(lhs, result)] = result;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// and y U z = z.</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">if</span> (rhs != result)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">unionCache</a>[std::minmax(rhs, result)] = result;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">preemptiveUnions</a>;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">totalUnions</a>;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">else</span> ++<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">lookupUnions</a>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div><div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ace976f138cf1b8ab6bbf7a5c5d0b60b8"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ace976f138cf1b8ab6bbf7a5c5d0b60b8">SVF::PersistentPointsToCache::lookupUnions</a></div><div class="ttdeci">u64_t lookupUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00446">PersistentPointsToCache.h:446</a></div></div>
872
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ac7865b3ea1d76d2c522b465cc8e86639"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ac7865b3ea1d76d2c522b465cc8e86639">SVF::PersistentPointsToCache::opPts</a></div><div class="ttdeci">PointsToID opPts(PointsToID lhs, PointsToID rhs, const DataOp &amp;dataOp, OpCache &amp;opCache, bool commutative, bool &amp;opPerformed)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00364">PersistentPointsToCache.h:364</a></div></div>
873
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a7a1c296f9c2dfd49e5b60f52fb1901c2"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a7a1c296f9c2dfd49e5b60f52fb1901c2">SVF::PersistentPointsToCache::totalUnions</a></div><div class="ttdeci">u64_t totalUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00443">PersistentPointsToCache.h:443</a></div></div>
874
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ad045302497c76b9dfa656882cc0192dd"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ad045302497c76b9dfa656882cc0192dd">SVF::PersistentPointsToCache::propertyUnions</a></div><div class="ttdeci">u64_t propertyUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00445">PersistentPointsToCache.h:445</a></div></div>
875
875
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a5a0f1b93f29ce62ad13042ab8435c62c"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a5a0f1b93f29ce62ad13042ab8435c62c">SVF::PersistentPointsToCache::DataOp</a></div><div class="ttdeci">std::function&lt; Data(const Data &amp;, const Data &amp;)&gt; DataOp</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00035">PersistentPointsToCache.h:35</a></div></div>
876
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00434">PersistentPointsToCache.h:434</a></div></div>
876
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a6b601ce2055d83f2c1df0c7af039ce05"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a6b601ce2055d83f2c1df0c7af039ce05">SVF::PersistentPointsToCache::unionCache</a></div><div class="ttdeci">OpCache unionCache</div><div class="ttdoc">Maps two IDs to their union. Keys must be sorted. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00433">PersistentPointsToCache.h:433</a></div></div>
877
877
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a921a4ef4c72ccde5724860f98ad62a57"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">SVF::PersistentPointsToCache::emptyPointsToId</a></div><div class="ttdeci">static PointsToID emptyPointsToId(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00039">PersistentPointsToCache.h:39</a></div></div>
878
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00448">PersistentPointsToCache.h:448</a></div></div>
878
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98dad4f4d39904d90564f1a2279ac664"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98dad4f4d39904d90564f1a2279ac664">SVF::PersistentPointsToCache::preemptiveUnions</a></div><div class="ttdeci">u64_t preemptiveUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00447">PersistentPointsToCache.h:447</a></div></div>
879
879
  <div class="ttc" id="namespaceSVF_html_ae545a88267bd2246de827cf590675aca"><div class="ttname"><a href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">SVF::PointsToID</a></div><div class="ttdeci">unsigned PointsToID</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00062">SVFType.h:62</a></div></div>
880
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00445">PersistentPointsToCache.h:445</a></div></div>
880
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_aacebdd87b1dd45250391d035b032f9d4"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#aacebdd87b1dd45250391d035b032f9d4">SVF::PersistentPointsToCache::uniqueUnions</a></div><div class="ttdeci">u64_t uniqueUnions</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00444">PersistentPointsToCache.h:444</a></div></div>
881
881
  </div><!-- fragment -->
882
882
  </div>
883
883
  </div>
@@ -906,7 +906,7 @@ template&lt;typename Data&gt; </div>
906
906
 
907
907
  <p>Maps two IDs to their relative complement. </p>
908
908
 
909
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00436">436</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
909
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00435">435</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
910
910
 
911
911
  </div>
912
912
  </div>
@@ -934,12 +934,12 @@ template&lt;typename Data&gt; </div>
934
934
 
935
935
  <p>Used to generate new PointsToIDs. Any non-zero is valid. </p>
936
936
 
937
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00441">441</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
937
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00440">440</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
938
938
 
939
939
  </div>
940
940
  </div>
941
- <a id="a390c08099f16afb4b80b6e094d1adf25"></a>
942
- <h2 class="memtitle"><span class="permalink"><a href="#a390c08099f16afb4b80b6e094d1adf25">&#9670;&nbsp;</a></span>idToPts</h2>
941
+ <a id="a32009561c9d3a340ec4e6230ef17f998"></a>
942
+ <h2 class="memtitle"><span class="permalink"><a href="#a32009561c9d3a340ec4e6230ef17f998">&#9670;&nbsp;</a></span>idToPts</h2>
943
943
 
944
944
  <div class="memitem">
945
945
  <div class="memproto">
@@ -950,7 +950,7 @@ template&lt;typename Data&gt; </div>
950
950
  <td class="mlabels-left">
951
951
  <table class="memname">
952
952
  <tr>
953
- <td class="memname">std::vector&lt;Data *&gt; <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::idToPts</td>
953
+ <td class="memname">std::vector&lt;std::unique_ptr&lt;Data&gt; &gt; <a class="el" href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache</a>&lt; Data &gt;::idToPts</td>
954
954
  </tr>
955
955
  </table>
956
956
  </td>
@@ -961,7 +961,7 @@ template&lt;typename Data&gt; </div>
961
961
  </div><div class="memdoc">
962
962
  <p>Maps points-to IDs (indices) to their corresponding points-to set. Reverse of idToPts. Elements are only added through push_back, so the number of elements stored is the size of the vector. Not const so we can remap. </p>
963
963
 
964
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00429">429</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
964
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00428">428</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
965
965
 
966
966
  </div>
967
967
  </div>
@@ -989,7 +989,7 @@ template&lt;typename Data&gt; </div>
989
989
 
990
990
  <p>Maps two IDs to their intersection. Keys must be sorted. </p>
991
991
 
992
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00438">438</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
992
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00437">437</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
993
993
 
994
994
  </div>
995
995
  </div>
@@ -1015,7 +1015,7 @@ template&lt;typename Data&gt; </div>
1015
1015
  </table>
1016
1016
  </div><div class="memdoc">
1017
1017
 
1018
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00452">452</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1018
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00451">451</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1019
1019
 
1020
1020
  </div>
1021
1021
  </div>
@@ -1041,7 +1041,7 @@ template&lt;typename Data&gt; </div>
1041
1041
  </table>
1042
1042
  </div><div class="memdoc">
1043
1043
 
1044
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00457">457</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1044
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00456">456</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1045
1045
 
1046
1046
  </div>
1047
1047
  </div>
@@ -1067,7 +1067,7 @@ template&lt;typename Data&gt; </div>
1067
1067
  </table>
1068
1068
  </div><div class="memdoc">
1069
1069
 
1070
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00447">447</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1070
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00446">446</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1071
1071
 
1072
1072
  </div>
1073
1073
  </div>
@@ -1093,7 +1093,7 @@ template&lt;typename Data&gt; </div>
1093
1093
  </table>
1094
1094
  </div><div class="memdoc">
1095
1095
 
1096
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00453">453</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1096
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00452">452</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1097
1097
 
1098
1098
  </div>
1099
1099
  </div>
@@ -1119,7 +1119,7 @@ template&lt;typename Data&gt; </div>
1119
1119
  </table>
1120
1120
  </div><div class="memdoc">
1121
1121
 
1122
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00458">458</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1122
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00457">457</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1123
1123
 
1124
1124
  </div>
1125
1125
  </div>
@@ -1145,7 +1145,7 @@ template&lt;typename Data&gt; </div>
1145
1145
  </table>
1146
1146
  </div><div class="memdoc">
1147
1147
 
1148
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00448">448</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1148
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00447">447</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1149
1149
 
1150
1150
  </div>
1151
1151
  </div>
@@ -1171,7 +1171,7 @@ template&lt;typename Data&gt; </div>
1171
1171
  </table>
1172
1172
  </div><div class="memdoc">
1173
1173
 
1174
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00451">451</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1174
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00450">450</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1175
1175
 
1176
1176
  </div>
1177
1177
  </div>
@@ -1197,7 +1197,7 @@ template&lt;typename Data&gt; </div>
1197
1197
  </table>
1198
1198
  </div><div class="memdoc">
1199
1199
 
1200
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00456">456</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1200
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00455">455</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1201
1201
 
1202
1202
  </div>
1203
1203
  </div>
@@ -1223,7 +1223,7 @@ template&lt;typename Data&gt; </div>
1223
1223
  </table>
1224
1224
  </div><div class="memdoc">
1225
1225
 
1226
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00446">446</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1226
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00445">445</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1227
1227
 
1228
1228
  </div>
1229
1229
  </div>
@@ -1251,7 +1251,7 @@ template&lt;typename Data&gt; </div>
1251
1251
 
1252
1252
  <p>Maps points-to sets to their corresponding ID. </p>
1253
1253
 
1254
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00431">431</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1254
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00430">430</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1255
1255
 
1256
1256
  </div>
1257
1257
  </div>
@@ -1277,7 +1277,7 @@ template&lt;typename Data&gt; </div>
1277
1277
  </table>
1278
1278
  </div><div class="memdoc">
1279
1279
 
1280
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00449">449</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1280
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00448">448</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1281
1281
 
1282
1282
  </div>
1283
1283
  </div>
@@ -1303,7 +1303,7 @@ template&lt;typename Data&gt; </div>
1303
1303
  </table>
1304
1304
  </div><div class="memdoc">
1305
1305
 
1306
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00454">454</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1306
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00453">453</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1307
1307
 
1308
1308
  </div>
1309
1309
  </div>
@@ -1329,7 +1329,7 @@ template&lt;typename Data&gt; </div>
1329
1329
  </table>
1330
1330
  </div><div class="memdoc">
1331
1331
 
1332
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00444">444</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1332
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00443">443</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1333
1333
 
1334
1334
  </div>
1335
1335
  </div>
@@ -1357,7 +1357,7 @@ template&lt;typename Data&gt; </div>
1357
1357
 
1358
1358
  <p>Maps two IDs to their union. Keys must be sorted. </p>
1359
1359
 
1360
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00434">434</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1360
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00433">433</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1361
1361
 
1362
1362
  </div>
1363
1363
  </div>
@@ -1383,7 +1383,7 @@ template&lt;typename Data&gt; </div>
1383
1383
  </table>
1384
1384
  </div><div class="memdoc">
1385
1385
 
1386
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00450">450</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1386
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00449">449</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1387
1387
 
1388
1388
  </div>
1389
1389
  </div>
@@ -1409,7 +1409,7 @@ template&lt;typename Data&gt; </div>
1409
1409
  </table>
1410
1410
  </div><div class="memdoc">
1411
1411
 
1412
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00455">455</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1412
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00454">454</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1413
1413
 
1414
1414
  </div>
1415
1415
  </div>
@@ -1435,7 +1435,7 @@ template&lt;typename Data&gt; </div>
1435
1435
  </table>
1436
1436
  </div><div class="memdoc">
1437
1437
 
1438
- <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00445">445</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1438
+ <p class="definition">Definition at line <a class="el" href="PersistentPointsToCache_8h_source.html#l00444">444</a> of file <a class="el" href="PersistentPointsToCache_8h_source.html">PersistentPointsToCache.h</a>.</p>
1439
1439
 
1440
1440
  </div>
1441
1441
  </div>