svf-tools 1.0.558 → 1.0.561

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 (327) hide show
  1. package/README.md +1 -1
  2. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +43 -43
  3. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +18 -18
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +56 -56
  9. package/SVF-doxygen/html/html/CFLGrammar_8txt.html +8 -8
  10. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +10 -1
  11. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +3 -1
  12. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +44 -44
  14. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +43 -43
  15. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +12 -12
  16. package/SVF-doxygen/html/html/DDAClient_8h_source.html +36 -36
  17. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +19 -19
  18. package/SVF-doxygen/html/html/DDAPass_8h_source.html +21 -21
  19. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +51 -51
  20. package/SVF-doxygen/html/html/DDAStat_8h_source.html +51 -51
  21. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +111 -111
  22. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +2 -2
  23. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -2
  25. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -2
  26. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +40 -40
  27. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +52 -52
  28. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +2 -2
  29. package/SVF-doxygen/html/html/FileChecker_8h_source.html +2 -2
  30. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
  31. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +42 -42
  32. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +3 -3
  33. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
  34. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
  35. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
  36. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +34 -34
  39. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +114 -114
  40. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +2 -2
  41. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
  42. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  43. package/SVF-doxygen/html/html/MHP_8cpp_source.html +94 -94
  44. package/SVF-doxygen/html/html/MHP_8h_source.html +135 -135
  45. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +6 -6
  46. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  47. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +2 -2
  48. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +10 -10
  49. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +6 -6
  50. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +33 -33
  51. package/SVF-doxygen/html/html/MTAStat_8h_source.html +14 -14
  52. package/SVF-doxygen/html/html/MTA_8cpp_source.html +28 -28
  53. package/SVF-doxygen/html/html/MTA_8h_source.html +24 -24
  54. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +6 -6
  55. package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
  56. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +50 -50
  57. package/SVF-doxygen/html/html/MemRegion_8h_source.html +93 -93
  58. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +59 -59
  59. package/SVF-doxygen/html/html/MemSSA_8h_source.html +103 -103
  60. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +185 -185
  61. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/PCG_8cpp_source.html +14 -14
  64. package/SVF-doxygen/html/html/PCG_8h_source.html +52 -52
  65. package/SVF-doxygen/html/html/PEGGrammar_8txt.html +14 -32
  66. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +40 -40
  67. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +181 -181
  68. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +15 -15
  69. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +30 -30
  70. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
  73. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +60 -60
  74. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
  75. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  76. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +2 -2
  79. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +19 -19
  80. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  81. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +12 -12
  82. package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
  83. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  84. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +3 -3
  86. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +2 -2
  87. package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
  88. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  89. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +1 -1
  90. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +1 -1
  91. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +3 -3
  92. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
  94. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +66 -66
  95. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +4 -4
  97. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +6 -6
  98. package/SVF-doxygen/html/html/TCT_8cpp_source.html +44 -44
  99. package/SVF-doxygen/html/html/TCT_8h_source.html +93 -93
  100. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  101. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +2 -2
  102. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +2 -2
  103. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +25 -25
  104. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +38 -38
  105. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  106. package/SVF-doxygen/html/html/WPAStat_8h_source.html +2 -2
  107. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  108. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  109. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder-members.html +13 -10
  110. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +190 -2
  111. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +22 -22
  112. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +102 -102
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +43 -43
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +20 -20
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +6 -6
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -16
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +19 -19
  118. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +39 -39
  119. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
  120. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +2 -2
  121. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +2 -2
  122. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +100 -100
  124. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +51 -51
  125. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +58 -58
  126. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +165 -165
  127. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +286 -286
  128. package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +26 -26
  129. package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +11 -11
  130. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
  131. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +4 -4
  132. package/SVF-doxygen/html/html/classSVF_1_1EntryCHI.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +5 -4
  134. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +40 -5
  135. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +30 -30
  136. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +3 -3
  137. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +71 -71
  138. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +7 -7
  139. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +218 -218
  141. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  142. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  143. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +19 -19
  144. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +7 -7
  146. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +17 -17
  147. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +2 -2
  148. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +334 -334
  149. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +9 -9
  150. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +246 -246
  151. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +7 -7
  152. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +200 -200
  153. package/SVF-doxygen/html/html/classSVF_1_1MSSACHI.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1MSSADEF.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1MSSAMU.html +2 -2
  156. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHI.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  158. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +53 -53
  159. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
  160. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +22 -22
  161. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +181 -181
  162. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +44 -44
  163. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +23 -23
  164. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +267 -267
  165. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +18 -18
  166. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +128 -128
  167. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +55 -55
  168. package/SVF-doxygen/html/html/classSVF_1_1MutableIncDFPTData.html +88 -88
  169. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +78 -78
  170. package/SVF-doxygen/html/html/classSVF_1_1MutableVersionedPTData.html +77 -77
  171. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +131 -131
  172. package/SVF-doxygen/html/html/classSVF_1_1PTData.html +32 -32
  173. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +107 -107
  174. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +66 -66
  175. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +84 -84
  176. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +77 -77
  177. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +134 -134
  178. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +77 -77
  179. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +3 -3
  180. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +161 -161
  181. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +7 -7
  182. package/SVF-doxygen/html/html/classSVF_1_1RetMU.html +2 -2
  183. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +22 -22
  184. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  185. package/SVF-doxygen/html/html/classSVF_1_1SVFGNodeLockSpan.html +23 -23
  186. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +5 -5
  187. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
  188. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +157 -157
  189. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +15 -15
  190. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +2 -2
  191. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +264 -264
  192. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +13 -13
  193. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +20 -20
  194. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +100 -100
  196. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
  197. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +11 -11
  199. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
  200. package/SVF-doxygen/html/html/dda_8cpp.html +2 -2
  201. package/SVF-doxygen/html/html/dda_8cpp_source.html +2 -2
  202. package/SVF-doxygen/html/html/functions_a.html +11 -5
  203. package/SVF-doxygen/html/html/functions_c.html +21 -18
  204. package/SVF-doxygen/html/html/functions_f.html +6 -6
  205. package/SVF-doxygen/html/html/functions_func.html +16 -10
  206. package/SVF-doxygen/html/html/functions_func_c.html +19 -16
  207. package/SVF-doxygen/html/html/functions_func_i.html +11 -8
  208. package/SVF-doxygen/html/html/functions_i.html +11 -8
  209. package/SVF-doxygen/html/html/functions_l.html +5 -5
  210. package/SVF-doxygen/html/html/functions_p.html +6 -6
  211. package/SVF-doxygen/html/html/functions_r.html +3 -7
  212. package/SVF-doxygen/html/html/functions_s.html +16 -14
  213. package/SVF-doxygen/html/html/functions_v.html +6 -6
  214. package/SVF-doxygen/html/html/functions_w.html +11 -11
  215. package/SVF-doxygen/html/html/globals_g.html +3 -3
  216. package/SVF-doxygen/html/html/globals_v.html +1 -2
  217. package/SVF-doxygen/html/html/globals_vars.html +3 -4
  218. package/SVF-doxygen/html/html/mta_8cpp.html +2 -2
  219. package/SVF-doxygen/html/html/mta_8cpp_source.html +2 -2
  220. package/SVF-doxygen/html/html/namespaceSVF.html +11 -11
  221. package/SVF-doxygen/html/html/search/all_1.js +2 -0
  222. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  223. package/SVF-doxygen/html/html/search/all_11.js +2 -2
  224. package/SVF-doxygen/html/html/search/all_12.js +8 -8
  225. package/SVF-doxygen/html/html/search/all_13.js +2 -2
  226. package/SVF-doxygen/html/html/search/all_14.js +1 -1
  227. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  228. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  229. package/SVF-doxygen/html/html/search/all_3.js +1 -0
  230. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  231. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  232. package/SVF-doxygen/html/html/search/all_9.js +2 -1
  233. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  234. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  235. package/SVF-doxygen/html/html/search/functions_0.js +2 -0
  236. package/SVF-doxygen/html/html/search/functions_2.js +1 -0
  237. package/SVF-doxygen/html/html/search/functions_8.js +1 -0
  238. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  239. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  240. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  241. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  242. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  243. package/SVF-doxygen/html/html/structSVF_1_1MemRegion_1_1equalMemRegion.html +3 -3
  244. package/SVF-doxygen/html/html/structSVF_1_1VersionedFlowSensitive_1_1SCC_1_1NodeData.html +4 -4
  245. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +15 -15
  246. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +1 -1
  247. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +1 -1
  248. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +2 -2
  249. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SVFGNodeLockSpan_01_4.html +3 -3
  250. package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
  251. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
  252. package/include/CFL/CFLGraphBuilder.h +9 -0
  253. package/include/CFL/PEGGrammar.txt +4 -8
  254. package/include/DDA/ContextDDA.h +29 -0
  255. package/include/DDA/DDAClient.h +23 -0
  256. package/include/DDA/DDAPass.h +22 -0
  257. package/include/DDA/DDAStat.h +22 -0
  258. package/include/DDA/DDAVFSolver.h +22 -0
  259. package/include/DDA/FlowDDA.h +29 -0
  260. package/include/MSSA/MSSAMuChi.h +1 -1
  261. package/include/MSSA/MemPartition.h +1 -1
  262. package/include/MSSA/MemRegion.h +5 -1
  263. package/include/MSSA/MemSSA.h +7 -1
  264. package/include/MSSA/SVFGBuilder.h +1 -1
  265. package/include/MTA/FSMPTA.h +26 -0
  266. package/include/MTA/LockAnalysis.h +22 -0
  267. package/include/MTA/MHP.h +22 -0
  268. package/include/MTA/MTA.h +27 -1
  269. package/include/MTA/MTAStat.h +22 -0
  270. package/include/MTA/PCG.h +22 -0
  271. package/include/MTA/TCT.h +22 -0
  272. package/include/MemoryModel/AbstractPointsToDS.h +34 -0
  273. package/include/MemoryModel/ConditionalPT.h +1 -1
  274. package/include/MemoryModel/LocationSet.h +1 -1
  275. package/include/MemoryModel/MutablePointsToDS.h +32 -0
  276. package/include/MemoryModel/PAGBuilderFromFile.h +2 -2
  277. package/include/MemoryModel/PersistentPointsToCache.h +3 -1
  278. package/include/MemoryModel/PersistentPointsToDS.h +10 -0
  279. package/include/MemoryModel/PointerAnalysis.h +1 -1
  280. package/include/MemoryModel/PointerAnalysisImpl.h +1 -1
  281. package/include/MemoryModel/SVFStatements.h +1 -1
  282. package/include/SABER/DoubleFreeChecker.h +1 -1
  283. package/include/SABER/FileChecker.h +1 -1
  284. package/include/SABER/LeakChecker.h +1 -1
  285. package/include/SABER/ProgSlice.h +8 -1
  286. package/include/SABER/SaberAnnotator.h +1 -1
  287. package/include/SABER/SaberCheckerAPI.h +1 -1
  288. package/include/SABER/SaberCondAllocator.h +1 -1
  289. package/include/SABER/SaberSVFGBuilder.h +1 -1
  290. package/include/SABER/SrcSnkDDA.h +8 -1
  291. package/include/SABER/SrcSnkSolver.h +1 -1
  292. package/include/Util/ExtAPI.h +3 -0
  293. package/include/Util/ExtAPI.json +1456 -44
  294. package/include/WPA/Andersen.h +5 -0
  295. package/include/WPA/TypeAnalysis.h +1 -1
  296. package/include/WPA/VersionedFlowSensitive.h +4 -0
  297. package/lib/CFL/CFLGraphBuilder.cpp +44 -0
  298. package/lib/DDA/ContextDDA.cpp +22 -0
  299. package/lib/DDA/DDAClient.cpp +22 -0
  300. package/lib/DDA/DDAPass.cpp +23 -0
  301. package/lib/DDA/DDAStat.cpp +22 -0
  302. package/lib/DDA/FlowDDA.cpp +22 -0
  303. package/lib/MTA/FSMPTA.cpp +22 -0
  304. package/lib/MTA/LockAnalysis.cpp +22 -0
  305. package/lib/MTA/MHP.cpp +23 -1
  306. package/lib/MTA/MTA.cpp +23 -0
  307. package/lib/MTA/MTAStat.cpp +22 -0
  308. package/lib/MTA/PCG.cpp +22 -0
  309. package/lib/MTA/TCT.cpp +23 -0
  310. package/lib/MemoryModel/LocationSet.cpp +1 -1
  311. package/lib/MemoryModel/PAGBuilderFromFile.cpp +1 -1
  312. package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
  313. package/lib/MemoryModel/PointerAnalysisImpl.cpp +23 -0
  314. package/lib/SABER/DoubleFreeChecker.cpp +1 -1
  315. package/lib/SABER/FileChecker.cpp +1 -1
  316. package/lib/SABER/LeakChecker.cpp +1 -1
  317. package/lib/SABER/ProgSlice.cpp +1 -1
  318. package/lib/SABER/SaberAnnotator.cpp +1 -1
  319. package/lib/SABER/SaberCheckerAPI.cpp +1 -1
  320. package/lib/SABER/SaberCondAllocator.cpp +1 -1
  321. package/lib/SABER/SaberSVFGBuilder.cpp +1 -1
  322. package/lib/SABER/SrcSnkDDA.cpp +1 -1
  323. package/lib/Util/ExtAPI.cpp +42 -4
  324. package/lib/WPA/Steensgaard.cpp +22 -0
  325. package/lib/WPA/TypeAnalysis.cpp +1 -1
  326. package/lib/WPA/WPAPass.cpp +1 -1
  327. package/package.json +1 -1
@@ -66,198 +66,198 @@ $(function() {
66
66
  <div class="title">PersistentPointsToDS.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="PersistentPointsToDS_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#ifndef PERSISTENT_POINTSTO_H_</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#define PERSISTENT_POINTSTO_H_</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="AbstractPointsToDS_8h.html">MemoryModel/AbstractPointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PersistentPointsToCache_8h.html">MemoryModel/PersistentPointsToCache.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00016"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html"> 16</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData</a>;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00018"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html"> 18</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentIncDFPTData.html">PersistentIncDFPTData</a>;</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet, <span class="keyword">typename</span> VersionedKey, <span class="keyword">typename</span> VersionedKeySet&gt;</div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html"> 20</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentVersionedPTData.html">PersistentVersionedPTData</a>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html"> 24</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;{</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> K, <span class="keyword">typename</span> KS, <span class="keyword">typename</span> D, <span class="keyword">typename</span> DS, <span class="keyword">typename</span> VK, <span class="keyword">typename</span> VKS&gt;</div><div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a5a0dfa2e5e989bcb30b913f37e561c35"> 27</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentVersionedPTData.html">PersistentVersionedPTData</a>;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aea8bb6da9d6d5a4ed65168aceee2f85a"> 28</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a8386ddd5a45bd490860685ca18543287"> 29</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentIncDFPTData.html">PersistentIncDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a6ca39340bb502c933c3dd6c1ab8f79c1"> 31</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentPTData.html#a6ca39340bb502c933c3dd6c1ab8f79c1">BasePTData</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a64864dcc7ec8a26244cdfbe8c25886a2"> 32</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentPTData.html#a64864dcc7ec8a26244cdfbe8c25886a2">PTDataTy</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f"> 34</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Key, PointsToID&gt;</a> <a class="code" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">KeyToIDMap</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aad89172e6e99d5ee576faa7bc74b36d8"> 35</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, KeySet&gt;</a> <a class="code" href="classSVF_1_1PersistentPTData.html#aad89172e6e99d5ee576faa7bc74b36d8">RevPtsMap</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a5b24a6efc462014ed8002cefee3c0e6e"> 38</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a5b24a6efc462014ed8002cefee3c0e6e">PersistentPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::PersBase)</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; : BasePTData(reversePT, ty), <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>(cache) { }</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a66a9367f0b965d18be8bb1247e1c2548"> 41</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a66a9367f0b965d18be8bb1247e1c2548">~PersistentPTData</a>() { }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#abf836f1b063b869215c7e9b53b013d3f"> 43</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#abf836f1b063b869215c7e9b53b013d3f">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>.clear();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>.clear();</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; }</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99"> 49</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">getPts</a>(<span class="keyword">const</span> Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[var];</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a916017f2cc924b10e72120d1d87afd34"> 55</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentPTData.html#a916017f2cc924b10e72120d1d87afd34">getRevPts</a>(<span class="keyword">const</span> Data &amp;data)<span class="keyword"> override</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; assert(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;PersistentPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>[data];</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;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a8d53322eadc657ed88a8b724647070b2"> 61</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a8d53322eadc657ed88a8b724647070b2">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; DataSet srcPts;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; srcPts.set(element);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">emplacePts</a>(srcPts);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">unionPtsFromId</a>(dstKey, srcId);</div><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;</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a236c780af73ab909a66a922bc8645ea4"> 69</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a236c780af73ab909a66a922bc8645ea4">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId = <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[srcKey];</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">unionPtsFromId</a>(dstKey, srcId);</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;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a9414aeb024e2c367b9777522aadd5d83"> 75</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a9414aeb024e2c367b9777522aadd5d83">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet&amp; srcData)<span class="keyword"> override</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">emplacePts</a>(srcData);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">unionPtsFromId</a>(dstKey, srcId);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#afb2dd005d3d2ad01bdad4b7a1af5477d"> 81</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#afb2dd005d3d2ad01bdad4b7a1af5477d">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword"> </span>{</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;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a10221452ea6ffed4ae51a9c6f9dc1e93"> 85</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a10221452ea6ffed4ae51a9c6f9dc1e93">clearPts</a>(<span class="keyword">const</span> Key &amp;var, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; DataSet toRemoveData;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; toRemoveData.set(element);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> toRemoveId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">emplacePts</a>(toRemoveData);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> varId = <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[var];</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> complementId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a86bf6959fb5587e350015d58d529af14">complementPts</a>(varId, toRemoveId);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">if</span> (varId != complementId)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; {</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[var] = complementId;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>[element], var);</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; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aff3437089686869faa772c44bca753b6"> 99</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aff3437089686869faa772c44bca753b6">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a2a83492ac0b641c67489a770aadc4ad0">clearRevPts</a>(<a class="code" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">getPts</a>(var), var);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[var] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">PersistentPointsToCache&lt;DataSet&gt;::emptyPointsToId</a>();</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#af8084d77fb666933fd0efe0df983074d"> 105</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#af8084d77fb666933fd0efe0df983074d">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a89c4e8c8edcc6744f298e90d721a0745">remapAllPts</a>();</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; }</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aadba2724dfe3cb745d9e9d73b8c3de67"> 110</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PersistentPTData.html#aadba2724dfe3cb745d9e9d73b8c3de67">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">if</span> (liveOnly)</div><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="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> KeyToIDMap::value_type &amp;ki : <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>)</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; ++allPts[<a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(ki.second)];</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; <span class="keywordflow">else</span></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; allPts = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab84d0806e87c982bf81ae309f28751e3">getAllPts</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</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="keywordflow">return</span> allPts;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; }</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a174c3cac13c839863171621ea25e609f"> 130</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a174c3cac13c839863171621ea25e609f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</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; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a4e896ec87d07e5b75401de4367d67458"> 135</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a4e896ec87d07e5b75401de4367d67458">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</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; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersBase;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</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="keyword">private</span>:</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8"> 144</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">unionPtsFromId</a>(<span class="keyword">const</span> Key &amp;dstKey, <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId)</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="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> dstId = <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[dstKey];</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> newDstId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a178b49cca2c22e874ff9e772cc4df72b">unionPts</a>(dstId, srcId);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordtype">bool</span> changed = newDstId != dstId;</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (changed)</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[dstKey] = newDstId;</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; <span class="comment">// Reverse points-to only needs to be handled when dst&#39;s</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="comment">// points-to set has changed (i.e., do it the first time only).</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</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; <span class="keyword">const</span> DataSet &amp;srcPts = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(srcId);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data &amp;d : srcPts) <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(dstKey, <a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>[d]);</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; }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> changed;</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"><a class="line" href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c"> 166</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c">clearSingleRevPts</a>(KeySet &amp;revSet, <span class="keyword">const</span> Key &amp;k)</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">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; {</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVFUtil::removeKey</a>(k, revSet);</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div><div class="line"><a name="l00174"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a2a83492ac0b641c67489a770aadc4ad0"> 174</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a2a83492ac0b641c67489a770aadc4ad0">clearRevPts</a>(<span class="keyword">const</span> DataSet &amp;pts, <span class="keyword">const</span> Key &amp;k)</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">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</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; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data &amp;d : pts) <a class="code" href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>[d], k);</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; }</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="keyword">protected</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f"> 183</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;<a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e"> 184</a></span>&#160; KeyToIDMap <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>;</div><div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563"> 185</a></span>&#160; RevPtsMap <a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;};</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html"> 190</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentDiffPTData.html">PersistentDiffPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#aa110fddf7d0cedfb66fcd37bae2c962c"> 193</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#aa110fddf7d0cedfb66fcd37bae2c962c">BasePTData</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a3a2cf38f220a831c4334614b835b57c6"> 194</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a3a2cf38f220a831c4334614b835b57c6">BaseDiffPTData</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#aa55e1c39fb0918c4f7f080a521f504f5"> 195</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#aa55e1c39fb0918c4f7f080a521f504f5">BasePersPTData</a>;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a778e8374e15bba331f1be99594970812"> 196</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a778e8374e15bba331f1be99594970812">PTDataTy</a>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a4e706309fe4bb40b4424251888363215"> 198</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">BasePersPTData::KeyToIDMap</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a4e706309fe4bb40b4424251888363215">KeyToIDMap</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ac008ee5f7e4d286f9e76d85989358305"> 199</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aad89172e6e99d5ee576faa7bc74b36d8">BasePersPTData::RevPtsMap</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ac008ee5f7e4d286f9e76d85989358305">RevPtsMap</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a18f90b2f4e54b47c4d6f2d50886a4411"> 202</a></span>&#160; <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a18f90b2f4e54b47c4d6f2d50886a4411">PersistentDiffPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::PersDiff)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; : BaseDiffPTData(reversePT, ty), <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>(cache), persPTData(cache, reversePT) { }</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a311ada9c9a0376c71dae24841cc60b7a"> 205</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a311ada9c9a0376c71dae24841cc60b7a">~PersistentDiffPTData</a>() { }</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a10504f854b1b390818f8ee12182d857c"> 207</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a10504f854b1b390818f8ee12182d857c">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; persPTData.clear();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; diffPtsMap.clear();</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; propaPtsMap.clear();</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;</div><div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed"> 214</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> persPTData.getPts(var);</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;</div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a7a12f89c0de40dbcb5fe48219a7c121b"> 219</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a7a12f89c0de40dbcb5fe48219a7c121b">getRevPts</a>(<span class="keyword">const</span> Data &amp;data)<span class="keyword"> override</span></div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; assert(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;PersistentDiffPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> persPTData.getRevPts(data);</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;</div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a9f748619f67f3ff9c4c4a429e6614989"> 225</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a9f748619f67f3ff9c4c4a429e6614989">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> persPTData.addPts(dstKey, element);</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a9cc43f58ea3be1b7fbc7df7cfe965c3c"> 230</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a9cc43f58ea3be1b7fbc7df7cfe965c3c">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> persPTData.unionPts(dstKey, srcKey);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#aa9aac7ff120abf87e7edfe233691f00f"> 235</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#aa9aac7ff120abf87e7edfe233691f00f">unionPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> DataSet &amp;srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> persPTData.unionPts(dstKey, srcDataSet);</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;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ab01a663b665d629c15f3531f18b5abc2"> 240</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ab01a663b665d629c15f3531f18b5abc2">clearPts</a>(<span class="keyword">const</span> Key &amp;var, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> persPTData.clearPts(var, element);</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;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ae4b558e119c7e3fae25a0b4509422c87"> 245</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ae4b558e119c7e3fae25a0b4509422c87">clearFullPts</a>(<span class="keyword">const</span> Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> persPTData.clearFullPts(var);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#add8c649853678b6c7acfa4217f1b7ee0"> 250</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#add8c649853678b6c7acfa4217f1b7ee0">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a89c4e8c8edcc6744f298e90d721a0745">remapAllPts</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ac7caee8468f12e87a70837a8f2e9685c"> 255</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ac7caee8468f12e87a70837a8f2e9685c">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="comment">// TODO.</span></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;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a76ae2ef87bc32c2f6466e7bc2dfad726"> 260</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDiffPTData.html#a76ae2ef87bc32c2f6466e7bc2dfad726">getDiffPts</a>(Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = diffPtsMap[var];</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ae42379dbabbd66dfd91e305673788ed3"> 266</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ae42379dbabbd66dfd91e305673788ed3">computeDiffPts</a>(Key &amp;var, <span class="keyword">const</span> DataSet &amp;all)<span class="keyword"> override</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> propaId = propaPtsMap[var];</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> allId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">emplacePts</a>(all);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="comment">// Diff is made up of the entire points-to set minus what has been propagated.</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> diffId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a86bf6959fb5587e350015d58d529af14">complementPts</a>(allId, propaId);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; diffPtsMap[var] = diffId;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="comment">// We&#39;ve now propagated the entire thing.</span></div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; propaPtsMap[var] = allId;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="comment">// Whether diff is empty or not; just need to check against the ID since it</span></div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">// is the only empty set.</span></div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> diffId != <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</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;</div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#adb2c450f2c93fbf630d91b8c2697fa06"> 282</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#adb2c450f2c93fbf630d91b8c2697fa06">updatePropaPtsMap</a>(Key &amp;src, Key &amp;dst)<span class="keyword"> override</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> dstId = propaPtsMap[dst];</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId = propaPtsMap[src];</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; propaPtsMap[dst] = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a17d33558208c19019e541ee167009494">intersectPts</a>(dstId, srcId);</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#aa00e0bfaf2d46f2aa83a37c7c9514edb"> 289</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#aa00e0bfaf2d46f2aa83a37c7c9514edb">clearPropaPts</a>(Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; propaPtsMap[var] = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</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;</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a3bad0126e25b0a7134e8ef25869bd40e"> 294</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a3bad0126e25b0a7134e8ef25869bd40e">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">return</span> persPTData.getAllPts(liveOnly);</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;</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#afb53f0b47cdad94379c3a4895980be9c"> 301</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#afb53f0b47cdad94379c3a4895980be9c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html">PersistentDiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; {</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a4f4b1869210228e9d1b4f3900b41bb88"> 306</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a4f4b1869210228e9d1b4f3900b41bb88">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</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> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersDiff;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a444bc59754b4c365327b7ef44baadcd2"> 313</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;<a class="code" href="classSVF_1_1PersistentDiffPTData.html#a444bc59754b4c365327b7ef44baadcd2">ptCache</a>;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a0d6620a7078bd60d16256ac48af58db9"> 315</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a0d6620a7078bd60d16256ac48af58db9">persPTData</a>;</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ac54339952e2734a6affdaa543fb3ed22"> 317</a></span>&#160; KeyToIDMap <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ac54339952e2734a6affdaa543fb3ed22">diffPtsMap</a>;</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#abffb5c9cfe1e306ce524ef1dc5ff18ad"> 319</a></span>&#160; KeyToIDMap <a class="code" href="classSVF_1_1PersistentDiffPTData.html#abffb5c9cfe1e306ce524ef1dc5ff18ad">propaPtsMap</a>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;};</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a54c206686c17101a0233fbbd3836c05c"> 327</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a54c206686c17101a0233fbbd3836c05c">BasePTData</a>;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#abb11d9bd24cb587bba6f762ab49b07c8"> 328</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#abb11d9bd24cb587bba6f762ab49b07c8">PTDataTy</a>;</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#af9facbe8f694b8447bb6ebe48b95ad17"> 329</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#af9facbe8f694b8447bb6ebe48b95ad17">BaseDFPTData</a>;</div><div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#afccad3b3163f25cc058334083f90041d"> 330</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#afccad3b3163f25cc058334083f90041d">BasePersPTData</a>;</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"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a76d8a4f907269e9980f39c531806e96b"> 332</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a76d8a4f907269e9980f39c531806e96b">LocID</a>;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#aee8871b4895d38bccb9078ad540f9f0f"> 333</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">BasePersPTData::KeyToIDMap</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#aee8871b4895d38bccb9078ad540f9f0f">KeyToIDMap</a>;</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a0d0318fa192eac88a4307112e30e9d90"> 334</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;LocID, KeyToIDMap&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a0d0318fa192eac88a4307112e30e9d90">DFKeyToIDMap</a>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a85e0aec789ea945bd4cfa9e29189d1b4"> 336</a></span>&#160; <a class="code" href="classSVF_1_1PersistentDFPTData.html#a85e0aec789ea945bd4cfa9e29189d1b4">PersistentDFPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::PersDataFlow)</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; : BaseDFPTData(reversePT, ty), <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>(cache), persPTData(cache, reversePT) { }</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad9ccba048d0c749d1c2cafc517f78181"> 339</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad9ccba048d0c749d1c2cafc517f78181">~PersistentDFPTData</a>() { }</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ab070b1baa6a01800edac36dc075107fd"> 341</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ab070b1baa6a01800edac36dc075107fd">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; dfInPtsMap.clear();</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; dfOutPtsMap.clear();</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; persPTData.clear();</div><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;</div><div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13"> 348</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">return</span> persPTData.getPts(var);</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a50c3d871edb13ac5b3f0d625deb6449a"> 353</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentDFPTData.html#a50c3d871edb13ac5b3f0d625deb6449a">getRevPts</a>(<span class="keyword">const</span> Data&amp;)<span class="keyword"> override</span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PersistentDFPTData::getRevPts: not supported yet!&quot;</span>);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordflow">return</span> *(KeySet*)<span class="keyword">nullptr</span>; <span class="comment">// suppress -Werror=return-type</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; }</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a0b757b12ace04b7b7d1e081ad1b742cf"> 359</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a0b757b12ace04b7b7d1e081ad1b742cf">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; <span class="keywordflow">return</span> persPTData.unionPts(dstKey, srcKey);</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; }</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a780dc63003f8a0a4c66c1548138fdd86"> 364</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a780dc63003f8a0a4c66c1548138fdd86">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet &amp;srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> persPTData.unionPts(dstKey, srcDataSet);</div><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;</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a95df7d565ba8e990b61b1c932c8d4273"> 369</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a95df7d565ba8e990b61b1c932c8d4273">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">return</span> persPTData.addPts(dstKey, element);</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;</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#af64c6a2c0a1b2044fac56a69e9db7cff"> 374</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#af64c6a2c0a1b2044fac56a69e9db7cff">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; persPTData.clearPts(var, element);</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;</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#afa828c0db9c030584e379e86cf0a25a9"> 379</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#afa828c0db9c030584e379e86cf0a25a9">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; persPTData.clearFullPts(var);</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;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#aac817d88beae87fcc961a2df7904e61c"> 384</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#aac817d88beae87fcc961a2df7904e61c">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a89c4e8c8edcc6744f298e90d721a0745">remapAllPts</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a1d168145358e0f69eca023dd9b4363ea"> 389</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a1d168145358e0f69eca023dd9b4363ea">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; persPTData.dumpPTData();</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</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"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a6e7d072fd2d420870bb959b68c200137"> 394</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a6e7d072fd2d420870bb959b68c200137">hasDFInSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> dfInPtsMap.find(loc) != dfInPtsMap.end();</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;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a67c4dec1150bdd8458046696578e5069"> 399</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a67c4dec1150bdd8458046696578e5069">hasDFOutSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> dfOutPtsMap.find(loc) != dfOutPtsMap.end();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ab490fd81739f2bd6dddabd5ce5beac3b"> 404</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ab490fd81739f2bd6dddabd5ce5beac3b">hasDFInSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> const override</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keyword">typename</span> DFKeyToIDMap::const_iterator foundInKeyToId = dfInPtsMap.find(loc);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keywordflow">if</span> (foundInKeyToId == dfInPtsMap.end()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keyword">const</span> KeyToIDMap &amp;inKeyToId = foundInKeyToId-&gt;second;</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> (inKeyToId.find(var) != inKeyToId.end());</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; }</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;</div><div class="line"><a name="l00412"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ace47d00f778bc4a714fc4f9d0cbd063c"> 412</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ace47d00f778bc4a714fc4f9d0cbd063c">hasDFOutSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> const override</span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keyword">typename</span> DFKeyToIDMap::const_iterator foundOutKeyToId = dfOutPtsMap.find(loc);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">if</span> (foundOutKeyToId == dfOutPtsMap.end()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">const</span> KeyToIDMap &amp;outKeyToId = foundOutKeyToId-&gt;second;</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">return</span> (outKeyToId.find(var) != outKeyToId.end());</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;</div><div class="line"><a name="l00420"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a26ca6565c4766e3d6ea6bf435ae910a3"> 420</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#a26ca6565c4766e3d6ea6bf435ae910a3">getDFInPtsSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = dfInPtsMap[loc][var];</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; }</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#aea89a705aed7e02ddbf73f861506536e"> 426</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#aea89a705aed7e02ddbf73f861506536e">getDFOutPtsSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = dfOutPtsMap[loc][var];</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; }</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;</div><div class="line"><a name="l00432"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a9b61c0557c6b1460af2328709011b32e"> 432</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a9b61c0557c6b1460af2328709011b32e">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, LocID dstLoc, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(getDFInPtIdRef(dstLoc, dstVar), getDFInPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; }</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a9e2dcff79d55b92bc84ec2bb42d851ac"> 437</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a9e2dcff79d55b92bc84ec2bb42d851ac">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, LocID dstLoc, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> updateDFInFromIn(srcLoc, srcVar, dstLoc, dstVar);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#abfacbe37d9e0b5f05eabec66c60c2e2b"> 442</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#abfacbe37d9e0b5f05eabec66c60c2e2b">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, LocID dstLoc, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(getDFInPtIdRef(dstLoc, dstVar), getDFOutPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a67a72d34b62884dee72e0b48b07a7e9f"> 447</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a67a72d34b62884dee72e0b48b07a7e9f">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, LocID dstLoc, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> updateDFInFromOut(srcLoc, srcVar, dstLoc, dstVar);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a81e6d2d313d7f23fcc2a3d0f5344317f"> 452</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a81e6d2d313d7f23fcc2a3d0f5344317f">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(getDFOutPtIdRef(dstLoc, dstVar), getDFInPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad341c691c11bbdeaa13cfe23919ed070"> 457</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad341c691c11bbdeaa13cfe23919ed070">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key &amp;singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; {</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; <span class="keyword">const</span> KeyToIDMap &amp;inKeyToId = dfInPtsMap[loc];</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> KeyToIDMap::value_type &amp;ki : inKeyToId)</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; {</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keyword">const</span> Key var = ki.first;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">if</span> (strongUpdates &amp;&amp; var == singleton) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var)) changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; }</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; }</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; }</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;</div><div class="line"><a name="l00476"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad7a4b3c68c4b8b70268ee7c919c624d5"> 476</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad7a4b3c68c4b8b70268ee7c919c624d5">clearAllDFOutUpdatedVar</a>(LocID)<span class="keyword"> override</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; }</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;</div><div class="line"><a name="l00481"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#aa9d13ece84d5f519031b4f3cdb429d61"> 481</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#aa9d13ece84d5f519031b4f3cdb429d61">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(persPTData.ptsMap[dstVar], getDFInPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a6761733754abf061e92125988a684fa3"> 486</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a6761733754abf061e92125988a684fa3">updateATVPts</a>(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(getDFOutPtIdRef(dstLoc, dstVar), persPTData.ptsMap[srcVar]);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; }</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a98f84bffeba6bd7dc140f1d5b63ff368"> 491</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a98f84bffeba6bd7dc140f1d5b63ff368">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts = persPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> DFKeyToIDMap::value_type &amp;lki : dfInPtsMap)</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; {</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> KeyToIDMap::value_type &amp;ki : lki.second)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; {</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; ++allPts[<a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(ki.second)];</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; }</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> DFKeyToIDMap::value_type &amp;lki : dfOutPtsMap)</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> KeyToIDMap::value_type &amp;ki : lki.second)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; ++allPts[<a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(ki.second)];</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; }</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; <span class="keywordflow">if</span> (!liveOnly)</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; {</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="comment">// Subtract 1 from each counted points-to set because the live points-to</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="comment">// sets have already been inserted and accounted for how often they occur.</span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="comment">// They will each occur one more time in the cache.</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; <span class="comment">// In essence, we want the ptCache.getAllPts() to just add the unused, non-GC&#39;d</span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="comment">// points-to sets to allPts.</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;::value_type</a> pto : allPts) pto.second -= 1;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; SVFUtil::mergePtsOccMaps&lt;DataSet&gt;(allPts, <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab84d0806e87c982bf81ae309f28751e3">getAllPts</a>());</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; }</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;</div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad374e8e6ddd5c397bd5ab6cf9b259968"> 526</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad374e8e6ddd5c397bd5ab6cf9b259968">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; {</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a575a441ddbe233d34937792b66d2b39c"> 531</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a575a441ddbe233d34937792b66d2b39c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> *ptd)</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; {</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersDataFlow</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersIncDataFlow;</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; }</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00539"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a2cb37d0403e1b34316c9c24a0d6ab66c"> 539</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a2cb37d0403e1b34316c9c24a0d6ab66c">unionPtsThroughIds</a>(<a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> &amp;dst, <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> &amp;src)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; {</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> oldDst = dst;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; dst = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a178b49cca2c22e874ff9e772cc4df72b">unionPts</a>(dst, src);</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> oldDst != dst;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; }</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;</div><div class="line"><a name="l00546"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#afc28b40eea7bad5276bbab30749d598b"> 546</a></span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#afc28b40eea7bad5276bbab30749d598b">getDFInPtIdRef</a>(LocID loc, <span class="keyword">const</span> Key &amp;var)</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; {</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">return</span> dfInPtsMap[loc][var];</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ab13b3a484a5ac22c47391f1b2eaa58a1"> 551</a></span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#ab13b3a484a5ac22c47391f1b2eaa58a1">getDFOutPtIdRef</a>(LocID loc, <span class="keyword">const</span> Key &amp;var)</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; {</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> dfOutPtsMap[loc][var];</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#af86313e37c5177e45456f813b9b46a4f"> 557</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#af86313e37c5177e45456f813b9b46a4f">ptCache</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a349c231f59ea554059a1891f1a530820"> 560</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a349c231f59ea554059a1891f1a530820">persPTData</a>;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a6b892b707524127928e269f0f0bbe868"> 563</a></span>&#160; DFKeyToIDMap <a class="code" href="classSVF_1_1PersistentDFPTData.html#a6b892b707524127928e269f0f0bbe868">dfInPtsMap</a>;</div><div class="line"><a name="l00565"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad77d7ccad393c995813f8c433c249dfc"> 565</a></span>&#160; DFKeyToIDMap <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad77d7ccad393c995813f8c433c249dfc">dfOutPtsMap</a>;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;};</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentIncDFPTData.html">PersistentIncDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;{</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a7751d9831519f8021626630dce499b1a"> 573</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a7751d9831519f8021626630dce499b1a">BasePTData</a>;</div><div class="line"><a name="l00574"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#acea7eb9ee0c1ee36906d50bce584b56a"> 574</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#acea7eb9ee0c1ee36906d50bce584b56a">BasePersPTData</a>;</div><div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ae56633d34e5fb4499c82d422646a91f0"> 575</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ae56633d34e5fb4499c82d422646a91f0">BaseDFPTData</a>;</div><div class="line"><a name="l00576"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#abce6fa91fed789ef25146440ee10872b"> 576</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#abce6fa91fed789ef25146440ee10872b">BasePersDFPTData</a>;</div><div class="line"><a name="l00577"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a440e0e1e1e449d5514dbc3f8a0da90d7"> 577</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a440e0e1e1e449d5514dbc3f8a0da90d7">PTDataTy</a>;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a77bdc80a999296bcfa8d9f1f92c933d1"> 579</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a77bdc80a999296bcfa8d9f1f92c933d1">LocID</a>;</div><div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#abad78c2ef84371b693dca206ebbb63ab"> 580</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;LocID, KeySet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#abad78c2ef84371b693dca206ebbb63ab">UpdatedVarMap</a>;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00584"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a495fede1f68c53956df3c033ef349940"> 584</a></span>&#160; <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a495fede1f68c53956df3c033ef349940">PersistentIncDFPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">BasePTData::PersIncDataFlow</a>)</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; : BasePersDFPTData(cache, reversePT, ty) { }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#aea074e213475c4dc632f8d21e8388868"> 587</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#aea074e213475c4dc632f8d21e8388868">~PersistentIncDFPTData</a>() { }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a5b015e6801e4320e45e7942f9db82a42"> 589</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a5b015e6801e4320e45e7942f9db82a42">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">if</span> (varHasNewDFInPts(srcLoc, srcVar)</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; &amp;&amp; this-&gt;unionPtsThroughIds(this-&gt;getDFInPtIdRef(dstLoc, dstVar), this-&gt;getDFInPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; {</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; setVarDFInSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; }</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;</div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a9191992b978b643f2d51633b2e330ec6"> 601</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a9191992b978b643f2d51633b2e330ec6">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">if</span> (varHasNewDFOutPts(srcLoc, srcVar)</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; &amp;&amp; this-&gt;unionPtsThroughIds(this-&gt;getDFInPtIdRef(dstLoc, dstVar), this-&gt;getDFOutPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; setVarDFInSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; }</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;</div><div class="line"><a name="l00613"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a6a26ddacfd726c7078ae560a6b50ad6b"> 613</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a6a26ddacfd726c7078ae560a6b50ad6b">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordflow">if</span> (varHasNewDFInPts(srcLoc, srcVar))</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; {</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; removeVarFromDFInUpdatedSet(srcLoc, srcVar);</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <span class="keywordflow">if</span> (this-&gt;unionPtsThroughIds(this-&gt;getDFOutPtIdRef(dstLoc, dstVar), this-&gt;getDFInPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; {</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; setVarDFOutSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; }</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; }</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;</div><div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a218ebd39a42b5de8910b98bef9d04f7d"> 628</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a218ebd39a42b5de8910b98bef9d04f7d">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="keywordflow">if</span> (this-&gt;unionPtsThroughIds(this-&gt;getDFInPtIdRef(dstLoc, dstVar), this-&gt;getDFOutPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; {</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; setVarDFInSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; }</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; }</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;</div><div class="line"><a name="l00639"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a2259da9defa195350b3f70cd16c3f2ec"> 639</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a2259da9defa195350b3f70cd16c3f2ec">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <span class="keywordflow">if</span> (this-&gt;unionPtsThroughIds(this-&gt;getDFInPtIdRef(dstLoc, dstVar), this-&gt;getDFInPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; {</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; setVarDFInSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; }</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; }</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;</div><div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a6a59e2297b72cc30553db5e45da70f46"> 650</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a6a59e2297b72cc30553db5e45da70f46">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key&amp; singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keyword">const</span> KeySet vars = getDFInUpdatedVar(loc);</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Key &amp;var : vars)</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; {</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">if</span> (strongUpdates &amp;&amp; var == singleton) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var)) changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; }</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; }</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; }</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;</div><div class="line"><a name="l00668"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ae4732dd1897883fafa98454b46134bfb"> 668</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ae4732dd1897883fafa98454b46134bfb">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">if</span> (varHasNewDFInPts(srcLoc, srcVar))</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; {</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; removeVarFromDFInUpdatedSet(srcLoc, srcVar);</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="keywordflow">return</span> this-&gt;unionPtsThroughIds(this-&gt;persPTData.ptsMap[dstVar], this-&gt;getDFInPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; }</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; }</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a002e6d234d0ad0c74a0976046e440f71"> 679</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a002e6d234d0ad0c74a0976046e440f71">updateATVPts</a>(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; <span class="keywordflow">if</span> (this-&gt;unionPtsThroughIds(this-&gt;getDFOutPtIdRef(dstLoc, dstVar), this-&gt;persPTData.ptsMap[srcVar]))</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; {</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; setVarDFOutSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; }</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; }</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;</div><div class="line"><a name="l00690"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a815a7c54c1533f16c3efd0796044afc2"> 690</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a815a7c54c1533f16c3efd0796044afc2">clearAllDFOutUpdatedVar</a>(LocID loc)<span class="keyword"> override</span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFOutSet(loc))</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; {</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keyword">const</span> KeySet vars = getDFOutUpdatedVar(loc);</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Key &amp;var : vars)</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; {</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; removeVarFromDFOutUpdatedSet(loc, var);</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; }</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; }</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a5e8036d18088ed272ab052b5cd6ef1ce"> 702</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a5e8036d18088ed272ab052b5cd6ef1ce">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; outUpdatedVarMap.clear();</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; inUpdatedVarMap.clear();</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; BasePersDFPTData::clear();</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; }</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a656434f7b67aabf25f6dba400d95f2bb"> 711</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a656434f7b67aabf25f6dba400d95f2bb">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html">PersistentIncDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; {</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; }</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;</div><div class="line"><a name="l00716"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a47c2fbf8b959aae3166b9757b12880a7"> 716</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a47c2fbf8b959aae3166b9757b12880a7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> *ptd)</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; {</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">BasePTData::PersIncDataFlow</a>;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFInSetUpdated(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; {</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(var, inUpdatedVarMap[loc]);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div><div class="line"><a name="l00733"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ad449df82589efb4c40affb5fdc46f479"> 733</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ad449df82589efb4c40affb5fdc46f479">removeVarFromDFInUpdatedSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; {</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keyword">typename</span> UpdatedVarMap::iterator it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordflow">if</span> (it != inUpdatedVarMap.end()) it-&gt;second.erase(var);</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; }</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a56764f78042a2a9229d3b76861b54952"> 740</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a56764f78042a2a9229d3b76861b54952">varHasNewDFInPts</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keyword">typename</span> UpdatedVarMap::iterator it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <span class="keywordflow">if</span> (it != inUpdatedVarMap.end()) <span class="keywordflow">return</span> it-&gt;second.find(var) != it-&gt;second.end();</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; }</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;</div><div class="line"><a name="l00748"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a1bd459f50c328974294930698fc61b8e"> 748</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a1bd459f50c328974294930698fc61b8e">getDFInUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; {</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; <span class="keywordflow">return</span> inUpdatedVarMap[loc];</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;</div><div class="line"><a name="l00757"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#aa9f6b38595cabbb583c52217188457e8"> 757</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#aa9f6b38595cabbb583c52217188457e8">setVarDFOutSetUpdated</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; {</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(var, outUpdatedVarMap[loc]);</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ad1a2cd17519912b1d7571eeddcdc0060"> 763</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ad1a2cd17519912b1d7571eeddcdc0060">removeVarFromDFOutUpdatedSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; {</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keyword">typename</span> UpdatedVarMap::iterator it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">if</span> (it != outUpdatedVarMap.end()) it-&gt;second.erase(var);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; }</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;</div><div class="line"><a name="l00770"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ae44f71f2ff837fbdf9b6e77f609c0c53"> 770</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ae44f71f2ff837fbdf9b6e77f609c0c53">varHasNewDFOutPts</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; {</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keyword">typename</span> UpdatedVarMap::iterator it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">if</span> (it != outUpdatedVarMap.end()) <span class="keywordflow">return</span> it-&gt;second.find(var) != it-&gt;second.end();</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; }</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#aa50d20f82143fd56cbe468b29bf9e11e"> 778</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#aa50d20f82143fd56cbe468b29bf9e11e">getDFOutUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">return</span> outUpdatedVarMap[loc];</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; }</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a054f8e2a0668387c092b2802e64a4df0"> 786</a></span>&#160; UpdatedVarMap <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a054f8e2a0668387c092b2802e64a4df0">outUpdatedVarMap</a>;</div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a106391cd8eefab1740b54cd9bbacccad"> 787</a></span>&#160; UpdatedVarMap <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a106391cd8eefab1740b54cd9bbacccad">inUpdatedVarMap</a>;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;};</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet, <span class="keyword">typename</span> VersionedKey, <span class="keyword">typename</span> VersionedKeySet&gt;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentVersionedPTData.html">PersistentVersionedPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData</a>&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;{</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00798"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ad4586331863d67e78c54d919694b58db"> 798</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ad4586331863d67e78c54d919694b58db">BasePTData</a>;</div><div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ab71b82478d74f1a20ce3de479f2d8d5c"> 799</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ab71b82478d74f1a20ce3de479f2d8d5c">BaseVersionedPTData</a>;</div><div class="line"><a name="l00800"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a6051aa255081543388a8f9077012834c"> 800</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a6051aa255081543388a8f9077012834c">PTDataTy</a>;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;</div><div class="line"><a name="l00802"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a1927ccf9bb74b698f540f683e7f0d0f2"> 802</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;::KeyToIDMap</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a1927ccf9bb74b698f540f683e7f0d0f2">KeyToIDMap</a>;</div><div class="line"><a name="l00803"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a2ee473a1654b7d134a602268a2b70248"> 803</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;VersionedKey, VersionedKeySet, Data, DataSet&gt;::KeyToIDMap</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a2ee473a1654b7d134a602268a2b70248">VersionedKeyToIDMap</a>;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;</div><div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a5cecb78af456e2241ff8554441b48d61"> 805</a></span>&#160; <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a5cecb78af456e2241ff8554441b48d61">PersistentVersionedPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::PersVersioned)</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; : BaseVersionedPTData(reversePT, ty), tlPTData(cache, reversePT), atPTData(cache, reversePT) { }</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a2252fcbc06243787b6854d826373da1d"> 808</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a2252fcbc06243787b6854d826373da1d">~PersistentVersionedPTData</a>() { }</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;</div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ac563829c0d6d091c905bfe16580ceb47"> 810</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ac563829c0d6d091c905bfe16580ceb47">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; tlPTData.clear();</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; atPTData.clear();</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; }</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160;</div><div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#afe80884fa8227e50f28631e20aa6fdf6"> 816</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentVersionedPTData.html#afe80884fa8227e50f28631e20aa6fdf6">getPts</a>(<span class="keyword">const</span> Key&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">return</span> tlPTData.getPts(vk);</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; }</div><div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820"> 820</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820">getPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="keywordflow">return</span> atPTData.getPts(vk);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; }</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#aafa09ff01060e43f08278963179eec30"> 825</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#aafa09ff01060e43f08278963179eec30">getRevPts</a>(<span class="keyword">const</span> Data &amp;data)<span class="keyword"> override</span></div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; assert(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;PersistentVersionedPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">return</span> tlPTData.getRevPts(data);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</div><div class="line"><a name="l00830"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a2adcebb6cf561eb00e3e05d486c86a9c"> 830</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> VersionedKeySet&amp; <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a2adcebb6cf561eb00e3e05d486c86a9c">getVersionedKeyRevPts</a>(<span class="keyword">const</span> Data &amp;data)<span class="keyword"> override</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; assert(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;PersistentVersionedPTData::getVersionedKeyRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">return</span> atPTData.getRevPts(data);</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a7f3730473af9218bea520ec0498fb4ac"> 836</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a7f3730473af9218bea520ec0498fb4ac">addPts</a>(<span class="keyword">const</span> Key&amp; k, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">return</span> tlPTData.addPts(k, element);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div><div class="line"><a name="l00840"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ae4877cf4db5b1da5e7d05fe65ae8ed32"> 840</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ae4877cf4db5b1da5e7d05fe65ae8ed32">addPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keywordflow">return</span> atPTData.addPts(vk, element);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; }</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#afe1f57d265c0910ec26567ce850b8421"> 845</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#afe1f57d265c0910ec26567ce850b8421">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div><div class="line"><a name="l00849"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ab0299bcfee10af8b6ea59444c4d0299d"> 849</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ab0299bcfee10af8b6ea59444c4d0299d">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; }</div><div class="line"><a name="l00853"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a8ba8e547bf572cd7403cb4fe52c19908"> 853</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a8ba8e547bf572cd7403cb4fe52c19908">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> atPTData.unionPtsFromId(dstVar, tlPTData.ptsMap[srcVar]);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div><div class="line"><a name="l00857"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a83b7e86c11b03889d70b4dff46138987"> 857</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a83b7e86c11b03889d70b4dff46138987">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPtsFromId(dstVar, atPTData.ptsMap[srcVar]);</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; }</div><div class="line"><a name="l00861"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a00151507a86b71f99e43fa87b59d65bb"> 861</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a00151507a86b71f99e43fa87b59d65bb">unionPts</a>(<span class="keyword">const</span> Key &amp;dstVar, <span class="keyword">const</span> DataSet &amp;srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; }</div><div class="line"><a name="l00865"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ac4b8dc40514b50a77565a385b9a13ca5"> 865</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ac4b8dc40514b50a77565a385b9a13ca5">unionPts</a>(<span class="keyword">const</span> VersionedKey &amp;dstVar, <span class="keyword">const</span> DataSet &amp;srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; }</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;</div><div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a9f5bb9d2020973660268c4e5ac98cb61"> 870</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a9f5bb9d2020973660268c4e5ac98cb61">clearPts</a>(<span class="keyword">const</span> Key&amp; k, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; tlPTData.clearPts(k, element);</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; }</div><div class="line"><a name="l00874"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#afe724603022a8fed7469f9ecd633febc"> 874</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#afe724603022a8fed7469f9ecd633febc">clearPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; atPTData.clearPts(vk, element);</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;</div><div class="line"><a name="l00879"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a5c31a5faad444bd19005d06ba28d0185"> 879</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a5c31a5faad444bd19005d06ba28d0185">clearFullPts</a>(<span class="keyword">const</span> Key&amp; k)<span class="keyword"> override</span></div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; tlPTData.clearFullPts(k);</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; }</div><div class="line"><a name="l00883"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a78f2b0ee440ed5b358928ee775e95564"> 883</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a78f2b0ee440ed5b358928ee775e95564">clearFullPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; atPTData.clearFullPts(vk);</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; }</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160;</div><div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a0b4feff5bc406088216d9e45941fe3ef"> 888</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a0b4feff5bc406088216d9e45941fe3ef">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="comment">// tlPTData and atPTData use the same cache.</span></div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; tlPTData.remapAllPts();</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; }</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160;</div><div class="line"><a name="l00894"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a6c9ad3635f73b805289cc1f14cdcf09a"> 894</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a6c9ad3635f73b805289cc1f14cdcf09a">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <span class="comment">// Explicitly pass in true because if we call it with false,</span></div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <span class="comment">// we will double up on the cache, since it is shared with atPTData.</span></div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; <span class="comment">// if liveOnly == false, we will handle it in the if below.</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts = tlPTData.getAllPts(<span class="keyword">true</span>);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; SVFUtil::mergePtsOccMaps&lt;DataSet&gt;(allPts, atPTData.getAllPts(<span class="keyword">true</span>));</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160;</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">if</span> (!liveOnly)</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// Subtract 1 from each counted points-to set because the live points-to</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="comment">// sets have already been inserted and accounted for how often they occur.</span></div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="comment">// They will each occur one more time in the cache.</span></div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="comment">// In essence, we want the ptCache.getAllPts() to just add the unused, non-GC&#39;d</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="comment">// points-to sets to allPts.</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;::value_type</a> &amp;pto : allPts) pto.second -= 1;</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; SVFUtil::mergePtsOccMaps&lt;DataSet&gt;(allPts, tlPTData.ptCache.getAllPts());</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; }</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;</div><div class="line"><a name="l00916"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a364fc243fe230342b209bb0c3a7d0966"> 916</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a364fc243fe230342b209bb0c3a7d0966">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;== Top-level points-to information\n&quot;</span>;</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; tlPTData.dumpPTData();</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;== Address-taken points-to information\n&quot;</span>;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; atPTData.dumpPTData();</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; }</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00926"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a28a8bf95351e295e65360bf16241a5da"> 926</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a28a8bf95351e295e65360bf16241a5da">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html">PersistentVersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> *)</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; }</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;</div><div class="line"><a name="l00931"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a1f85475cb6690bb1caa003c5a3aec92f"> 931</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a1f85475cb6690bb1caa003c5a3aec92f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; {</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersVersioned;</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; }</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00939"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a29104a2d53d94805e142f778d3d21ad5"> 939</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a29104a2d53d94805e142f778d3d21ad5">tlPTData</a>;</div><div class="line"><a name="l00941"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a61b44f6d63cca013da2b278f47298473"> 941</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;VersionedKey, VersionedKeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a61b44f6d63cca013da2b278f47298473">atPTData</a>;</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160;};</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160;<span class="preprocessor">#endif // MUTABLE_POINTSTO_H_</span></div><div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a054f8e2a0668387c092b2802e64a4df0"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a054f8e2a0668387c092b2802e64a4df0">SVF::PersistentIncDFPTData::outUpdatedVarMap</a></div><div class="ttdeci">UpdatedVarMap outUpdatedVarMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00786">PersistentPointsToDS.h:786</a></div></div>
70
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a002e6d234d0ad0c74a0976046e440f71"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a002e6d234d0ad0c74a0976046e440f71">SVF::PersistentIncDFPTData::updateATVPts</a></div><div class="ttdeci">virtual bool updateATVPts(const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00679">PersistentPointsToDS.h:679</a></div></div>
71
- <div class="ttc" id="classSVF_1_1VersionedPTData_html"><div class="ttname"><a href="classSVF_1_1VersionedPTData.html">SVF::VersionedPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00235">AbstractPointsToDS.h:235</a></div></div>
72
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a81e6d2d313d7f23fcc2a3d0f5344317f"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a81e6d2d313d7f23fcc2a3d0f5344317f">SVF::PersistentDFPTData::updateDFOutFromIn</a></div><div class="ttdeci">virtual bool updateDFOutFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00452">PersistentPointsToDS.h:452</a></div></div>
73
- <div class="ttc" id="classSVF_1_1PTData_html_a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a"><div class="ttname"><a href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">SVF::PTData::PersIncDataFlow</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00058">AbstractPointsToDS.h:58</a></div></div>
74
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_afccad3b3163f25cc058334083f90041d"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#afccad3b3163f25cc058334083f90041d">SVF::PersistentDFPTData::BasePersPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; BasePersPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00330">PersistentPointsToDS.h:330</a></div></div>
75
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a1bd459f50c328974294930698fc61b8e"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a1bd459f50c328974294930698fc61b8e">SVF::PersistentIncDFPTData::getDFInUpdatedVar</a></div><div class="ttdeci">const KeySet &amp; getDFInUpdatedVar(LocID loc)</div><div class="ttdoc">Get all variables which have new pts informationin loc&amp;#39;s IN set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00748">PersistentPointsToDS.h:748</a></div></div>
76
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html">SVF::PersistentDiffPTData</a></div><div class="ttdoc">DiffPTData implemented with a persistent points-to backing. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00190">PersistentPointsToDS.h:190</a></div></div>
77
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ae4732dd1897883fafa98454b46134bfb"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ae4732dd1897883fafa98454b46134bfb">SVF::PersistentIncDFPTData::updateTLVPts</a></div><div class="ttdeci">virtual bool updateTLVPts(LocID srcLoc, const Key &amp;srcVar, const Key &amp;dstVar) override</div><div class="ttdoc">Update points-to set of top-level pointers with IN[srcLoc:srcVar]. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00668">PersistentPointsToDS.h:668</a></div></div>
78
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a9b61c0557c6b1460af2328709011b32e"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a9b61c0557c6b1460af2328709011b32e">SVF::PersistentDFPTData::updateDFInFromIn</a></div><div class="ttdeci">virtual bool updateDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00432">PersistentPointsToDS.h:432</a></div></div>
79
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_aa110fddf7d0cedfb66fcd37bae2c962c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#aa110fddf7d0cedfb66fcd37bae2c962c">SVF::PersistentDiffPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00193">PersistentPointsToDS.h:193</a></div></div>
80
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_afb2dd005d3d2ad01bdad4b7a1af5477d"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#afb2dd005d3d2ad01bdad4b7a1af5477d">SVF::PersistentPTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData() override</div><div class="ttdoc">Dump stored keys and points-to sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00081">PersistentPointsToDS.h:81</a></div></div>
81
- <div class="ttc" id="classSVF_1_1DiffPTData_html"><div class="ttname"><a href="classSVF_1_1DiffPTData.html">SVF::DiffPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00115">AbstractPointsToDS.h:115</a></div></div>
82
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_aa55e1c39fb0918c4f7f080a521f504f5"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#aa55e1c39fb0918c4f7f080a521f504f5">SVF::PersistentDiffPTData::BasePersPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; BasePersPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00195">PersistentPointsToDS.h:195</a></div></div>
83
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a5cecb78af456e2241ff8554441b48d61"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a5cecb78af456e2241ff8554441b48d61">SVF::PersistentVersionedPTData::PersistentVersionedPTData</a></div><div class="ttdeci">PersistentVersionedPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersVersioned)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00805">PersistentPointsToDS.h:805</a></div></div>
84
- <div class="ttc" id="classSVF_1_1PersistentPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html">SVF::PersistentPTData</a></div><div class="ttdoc">PTData backed by a PersistentPointsToCache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00024">PersistentPointsToDS.h:24</a></div></div>
85
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ae44f71f2ff837fbdf9b6e77f609c0c53"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ae44f71f2ff837fbdf9b6e77f609c0c53">SVF::PersistentIncDFPTData::varHasNewDFOutPts</a></div><div class="ttdeci">bool varHasNewDFOutPts(LocID loc, const Key &amp;var)</div><div class="ttdoc">Return TRUE if var has a new pts in loc&amp;#39;s OUT set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00770">PersistentPointsToDS.h:770</a></div></div>
86
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ab0299bcfee10af8b6ea59444c4d0299d"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ab0299bcfee10af8b6ea59444c4d0299d">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &amp;dstVar, const VersionedKey &amp;srcVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00849">PersistentPointsToDS.h:849</a></div></div>
87
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a6c9ad3635f73b805289cc1f14cdcf09a"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a6c9ad3635f73b805289cc1f14cdcf09a">SVF::PersistentVersionedPTData::getAllPts</a></div><div class="ttdeci">virtual Map&lt; DataSet, unsigned &gt; getAllPts(bool liveOnly) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00894">PersistentPointsToDS.h:894</a></div></div>
88
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a2cb37d0403e1b34316c9c24a0d6ab66c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a2cb37d0403e1b34316c9c24a0d6ab66c">SVF::PersistentDFPTData::unionPtsThroughIds</a></div><div class="ttdeci">bool unionPtsThroughIds(PointsToID &amp;dst, PointsToID &amp;src)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00539">PersistentPointsToDS.h:539</a></div></div>
89
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a146a25bf9ae76f4c3c117433df9d382f"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">SVF::PersistentPTData::ptCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; DataSet &gt; &amp; ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00183">PersistentPointsToDS.h:183</a></div></div>
90
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a76ae2ef87bc32c2f6466e7bc2dfad726"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a76ae2ef87bc32c2f6466e7bc2dfad726">SVF::PersistentDiffPTData::getDiffPts</a></div><div class="ttdeci">virtual const DataSet &amp; getDiffPts(Key &amp;var) override</div><div class="ttdoc">Get diff points to. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00260">PersistentPointsToDS.h:260</a></div></div>
91
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a2adcebb6cf561eb00e3e05d486c86a9c"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a2adcebb6cf561eb00e3e05d486c86a9c">SVF::PersistentVersionedPTData::getVersionedKeyRevPts</a></div><div class="ttdeci">virtual const VersionedKeySet &amp; getVersionedKeyRevPts(const Data &amp;data) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00830">PersistentPointsToDS.h:830</a></div></div>
92
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98d176e384469e0308bfee2061ef84b5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">SVF::PersistentPointsToCache::emplacePts</a></div><div class="ttdeci">PointsToID emplacePts(const Data &amp;pts)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00089">PersistentPointsToCache.h:89</a></div></div>
93
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ac563829c0d6d091c905bfe16580ceb47"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ac563829c0d6d091c905bfe16580ceb47">SVF::PersistentVersionedPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00810">PersistentPointsToDS.h:810</a></div></div>
94
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a85e0aec789ea945bd4cfa9e29189d1b4"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a85e0aec789ea945bd4cfa9e29189d1b4">SVF::PersistentDFPTData::PersistentDFPTData</a></div><div class="ttdeci">PersistentDFPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersDataFlow)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00336">PersistentPointsToDS.h:336</a></div></div>
95
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a9414aeb024e2c367b9777522aadd5d83"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a9414aeb024e2c367b9777522aadd5d83">SVF::PersistentPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const DataSet &amp;srcData) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00075">PersistentPointsToDS.h:75</a></div></div>
96
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_afa828c0db9c030584e379e86cf0a25a9"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#afa828c0db9c030584e379e86cf0a25a9">SVF::PersistentDFPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &amp;var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00379">PersistentPointsToDS.h:379</a></div></div>
97
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad9ccba048d0c749d1c2cafc517f78181"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad9ccba048d0c749d1c2cafc517f78181">SVF::PersistentDFPTData::~PersistentDFPTData</a></div><div class="ttdeci">virtual ~PersistentDFPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00339">PersistentPointsToDS.h:339</a></div></div>
69
+ <a href="PersistentPointsToDS_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * PersistentPointsToDS.h</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * Authors: Mohamad Barbar</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * The implementation is based on</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * Mohamad Barbar and Yulei Sui. Hash Consed Points-To Sets.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * 28th Static Analysis Symposium (SAS&#39;21)</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifndef PERSISTENT_POINTSTO_H_</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#define PERSISTENT_POINTSTO_H_</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="AbstractPointsToDS_8h.html">MemoryModel/AbstractPointsToDS.h</a>&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PersistentPointsToCache_8h.html">MemoryModel/PersistentPointsToCache.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html"> 26</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData</a>;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html"> 28</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentIncDFPTData.html">PersistentIncDFPTData</a>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet, <span class="keyword">typename</span> VersionedKey, <span class="keyword">typename</span> VersionedKeySet&gt;</div><div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html"> 30</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentVersionedPTData.html">PersistentVersionedPTData</a>;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html"> 34</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PTData.html">PTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;{</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> K, <span class="keyword">typename</span> KS, <span class="keyword">typename</span> D, <span class="keyword">typename</span> DS, <span class="keyword">typename</span> VK, <span class="keyword">typename</span> VKS&gt;</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a5a0dfa2e5e989bcb30b913f37e561c35"> 37</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentVersionedPTData.html">PersistentVersionedPTData</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aea8bb6da9d6d5a4ed65168aceee2f85a"> 38</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a8386ddd5a45bd490860685ca18543287"> 39</a></span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentIncDFPTData.html">PersistentIncDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a6ca39340bb502c933c3dd6c1ab8f79c1"> 41</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentPTData.html#a6ca39340bb502c933c3dd6c1ab8f79c1">BasePTData</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a64864dcc7ec8a26244cdfbe8c25886a2"> 42</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentPTData.html#a64864dcc7ec8a26244cdfbe8c25886a2">PTDataTy</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f"> 44</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Key, PointsToID&gt;</a> <a class="code" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">KeyToIDMap</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aad89172e6e99d5ee576faa7bc74b36d8"> 45</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, KeySet&gt;</a> <a class="code" href="classSVF_1_1PersistentPTData.html#aad89172e6e99d5ee576faa7bc74b36d8">RevPtsMap</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a5b24a6efc462014ed8002cefee3c0e6e"> 48</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a5b24a6efc462014ed8002cefee3c0e6e">PersistentPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::PersBase)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; : BasePTData(reversePT, ty), <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>(cache) { }</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a66a9367f0b965d18be8bb1247e1c2548"> 51</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a66a9367f0b965d18be8bb1247e1c2548">~PersistentPTData</a>() { }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#abf836f1b063b869215c7e9b53b013d3f"> 53</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#abf836f1b063b869215c7e9b53b013d3f">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>.clear();</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>.clear();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</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"><a class="line" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99"> 59</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet&amp; <a class="code" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">getPts</a>(<span class="keyword">const</span> Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[var];</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a916017f2cc924b10e72120d1d87afd34"> 65</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentPTData.html#a916017f2cc924b10e72120d1d87afd34">getRevPts</a>(<span class="keyword">const</span> Data &amp;data)<span class="keyword"> override</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; assert(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;PersistentPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>[data];</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;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a8d53322eadc657ed88a8b724647070b2"> 71</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a8d53322eadc657ed88a8b724647070b2">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; DataSet srcPts;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; srcPts.set(element);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">emplacePts</a>(srcPts);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">unionPtsFromId</a>(dstKey, srcId);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a236c780af73ab909a66a922bc8645ea4"> 79</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a236c780af73ab909a66a922bc8645ea4">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId = <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[srcKey];</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">unionPtsFromId</a>(dstKey, srcId);</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;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a9414aeb024e2c367b9777522aadd5d83"> 85</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a9414aeb024e2c367b9777522aadd5d83">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet&amp; srcData)<span class="keyword"> override</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">emplacePts</a>(srcData);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">unionPtsFromId</a>(dstKey, srcId);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#afb2dd005d3d2ad01bdad4b7a1af5477d"> 91</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#afb2dd005d3d2ad01bdad4b7a1af5477d">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a10221452ea6ffed4ae51a9c6f9dc1e93"> 95</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a10221452ea6ffed4ae51a9c6f9dc1e93">clearPts</a>(<span class="keyword">const</span> Key &amp;var, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; DataSet toRemoveData;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; toRemoveData.set(element);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> toRemoveId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">emplacePts</a>(toRemoveData);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> varId = <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[var];</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> complementId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a86bf6959fb5587e350015d58d529af14">complementPts</a>(varId, toRemoveId);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">if</span> (varId != complementId)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[var] = complementId;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>[element], var);</div><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; }</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#aff3437089686869faa772c44bca753b6"> 109</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aff3437089686869faa772c44bca753b6">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a2a83492ac0b641c67489a770aadc4ad0">clearRevPts</a>(<a class="code" href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">getPts</a>(var), var);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[var] = <a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">PersistentPointsToCache&lt;DataSet&gt;::emptyPointsToId</a>();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#af8084d77fb666933fd0efe0df983074d"> 115</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#af8084d77fb666933fd0efe0df983074d">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a89c4e8c8edcc6744f298e90d721a0745">remapAllPts</a>();</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"><a class="line" href="classSVF_1_1PersistentPTData.html#aadba2724dfe3cb745d9e9d73b8c3de67"> 120</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PersistentPTData.html#aadba2724dfe3cb745d9e9d73b8c3de67">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (liveOnly)</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="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> KeyToIDMap::value_type &amp;ki : <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; ++allPts[<a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(ki.second)];</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; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">else</span></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; allPts = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab84d0806e87c982bf81ae309f28751e3">getAllPts</a>();</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;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> allPts;</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;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a174c3cac13c839863171621ea25e609f"> 140</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a174c3cac13c839863171621ea25e609f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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;</div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a4e896ec87d07e5b75401de4367d67458"> 145</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a4e896ec87d07e5b75401de4367d67458">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</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="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersBase;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</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="keyword">private</span>:</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8"> 154</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">unionPtsFromId</a>(<span class="keyword">const</span> Key &amp;dstKey, <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> dstId = <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[dstKey];</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> newDstId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a178b49cca2c22e874ff9e772cc4df72b">unionPts</a>(dstId, srcId);</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="keywordtype">bool</span> changed = newDstId != dstId;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">if</span> (changed)</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_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>[dstKey] = newDstId;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="comment">// Reverse points-to only needs to be handled when dst&#39;s</span></div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="comment">// points-to set has changed (i.e., do it the first time only).</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</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="keyword">const</span> DataSet &amp;srcPts = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(srcId);</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data &amp;d : srcPts) <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(dstKey, <a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>[d]);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; }</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> changed;</div><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;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c"> 176</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c">clearSingleRevPts</a>(KeySet &amp;revSet, <span class="keyword">const</span> Key &amp;k)</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; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a>)</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="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVFUtil::removeKey</a>(k, revSet);</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; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a2a83492ac0b641c67489a770aadc4ad0"> 184</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a2a83492ac0b641c67489a770aadc4ad0">clearRevPts</a>(<span class="keyword">const</span> DataSet &amp;pts, <span class="keyword">const</span> Key &amp;k)</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; <span class="keywordflow">if</span> (this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</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; <span class="keywordflow">for</span> (<span class="keyword">const</span> Data &amp;d : pts) <a class="code" href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c">clearSingleRevPts</a>(<a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>[d], k);</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; }</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;<span class="keyword">protected</span>:</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f"> 193</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;<a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e"> 194</a></span>&#160; KeyToIDMap <a class="code" href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">ptsMap</a>;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563"> 195</a></span>&#160; RevPtsMap <a class="code" href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">revPtsMap</a>;</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;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html"> 200</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentDiffPTData.html">PersistentDiffPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#aa110fddf7d0cedfb66fcd37bae2c962c"> 203</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#aa110fddf7d0cedfb66fcd37bae2c962c">BasePTData</a>;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a3a2cf38f220a831c4334614b835b57c6"> 204</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DiffPTData.html">DiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a3a2cf38f220a831c4334614b835b57c6">BaseDiffPTData</a>;</div><div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#aa55e1c39fb0918c4f7f080a521f504f5"> 205</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#aa55e1c39fb0918c4f7f080a521f504f5">BasePersPTData</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a778e8374e15bba331f1be99594970812"> 206</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a778e8374e15bba331f1be99594970812">PTDataTy</a>;</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a4e706309fe4bb40b4424251888363215"> 208</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">BasePersPTData::KeyToIDMap</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a4e706309fe4bb40b4424251888363215">KeyToIDMap</a>;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ac008ee5f7e4d286f9e76d85989358305"> 209</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aad89172e6e99d5ee576faa7bc74b36d8">BasePersPTData::RevPtsMap</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ac008ee5f7e4d286f9e76d85989358305">RevPtsMap</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a18f90b2f4e54b47c4d6f2d50886a4411"> 212</a></span>&#160; <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a18f90b2f4e54b47c4d6f2d50886a4411">PersistentDiffPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::PersDiff)</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; : BaseDiffPTData(reversePT, ty), <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>(cache), persPTData(cache, reversePT) { }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a311ada9c9a0376c71dae24841cc60b7a"> 215</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a311ada9c9a0376c71dae24841cc60b7a">~PersistentDiffPTData</a>() { }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a10504f854b1b390818f8ee12182d857c"> 217</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a10504f854b1b390818f8ee12182d857c">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; persPTData.clear();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; diffPtsMap.clear();</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; propaPtsMap.clear();</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;</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed"> 224</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> persPTData.getPts(var);</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a7a12f89c0de40dbcb5fe48219a7c121b"> 229</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a7a12f89c0de40dbcb5fe48219a7c121b">getRevPts</a>(<span class="keyword">const</span> Data &amp;data)<span class="keyword"> override</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; assert(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;PersistentDiffPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> persPTData.getRevPts(data);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a9f748619f67f3ff9c4c4a429e6614989"> 235</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a9f748619f67f3ff9c4c4a429e6614989">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> persPTData.addPts(dstKey, element);</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;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a9cc43f58ea3be1b7fbc7df7cfe965c3c"> 240</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a9cc43f58ea3be1b7fbc7df7cfe965c3c">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">return</span> persPTData.unionPts(dstKey, srcKey);</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;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#aa9aac7ff120abf87e7edfe233691f00f"> 245</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#aa9aac7ff120abf87e7edfe233691f00f">unionPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> DataSet &amp;srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">return</span> persPTData.unionPts(dstKey, srcDataSet);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ab01a663b665d629c15f3531f18b5abc2"> 250</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ab01a663b665d629c15f3531f18b5abc2">clearPts</a>(<span class="keyword">const</span> Key &amp;var, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> persPTData.clearPts(var, element);</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ae4b558e119c7e3fae25a0b4509422c87"> 255</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ae4b558e119c7e3fae25a0b4509422c87">clearFullPts</a>(<span class="keyword">const</span> Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> persPTData.clearFullPts(var);</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;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#add8c649853678b6c7acfa4217f1b7ee0"> 260</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#add8c649853678b6c7acfa4217f1b7ee0">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a89c4e8c8edcc6744f298e90d721a0745">remapAllPts</a>();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; }</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ac7caee8468f12e87a70837a8f2e9685c"> 265</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ac7caee8468f12e87a70837a8f2e9685c">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="comment">// TODO.</span></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;</div><div class="line"><a name="l00270"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a76ae2ef87bc32c2f6466e7bc2dfad726"> 270</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDiffPTData.html#a76ae2ef87bc32c2f6466e7bc2dfad726">getDiffPts</a>(Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = diffPtsMap[var];</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(<span class="keywordtype">id</span>);</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;</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ae42379dbabbd66dfd91e305673788ed3"> 276</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ae42379dbabbd66dfd91e305673788ed3">computeDiffPts</a>(Key &amp;var, <span class="keyword">const</span> DataSet &amp;all)<span class="keyword"> override</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> propaId = propaPtsMap[var];</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> allId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">emplacePts</a>(all);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="comment">// Diff is made up of the entire points-to set minus what has been propagated.</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> diffId = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a86bf6959fb5587e350015d58d529af14">complementPts</a>(allId, propaId);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; diffPtsMap[var] = diffId;</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; <span class="comment">// We&#39;ve now propagated the entire thing.</span></div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; propaPtsMap[var] = allId;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="comment">// Whether diff is empty or not; just need to check against the ID since it</span></div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">// is the only empty set.</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span> diffId != <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#adb2c450f2c93fbf630d91b8c2697fa06"> 292</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#adb2c450f2c93fbf630d91b8c2697fa06">updatePropaPtsMap</a>(Key &amp;src, Key &amp;dst)<span class="keyword"> override</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> dstId = propaPtsMap[dst];</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> srcId = propaPtsMap[src];</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; propaPtsMap[dst] = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a17d33558208c19019e541ee167009494">intersectPts</a>(dstId, srcId);</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;</div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#aa00e0bfaf2d46f2aa83a37c7c9514edb"> 299</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#aa00e0bfaf2d46f2aa83a37c7c9514edb">clearPropaPts</a>(Key &amp;var)<span class="keyword"> override</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; propaPtsMap[var] = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a921a4ef4c72ccde5724860f98ad62a57">emptyPointsToId</a>();</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; }</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"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a3bad0126e25b0a7134e8ef25869bd40e"> 304</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a3bad0126e25b0a7134e8ef25869bd40e">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> persPTData.getAllPts(liveOnly);</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;</div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#afb53f0b47cdad94379c3a4895980be9c"> 311</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#afb53f0b47cdad94379c3a4895980be9c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html">PersistentDiffPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; {</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><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;</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a4f4b1869210228e9d1b4f3900b41bb88"> 316</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a4f4b1869210228e9d1b4f3900b41bb88">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</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; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersDiff;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a444bc59754b4c365327b7ef44baadcd2"> 323</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;<a class="code" href="classSVF_1_1PersistentDiffPTData.html#a444bc59754b4c365327b7ef44baadcd2">ptCache</a>;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#a0d6620a7078bd60d16256ac48af58db9"> 325</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDiffPTData.html#a0d6620a7078bd60d16256ac48af58db9">persPTData</a>;</div><div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#ac54339952e2734a6affdaa543fb3ed22"> 327</a></span>&#160; KeyToIDMap <a class="code" href="classSVF_1_1PersistentDiffPTData.html#ac54339952e2734a6affdaa543fb3ed22">diffPtsMap</a>;</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDiffPTData.html#abffb5c9cfe1e306ce524ef1dc5ff18ad"> 329</a></span>&#160; KeyToIDMap <a class="code" href="classSVF_1_1PersistentDiffPTData.html#abffb5c9cfe1e306ce524ef1dc5ff18ad">propaPtsMap</a>;</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;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;{</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00337"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a54c206686c17101a0233fbbd3836c05c"> 337</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a54c206686c17101a0233fbbd3836c05c">BasePTData</a>;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#abb11d9bd24cb587bba6f762ab49b07c8"> 338</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#abb11d9bd24cb587bba6f762ab49b07c8">PTDataTy</a>;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#af9facbe8f694b8447bb6ebe48b95ad17"> 339</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#af9facbe8f694b8447bb6ebe48b95ad17">BaseDFPTData</a>;</div><div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#afccad3b3163f25cc058334083f90041d"> 340</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#afccad3b3163f25cc058334083f90041d">BasePersPTData</a>;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a76d8a4f907269e9980f39c531806e96b"> 342</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a76d8a4f907269e9980f39c531806e96b">LocID</a>;</div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#aee8871b4895d38bccb9078ad540f9f0f"> 343</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">BasePersPTData::KeyToIDMap</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#aee8871b4895d38bccb9078ad540f9f0f">KeyToIDMap</a>;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a0d0318fa192eac88a4307112e30e9d90"> 344</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;LocID, KeyToIDMap&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a0d0318fa192eac88a4307112e30e9d90">DFKeyToIDMap</a>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a85e0aec789ea945bd4cfa9e29189d1b4"> 346</a></span>&#160; <a class="code" href="classSVF_1_1PersistentDFPTData.html#a85e0aec789ea945bd4cfa9e29189d1b4">PersistentDFPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::PersDataFlow)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; : BaseDFPTData(reversePT, ty), <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>(cache), persPTData(cache, reversePT) { }</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad9ccba048d0c749d1c2cafc517f78181"> 349</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad9ccba048d0c749d1c2cafc517f78181">~PersistentDFPTData</a>() { }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ab070b1baa6a01800edac36dc075107fd"> 351</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ab070b1baa6a01800edac36dc075107fd">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; dfInPtsMap.clear();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; dfOutPtsMap.clear();</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; persPTData.clear();</div><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;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13"> 358</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13">getPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">return</span> persPTData.getPts(var);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; }</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a50c3d871edb13ac5b3f0d625deb6449a"> 363</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentDFPTData.html#a50c3d871edb13ac5b3f0d625deb6449a">getRevPts</a>(<span class="keyword">const</span> Data&amp;)<span class="keyword"> override</span></div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;PersistentDFPTData::getRevPts: not supported yet!&quot;</span>);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> *(KeySet*)<span class="keyword">nullptr</span>; <span class="comment">// suppress -Werror=return-type</span></div><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;</div><div class="line"><a name="l00369"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a0b757b12ace04b7b7d1e081ad1b742cf"> 369</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a0b757b12ace04b7b7d1e081ad1b742cf">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> Key&amp; srcKey)<span class="keyword"> override</span></div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">return</span> persPTData.unionPts(dstKey, srcKey);</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;</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a780dc63003f8a0a4c66c1548138fdd86"> 374</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a780dc63003f8a0a4c66c1548138fdd86">unionPts</a>(<span class="keyword">const</span> Key&amp; dstKey, <span class="keyword">const</span> DataSet &amp;srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">return</span> persPTData.unionPts(dstKey, srcDataSet);</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;</div><div class="line"><a name="l00379"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a95df7d565ba8e990b61b1c932c8d4273"> 379</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a95df7d565ba8e990b61b1c932c8d4273">addPts</a>(<span class="keyword">const</span> Key &amp;dstKey, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> persPTData.addPts(dstKey, element);</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;</div><div class="line"><a name="l00384"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#af64c6a2c0a1b2044fac56a69e9db7cff"> 384</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#af64c6a2c0a1b2044fac56a69e9db7cff">clearPts</a>(<span class="keyword">const</span> Key&amp; var, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; persPTData.clearPts(var, element);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; }</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#afa828c0db9c030584e379e86cf0a25a9"> 389</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#afa828c0db9c030584e379e86cf0a25a9">clearFullPts</a>(<span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; persPTData.clearFullPts(var);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; }</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"><a class="line" href="classSVF_1_1PersistentDFPTData.html#aac817d88beae87fcc961a2df7904e61c"> 394</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#aac817d88beae87fcc961a2df7904e61c">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a89c4e8c8edcc6744f298e90d721a0745">remapAllPts</a>();</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;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a1d168145358e0f69eca023dd9b4363ea"> 399</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a1d168145358e0f69eca023dd9b4363ea">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; persPTData.dumpPTData();</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a6e7d072fd2d420870bb959b68c200137"> 404</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a6e7d072fd2d420870bb959b68c200137">hasDFInSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span> dfInPtsMap.find(loc) != dfInPtsMap.end();</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a67c4dec1150bdd8458046696578e5069"> 409</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a67c4dec1150bdd8458046696578e5069">hasDFOutSet</a>(LocID loc)<span class="keyword"> const override</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keywordflow">return</span> dfOutPtsMap.find(loc) != dfOutPtsMap.end();</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; }</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ab490fd81739f2bd6dddabd5ce5beac3b"> 414</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ab490fd81739f2bd6dddabd5ce5beac3b">hasDFInSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> const override</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keyword">typename</span> DFKeyToIDMap::const_iterator foundInKeyToId = dfInPtsMap.find(loc);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">if</span> (foundInKeyToId == dfInPtsMap.end()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <span class="keyword">const</span> KeyToIDMap &amp;inKeyToId = foundInKeyToId-&gt;second;</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> (inKeyToId.find(var) != inKeyToId.end());</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ace47d00f778bc4a714fc4f9d0cbd063c"> 422</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ace47d00f778bc4a714fc4f9d0cbd063c">hasDFOutSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> const override</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <span class="keyword">typename</span> DFKeyToIDMap::const_iterator foundOutKeyToId = dfOutPtsMap.find(loc);</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="keywordflow">if</span> (foundOutKeyToId == dfOutPtsMap.end()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keyword">const</span> KeyToIDMap &amp;outKeyToId = foundOutKeyToId-&gt;second;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordflow">return</span> (outKeyToId.find(var) != outKeyToId.end());</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; }</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a26ca6565c4766e3d6ea6bf435ae910a3"> 430</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#a26ca6565c4766e3d6ea6bf435ae910a3">getDFInPtsSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = dfInPtsMap[loc][var];</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; }</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;</div><div class="line"><a name="l00436"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#aea89a705aed7e02ddbf73f861506536e"> 436</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#aea89a705aed7e02ddbf73f861506536e">getDFOutPtsSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)<span class="keyword"> override</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> <span class="keywordtype">id</span> = dfOutPtsMap[loc][var];</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; }</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;</div><div class="line"><a name="l00442"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a9b61c0557c6b1460af2328709011b32e"> 442</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a9b61c0557c6b1460af2328709011b32e">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, LocID dstLoc, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(getDFInPtIdRef(dstLoc, dstVar), getDFInPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; }</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a9e2dcff79d55b92bc84ec2bb42d851ac"> 447</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a9e2dcff79d55b92bc84ec2bb42d851ac">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, LocID dstLoc, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> updateDFInFromIn(srcLoc, srcVar, dstLoc, dstVar);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; }</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#abfacbe37d9e0b5f05eabec66c60c2e2b"> 452</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#abfacbe37d9e0b5f05eabec66c60c2e2b">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, LocID dstLoc, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(getDFInPtIdRef(dstLoc, dstVar), getDFOutPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a67a72d34b62884dee72e0b48b07a7e9f"> 457</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a67a72d34b62884dee72e0b48b07a7e9f">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, LocID dstLoc, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <span class="keywordflow">return</span> updateDFInFromOut(srcLoc, srcVar, dstLoc, dstVar);</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;</div><div class="line"><a name="l00462"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a81e6d2d313d7f23fcc2a3d0f5344317f"> 462</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a81e6d2d313d7f23fcc2a3d0f5344317f">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(getDFOutPtIdRef(dstLoc, dstVar), getDFInPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad341c691c11bbdeaa13cfe23919ed070"> 467</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad341c691c11bbdeaa13cfe23919ed070">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key &amp;singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; {</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <span class="keyword">const</span> KeyToIDMap &amp;inKeyToId = dfInPtsMap[loc];</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> KeyToIDMap::value_type &amp;ki : inKeyToId)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keyword">const</span> Key var = ki.first;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (strongUpdates &amp;&amp; var == singleton) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var)) changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; }</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; }</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;</div><div class="line"><a name="l00486"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad7a4b3c68c4b8b70268ee7c919c624d5"> 486</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad7a4b3c68c4b8b70268ee7c919c624d5">clearAllDFOutUpdatedVar</a>(LocID)<span class="keyword"> override</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;</div><div class="line"><a name="l00491"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#aa9d13ece84d5f519031b4f3cdb429d61"> 491</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#aa9d13ece84d5f519031b4f3cdb429d61">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key &amp;srcVar, <span class="keyword">const</span> Key &amp;dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(persPTData.ptsMap[dstVar], getDFInPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; }</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a6761733754abf061e92125988a684fa3"> 496</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a6761733754abf061e92125988a684fa3">updateATVPts</a>(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keywordflow">return</span> unionPtsThroughIds(getDFOutPtIdRef(dstLoc, dstVar), persPTData.ptsMap[srcVar]);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; }</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a98f84bffeba6bd7dc140f1d5b63ff368"> 501</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a98f84bffeba6bd7dc140f1d5b63ff368">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts = persPTData.getAllPts(liveOnly);</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> DFKeyToIDMap::value_type &amp;lki : dfInPtsMap)</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> KeyToIDMap::value_type &amp;ki : lki.second)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; ++allPts[<a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(ki.second)];</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; }</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> DFKeyToIDMap::value_type &amp;lki : dfOutPtsMap)</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; {</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> KeyToIDMap::value_type &amp;ki : lki.second)</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; {</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; ++allPts[<a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab2888b033a29de3af48d377dc2fe70aa">getActualPts</a>(ki.second)];</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; }</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; }</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; <span class="keywordflow">if</span> (!liveOnly)</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; {</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <span class="comment">// Subtract 1 from each counted points-to set because the live points-to</span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="comment">// sets have already been inserted and accounted for how often they occur.</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">// They will each occur one more time in the cache.</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="comment">// In essence, we want the ptCache.getAllPts() to just add the unused, non-GC&#39;d</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; <span class="comment">// points-to sets to allPts.</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;::value_type</a> pto : allPts) pto.second -= 1;</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; SVFUtil::mergePtsOccMaps&lt;DataSet&gt;(allPts, <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#ab84d0806e87c982bf81ae309f28751e3">getAllPts</a>());</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; }</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; }</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;</div><div class="line"><a name="l00536"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad374e8e6ddd5c397bd5ab6cf9b259968"> 536</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad374e8e6ddd5c397bd5ab6cf9b259968">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a575a441ddbe233d34937792b66d2b39c"> 541</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a575a441ddbe233d34937792b66d2b39c">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> *ptd)</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; {</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersDataFlow</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; || ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersIncDataFlow;</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; }</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00549"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a2cb37d0403e1b34316c9c24a0d6ab66c"> 549</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a2cb37d0403e1b34316c9c24a0d6ab66c">unionPtsThroughIds</a>(<a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> &amp;dst, <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> &amp;src)</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; {</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> oldDst = dst;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; dst = <a class="code" href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">ptCache</a>.<a class="code" href="classSVF_1_1PersistentPointsToCache.html#a178b49cca2c22e874ff9e772cc4df72b">unionPts</a>(dst, src);</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> oldDst != dst;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; }</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;</div><div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#afc28b40eea7bad5276bbab30749d598b"> 556</a></span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#afc28b40eea7bad5276bbab30749d598b">getDFInPtIdRef</a>(LocID loc, <span class="keyword">const</span> Key &amp;var)</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; {</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">return</span> dfInPtsMap[loc][var];</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; }</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ab13b3a484a5ac22c47391f1b2eaa58a1"> 561</a></span>&#160; <a class="code" href="namespaceSVF.html#ae545a88267bd2246de827cf590675aca">PointsToID</a> &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#ab13b3a484a5ac22c47391f1b2eaa58a1">getDFOutPtIdRef</a>(LocID loc, <span class="keyword">const</span> Key &amp;var)</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; {</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> dfOutPtsMap[loc][var];</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; }</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#af86313e37c5177e45456f813b9b46a4f"> 567</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;<a class="code" href="classSVF_1_1PersistentDFPTData.html#af86313e37c5177e45456f813b9b46a4f">ptCache</a>;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a349c231f59ea554059a1891f1a530820"> 570</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentDFPTData.html#a349c231f59ea554059a1891f1a530820">persPTData</a>;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00573"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#a6b892b707524127928e269f0f0bbe868"> 573</a></span>&#160; DFKeyToIDMap <a class="code" href="classSVF_1_1PersistentDFPTData.html#a6b892b707524127928e269f0f0bbe868">dfInPtsMap</a>;</div><div class="line"><a name="l00575"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentDFPTData.html#ad77d7ccad393c995813f8c433c249dfc"> 575</a></span>&#160; DFKeyToIDMap <a class="code" href="classSVF_1_1PersistentDFPTData.html#ad77d7ccad393c995813f8c433c249dfc">dfOutPtsMap</a>;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;};</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet&gt;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentIncDFPTData.html">PersistentIncDFPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData</a>&lt;Key, KeySet, Data, DataSet&gt;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;{</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00583"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a7751d9831519f8021626630dce499b1a"> 583</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a7751d9831519f8021626630dce499b1a">BasePTData</a>;</div><div class="line"><a name="l00584"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#acea7eb9ee0c1ee36906d50bce584b56a"> 584</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#acea7eb9ee0c1ee36906d50bce584b56a">BasePersPTData</a>;</div><div class="line"><a name="l00585"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ae56633d34e5fb4499c82d422646a91f0"> 585</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1DFPTData.html">DFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ae56633d34e5fb4499c82d422646a91f0">BaseDFPTData</a>;</div><div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#abce6fa91fed789ef25146440ee10872b"> 586</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PersistentDFPTData.html">PersistentDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#abce6fa91fed789ef25146440ee10872b">BasePersDFPTData</a>;</div><div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a440e0e1e1e449d5514dbc3f8a0da90d7"> 587</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a440e0e1e1e449d5514dbc3f8a0da90d7">PTDataTy</a>;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a77bdc80a999296bcfa8d9f1f92c933d1"> 589</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">BaseDFPTData::LocID</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a77bdc80a999296bcfa8d9f1f92c933d1">LocID</a>;</div><div class="line"><a name="l00590"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#abad78c2ef84371b693dca206ebbb63ab"> 590</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;LocID, KeySet&gt;</a> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#abad78c2ef84371b693dca206ebbb63ab">UpdatedVarMap</a>;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a495fede1f68c53956df3c033ef349940"> 594</a></span>&#160; <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a495fede1f68c53956df3c033ef349940">PersistentIncDFPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">BasePTData::PersIncDataFlow</a>)</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; : BasePersDFPTData(cache, reversePT, ty) { }</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#aea074e213475c4dc632f8d21e8388868"> 597</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#aea074e213475c4dc632f8d21e8388868">~PersistentIncDFPTData</a>() { }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;</div><div class="line"><a name="l00599"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a5b015e6801e4320e45e7942f9db82a42"> 599</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a5b015e6801e4320e45e7942f9db82a42">updateDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">if</span> (varHasNewDFInPts(srcLoc, srcVar)</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; &amp;&amp; this-&gt;unionPtsThroughIds(this-&gt;getDFInPtIdRef(dstLoc, dstVar), this-&gt;getDFInPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; {</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; setVarDFInSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;</div><div class="line"><a name="l00611"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a9191992b978b643f2d51633b2e330ec6"> 611</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a9191992b978b643f2d51633b2e330ec6">updateDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">if</span> (varHasNewDFOutPts(srcLoc, srcVar)</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; &amp;&amp; this-&gt;unionPtsThroughIds(this-&gt;getDFInPtIdRef(dstLoc, dstVar), this-&gt;getDFOutPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; {</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; setVarDFInSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; }</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div><div class="line"><a name="l00623"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a6a26ddacfd726c7078ae560a6b50ad6b"> 623</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a6a26ddacfd726c7078ae560a6b50ad6b">updateDFOutFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">if</span> (varHasNewDFInPts(srcLoc, srcVar))</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; {</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; removeVarFromDFInUpdatedSet(srcLoc, srcVar);</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span> (this-&gt;unionPtsThroughIds(this-&gt;getDFOutPtIdRef(dstLoc, dstVar), this-&gt;getDFInPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; {</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; setVarDFOutSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;</div><div class="line"><a name="l00638"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a218ebd39a42b5de8910b98bef9d04f7d"> 638</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a218ebd39a42b5de8910b98bef9d04f7d">updateAllDFInFromOut</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="keywordflow">if</span> (this-&gt;unionPtsThroughIds(this-&gt;getDFInPtIdRef(dstLoc, dstVar), this-&gt;getDFOutPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; {</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; setVarDFInSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; }</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; }</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00649"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a2259da9defa195350b3f70cd16c3f2ec"> 649</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a2259da9defa195350b3f70cd16c3f2ec">updateAllDFInFromIn</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (this-&gt;unionPtsThroughIds(this-&gt;getDFInPtIdRef(dstLoc, dstVar), this-&gt;getDFInPtIdRef(srcLoc, srcVar)))</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; {</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; setVarDFInSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a6a59e2297b72cc30553db5e45da70f46"> 660</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a6a59e2297b72cc30553db5e45da70f46">updateAllDFOutFromIn</a>(LocID loc, <span class="keyword">const</span> Key&amp; singleton, <span class="keywordtype">bool</span> strongUpdates)<span class="keyword"> override</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordtype">bool</span> changed = <span class="keyword">false</span>;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFInSet(loc))</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <span class="keyword">const</span> KeySet vars = getDFInUpdatedVar(loc);</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Key &amp;var : vars)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; {</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">if</span> (strongUpdates &amp;&amp; var == singleton) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">if</span> (updateDFOutFromIn(loc, var, loc, var)) changed = <span class="keyword">true</span>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; }</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; }</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">return</span> changed;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; }</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div><div class="line"><a name="l00678"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ae4732dd1897883fafa98454b46134bfb"> 678</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ae4732dd1897883fafa98454b46134bfb">updateTLVPts</a>(LocID srcLoc, <span class="keyword">const</span> Key&amp; srcVar, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160; <span class="keywordflow">if</span> (varHasNewDFInPts(srcLoc, srcVar))</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160; {</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160; removeVarFromDFInUpdatedSet(srcLoc, srcVar);</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">return</span> this-&gt;unionPtsThroughIds(this-&gt;persPTData.ptsMap[dstVar], this-&gt;getDFInPtIdRef(srcLoc, srcVar));</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; }</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; }</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a002e6d234d0ad0c74a0976046e440f71"> 689</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a002e6d234d0ad0c74a0976046e440f71">updateATVPts</a>(<span class="keyword">const</span> Key&amp; srcVar, LocID dstLoc, <span class="keyword">const</span> Key&amp; dstVar)<span class="keyword"> override</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">if</span> (this-&gt;unionPtsThroughIds(this-&gt;getDFOutPtIdRef(dstLoc, dstVar), this-&gt;persPTData.ptsMap[srcVar]))</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; {</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; setVarDFOutSetUpdated(dstLoc, dstVar);</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; }</div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; }</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;</div><div class="line"><a name="l00700"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a815a7c54c1533f16c3efd0796044afc2"> 700</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a815a7c54c1533f16c3efd0796044afc2">clearAllDFOutUpdatedVar</a>(LocID loc)<span class="keyword"> override</span></div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">if</span> (this-&gt;hasDFOutSet(loc))</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; {</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keyword">const</span> KeySet vars = getDFOutUpdatedVar(loc);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> Key &amp;var : vars)</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; {</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; removeVarFromDFOutUpdatedSet(loc, var);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; }</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; }</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; }</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a5e8036d18088ed272ab052b5cd6ef1ce"> 712</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a5e8036d18088ed272ab052b5cd6ef1ce">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; outUpdatedVarMap.clear();</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; inUpdatedVarMap.clear();</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; BasePersDFPTData::clear();</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; }</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00721"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a656434f7b67aabf25f6dba400d95f2bb"> 721</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a656434f7b67aabf25f6dba400d95f2bb">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html">PersistentIncDFPTData&lt;Key, KeySet, Data, DataSet&gt;</a> *)</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160; {</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; }</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a47c2fbf8b959aae3166b9757b12880a7"> 726</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a47c2fbf8b959aae3166b9757b12880a7">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> *ptd)</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; {</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">BasePTData::PersIncDataFlow</a>;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; }</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> setVarDFInSetUpdated(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; {</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(var, inUpdatedVarMap[loc]);</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; }</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;</div><div class="line"><a name="l00743"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ad449df82589efb4c40affb5fdc46f479"> 743</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ad449df82589efb4c40affb5fdc46f479">removeVarFromDFInUpdatedSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; {</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keyword">typename</span> UpdatedVarMap::iterator it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">if</span> (it != inUpdatedVarMap.end()) it-&gt;second.erase(var);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; }</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div><div class="line"><a name="l00750"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a56764f78042a2a9229d3b76861b54952"> 750</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a56764f78042a2a9229d3b76861b54952">varHasNewDFInPts</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; {</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keyword">typename</span> UpdatedVarMap::iterator it = inUpdatedVarMap.find(loc);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; <span class="keywordflow">if</span> (it != inUpdatedVarMap.end()) <span class="keywordflow">return</span> it-&gt;second.find(var) != it-&gt;second.end();</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; }</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;</div><div class="line"><a name="l00758"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a1bd459f50c328974294930698fc61b8e"> 758</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a1bd459f50c328974294930698fc61b8e">getDFInUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordflow">return</span> inUpdatedVarMap[loc];</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; }</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div><div class="line"><a name="l00767"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#aa9f6b38595cabbb583c52217188457e8"> 767</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#aa9f6b38595cabbb583c52217188457e8">setVarDFOutSetUpdated</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVFUtil::insertKey</a>(var, outUpdatedVarMap[loc]);</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ad1a2cd17519912b1d7571eeddcdc0060"> 773</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ad1a2cd17519912b1d7571eeddcdc0060">removeVarFromDFOutUpdatedSet</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; {</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keyword">typename</span> UpdatedVarMap::iterator it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <span class="keywordflow">if</span> (it != outUpdatedVarMap.end()) it-&gt;second.erase(var);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; }</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00780"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#ae44f71f2ff837fbdf9b6e77f609c0c53"> 780</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#ae44f71f2ff837fbdf9b6e77f609c0c53">varHasNewDFOutPts</a>(LocID loc, <span class="keyword">const</span> Key&amp; var)</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; {</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keyword">typename</span> UpdatedVarMap::iterator it = outUpdatedVarMap.find(loc);</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">if</span> (it != outUpdatedVarMap.end()) <span class="keywordflow">return</span> it-&gt;second.find(var) != it-&gt;second.end();</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; }</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;</div><div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#aa50d20f82143fd56cbe468b29bf9e11e"> 788</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#aa50d20f82143fd56cbe468b29bf9e11e">getDFOutUpdatedVar</a>(LocID loc)</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> outUpdatedVarMap[loc];</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; }</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00796"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a054f8e2a0668387c092b2802e64a4df0"> 796</a></span>&#160; UpdatedVarMap <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a054f8e2a0668387c092b2802e64a4df0">outUpdatedVarMap</a>;</div><div class="line"><a name="l00797"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentIncDFPTData.html#a106391cd8eefab1740b54cd9bbacccad"> 797</a></span>&#160; UpdatedVarMap <a class="code" href="classSVF_1_1PersistentIncDFPTData.html#a106391cd8eefab1740b54cd9bbacccad">inUpdatedVarMap</a>;</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;};</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet, <span class="keyword">typename</span> Data, <span class="keyword">typename</span> DataSet, <span class="keyword">typename</span> VersionedKey, <span class="keyword">typename</span> VersionedKeySet&gt;</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PersistentVersionedPTData.html">PersistentVersionedPTData</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData</a>&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;{</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00808"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ad4586331863d67e78c54d919694b58db"> 808</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ad4586331863d67e78c54d919694b58db">BasePTData</a>;</div><div class="line"><a name="l00809"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ab71b82478d74f1a20ce3de479f2d8d5c"> 809</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1VersionedPTData.html">VersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ab71b82478d74f1a20ce3de479f2d8d5c">BaseVersionedPTData</a>;</div><div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a6051aa255081543388a8f9077012834c"> 810</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">BasePTData::PTDataTy</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a6051aa255081543388a8f9077012834c">PTDataTy</a>;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a1927ccf9bb74b698f540f683e7f0d0f2"> 812</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;::KeyToIDMap</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a1927ccf9bb74b698f540f683e7f0d0f2">KeyToIDMap</a>;</div><div class="line"><a name="l00813"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a2ee473a1654b7d134a602268a2b70248"> 813</a></span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;VersionedKey, VersionedKeySet, Data, DataSet&gt;::KeyToIDMap</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a2ee473a1654b7d134a602268a2b70248">VersionedKeyToIDMap</a>;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160;</div><div class="line"><a name="l00815"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a5cecb78af456e2241ff8554441b48d61"> 815</a></span>&#160; <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a5cecb78af456e2241ff8554441b48d61">PersistentVersionedPTData</a>(<a class="code" href="classSVF_1_1PersistentPointsToCache.html">PersistentPointsToCache&lt;DataSet&gt;</a> &amp;cache, <span class="keywordtype">bool</span> reversePT = <span class="keyword">true</span>, PTDataTy ty = PTDataTy::PersVersioned)</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; : BaseVersionedPTData(reversePT, ty), tlPTData(cache, reversePT), atPTData(cache, reversePT) { }</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a2252fcbc06243787b6854d826373da1d"> 818</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a2252fcbc06243787b6854d826373da1d">~PersistentVersionedPTData</a>() { }</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160;</div><div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ac563829c0d6d091c905bfe16580ceb47"> 820</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ac563829c0d6d091c905bfe16580ceb47">clear</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; tlPTData.clear();</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; atPTData.clear();</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; }</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;</div><div class="line"><a name="l00826"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#afe80884fa8227e50f28631e20aa6fdf6"> 826</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentVersionedPTData.html#afe80884fa8227e50f28631e20aa6fdf6">getPts</a>(<span class="keyword">const</span> Key&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">return</span> tlPTData.getPts(vk);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</div><div class="line"><a name="l00830"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820"> 830</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> DataSet &amp;<a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820">getPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordflow">return</span> atPTData.getPts(vk);</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; }</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#aafa09ff01060e43f08278963179eec30"> 835</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> KeySet&amp; <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#aafa09ff01060e43f08278963179eec30">getRevPts</a>(<span class="keyword">const</span> Data &amp;data)<span class="keyword"> override</span></div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; assert(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;PersistentVersionedPTData::getRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="keywordflow">return</span> tlPTData.getRevPts(data);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; }</div><div class="line"><a name="l00840"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a2adcebb6cf561eb00e3e05d486c86a9c"> 840</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> VersionedKeySet&amp; <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a2adcebb6cf561eb00e3e05d486c86a9c">getVersionedKeyRevPts</a>(<span class="keyword">const</span> Data &amp;data)<span class="keyword"> override</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; assert(this-&gt;<a class="code" href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">rev</a> &amp;&amp; <span class="stringliteral">&quot;PersistentVersionedPTData::getVersionedKeyRevPts: constructed without reverse PT support!&quot;</span>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">return</span> atPTData.getRevPts(data);</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; }</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160;</div><div class="line"><a name="l00846"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a7f3730473af9218bea520ec0498fb4ac"> 846</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a7f3730473af9218bea520ec0498fb4ac">addPts</a>(<span class="keyword">const</span> Key&amp; k, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">return</span> tlPTData.addPts(k, element);</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; }</div><div class="line"><a name="l00850"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ae4877cf4db5b1da5e7d05fe65ae8ed32"> 850</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ae4877cf4db5b1da5e7d05fe65ae8ed32">addPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> atPTData.addPts(vk, element);</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; }</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#afe1f57d265c0910ec26567ce850b8421"> 855</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#afe1f57d265c0910ec26567ce850b8421">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div><div class="line"><a name="l00859"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ab0299bcfee10af8b6ea59444c4d0299d"> 859</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ab0299bcfee10af8b6ea59444c4d0299d">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcVar);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; }</div><div class="line"><a name="l00863"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a8ba8e547bf572cd7403cb4fe52c19908"> 863</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a8ba8e547bf572cd7403cb4fe52c19908">unionPts</a>(<span class="keyword">const</span> VersionedKey&amp; dstVar, <span class="keyword">const</span> Key&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">return</span> atPTData.unionPtsFromId(dstVar, tlPTData.ptsMap[srcVar]);</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; }</div><div class="line"><a name="l00867"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a83b7e86c11b03889d70b4dff46138987"> 867</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a83b7e86c11b03889d70b4dff46138987">unionPts</a>(<span class="keyword">const</span> Key&amp; dstVar, <span class="keyword">const</span> VersionedKey&amp; srcVar)<span class="keyword"> override</span></div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPtsFromId(dstVar, atPTData.ptsMap[srcVar]);</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; }</div><div class="line"><a name="l00871"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a00151507a86b71f99e43fa87b59d65bb"> 871</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a00151507a86b71f99e43fa87b59d65bb">unionPts</a>(<span class="keyword">const</span> Key &amp;dstVar, <span class="keyword">const</span> DataSet &amp;srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">return</span> tlPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div><div class="line"><a name="l00875"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#ac4b8dc40514b50a77565a385b9a13ca5"> 875</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#ac4b8dc40514b50a77565a385b9a13ca5">unionPts</a>(<span class="keyword">const</span> VersionedKey &amp;dstVar, <span class="keyword">const</span> DataSet &amp;srcDataSet)<span class="keyword"> override</span></div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keywordflow">return</span> atPTData.unionPts(dstVar, srcDataSet);</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;</div><div class="line"><a name="l00880"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a9f5bb9d2020973660268c4e5ac98cb61"> 880</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a9f5bb9d2020973660268c4e5ac98cb61">clearPts</a>(<span class="keyword">const</span> Key&amp; k, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; tlPTData.clearPts(k, element);</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; }</div><div class="line"><a name="l00884"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#afe724603022a8fed7469f9ecd633febc"> 884</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#afe724603022a8fed7469f9ecd633febc">clearPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk, <span class="keyword">const</span> Data &amp;element)<span class="keyword"> override</span></div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; atPTData.clearPts(vk, element);</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;</div><div class="line"><a name="l00889"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a5c31a5faad444bd19005d06ba28d0185"> 889</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a5c31a5faad444bd19005d06ba28d0185">clearFullPts</a>(<span class="keyword">const</span> Key&amp; k)<span class="keyword"> override</span></div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; tlPTData.clearFullPts(k);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; }</div><div class="line"><a name="l00893"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a78f2b0ee440ed5b358928ee775e95564"> 893</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a78f2b0ee440ed5b358928ee775e95564">clearFullPts</a>(<span class="keyword">const</span> VersionedKey&amp; vk)<span class="keyword"> override</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; atPTData.clearFullPts(vk);</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160;</div><div class="line"><a name="l00898"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a0b4feff5bc406088216d9e45941fe3ef"> 898</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a0b4feff5bc406088216d9e45941fe3ef">remapAllPts</a>(<span class="keywordtype">void</span>)<span class="keyword"> override</span></div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="comment">// tlPTData and atPTData use the same cache.</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; tlPTData.remapAllPts();</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; }</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160;</div><div class="line"><a name="l00904"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a6c9ad3635f73b805289cc1f14cdcf09a"> 904</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a6c9ad3635f73b805289cc1f14cdcf09a">getAllPts</a>(<span class="keywordtype">bool</span> liveOnly)<span class="keyword"> const override</span></div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; <span class="comment">// Explicitly pass in true because if we call it with false,</span></div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="comment">// we will double up on the cache, since it is shared with atPTData.</span></div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="comment">// if liveOnly == false, we will handle it in the if below.</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;</a> allPts = tlPTData.getAllPts(<span class="keyword">true</span>);</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; SVFUtil::mergePtsOccMaps&lt;DataSet&gt;(allPts, atPTData.getAllPts(<span class="keyword">true</span>));</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160;</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">if</span> (!liveOnly)</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; {</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; <span class="comment">// Subtract 1 from each counted points-to set because the live points-to</span></div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="comment">// sets have already been inserted and accounted for how often they occur.</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="comment">// They will each occur one more time in the cache.</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// In essence, we want the ptCache.getAllPts() to just add the unused, non-GC&#39;d</span></div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// points-to sets to allPts.</span></div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;DataSet, unsigned&gt;::value_type</a> &amp;pto : allPts) pto.second -= 1;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; SVFUtil::mergePtsOccMaps&lt;DataSet&gt;(allPts, tlPTData.ptCache.getAllPts());</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; }</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="keywordflow">return</span> allPts;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; }</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160;</div><div class="line"><a name="l00926"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a364fc243fe230342b209bb0c3a7d0966"> 926</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a364fc243fe230342b209bb0c3a7d0966">dumpPTData</a>()<span class="keyword"> override</span></div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;== Top-level points-to information\n&quot;</span>;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; tlPTData.dumpPTData();</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;== Address-taken points-to information\n&quot;</span>;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; atPTData.dumpPTData();</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; }</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160;</div><div class="line"><a name="l00936"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a28a8bf95351e295e65360bf16241a5da"> 936</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a28a8bf95351e295e65360bf16241a5da">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html">PersistentVersionedPTData&lt;Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet&gt;</a> *)</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; {</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; }</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;</div><div class="line"><a name="l00941"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a1f85475cb6690bb1caa003c5a3aec92f"> 941</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a1f85475cb6690bb1caa003c5a3aec92f">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PTData.html">PTData&lt;Key, KeySet, Data, DataSet&gt;</a>* ptd)</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; {</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">return</span> ptd-&gt;<a class="code" href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">getPTDTY</a>() == PTDataTy::PersVersioned;</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; }</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00949"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a29104a2d53d94805e142f778d3d21ad5"> 949</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;Key, KeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a29104a2d53d94805e142f778d3d21ad5">tlPTData</a>;</div><div class="line"><a name="l00951"></a><span class="lineno"><a class="line" href="classSVF_1_1PersistentVersionedPTData.html#a61b44f6d63cca013da2b278f47298473"> 951</a></span>&#160; <a class="code" href="classSVF_1_1PersistentPTData.html">PersistentPTData&lt;VersionedKey, VersionedKeySet, Data, DataSet&gt;</a> <a class="code" href="classSVF_1_1PersistentVersionedPTData.html#a61b44f6d63cca013da2b278f47298473">atPTData</a>;</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160;};</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;<span class="preprocessor">#endif // MUTABLE_POINTSTO_H_</span></div><div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a054f8e2a0668387c092b2802e64a4df0"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a054f8e2a0668387c092b2802e64a4df0">SVF::PersistentIncDFPTData::outUpdatedVarMap</a></div><div class="ttdeci">UpdatedVarMap outUpdatedVarMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00796">PersistentPointsToDS.h:796</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a002e6d234d0ad0c74a0976046e440f71"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a002e6d234d0ad0c74a0976046e440f71">SVF::PersistentIncDFPTData::updateATVPts</a></div><div class="ttdeci">virtual bool updateATVPts(const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00689">PersistentPointsToDS.h:689</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1VersionedPTData_html"><div class="ttname"><a href="classSVF_1_1VersionedPTData.html">SVF::VersionedPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00269">AbstractPointsToDS.h:269</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a81e6d2d313d7f23fcc2a3d0f5344317f"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a81e6d2d313d7f23fcc2a3d0f5344317f">SVF::PersistentDFPTData::updateDFOutFromIn</a></div><div class="ttdeci">virtual bool updateDFOutFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00462">PersistentPointsToDS.h:462</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1PTData_html_a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a"><div class="ttname"><a href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848a3f0b959f73825d56c2aebcb699f3a08a">SVF::PTData::PersIncDataFlow</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00092">AbstractPointsToDS.h:92</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_afccad3b3163f25cc058334083f90041d"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#afccad3b3163f25cc058334083f90041d">SVF::PersistentDFPTData::BasePersPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; BasePersPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00340">PersistentPointsToDS.h:340</a></div></div>
75
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a1bd459f50c328974294930698fc61b8e"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a1bd459f50c328974294930698fc61b8e">SVF::PersistentIncDFPTData::getDFInUpdatedVar</a></div><div class="ttdeci">const KeySet &amp; getDFInUpdatedVar(LocID loc)</div><div class="ttdoc">Get all variables which have new pts informationin loc&amp;#39;s IN set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00758">PersistentPointsToDS.h:758</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html">SVF::PersistentDiffPTData</a></div><div class="ttdoc">DiffPTData implemented with a persistent points-to backing. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00200">PersistentPointsToDS.h:200</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ae4732dd1897883fafa98454b46134bfb"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ae4732dd1897883fafa98454b46134bfb">SVF::PersistentIncDFPTData::updateTLVPts</a></div><div class="ttdeci">virtual bool updateTLVPts(LocID srcLoc, const Key &amp;srcVar, const Key &amp;dstVar) override</div><div class="ttdoc">Update points-to set of top-level pointers with IN[srcLoc:srcVar]. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00678">PersistentPointsToDS.h:678</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a9b61c0557c6b1460af2328709011b32e"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a9b61c0557c6b1460af2328709011b32e">SVF::PersistentDFPTData::updateDFInFromIn</a></div><div class="ttdeci">virtual bool updateDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00442">PersistentPointsToDS.h:442</a></div></div>
79
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_aa110fddf7d0cedfb66fcd37bae2c962c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#aa110fddf7d0cedfb66fcd37bae2c962c">SVF::PersistentDiffPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00203">PersistentPointsToDS.h:203</a></div></div>
80
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_afb2dd005d3d2ad01bdad4b7a1af5477d"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#afb2dd005d3d2ad01bdad4b7a1af5477d">SVF::PersistentPTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData() override</div><div class="ttdoc">Dump stored keys and points-to sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00091">PersistentPointsToDS.h:91</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1DiffPTData_html"><div class="ttname"><a href="classSVF_1_1DiffPTData.html">SVF::DiffPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00149">AbstractPointsToDS.h:149</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_aa55e1c39fb0918c4f7f080a521f504f5"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#aa55e1c39fb0918c4f7f080a521f504f5">SVF::PersistentDiffPTData::BasePersPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; BasePersPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00205">PersistentPointsToDS.h:205</a></div></div>
83
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a5cecb78af456e2241ff8554441b48d61"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a5cecb78af456e2241ff8554441b48d61">SVF::PersistentVersionedPTData::PersistentVersionedPTData</a></div><div class="ttdeci">PersistentVersionedPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersVersioned)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00815">PersistentPointsToDS.h:815</a></div></div>
84
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html">SVF::PersistentPTData</a></div><div class="ttdoc">PTData backed by a PersistentPointsToCache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00034">PersistentPointsToDS.h:34</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ae44f71f2ff837fbdf9b6e77f609c0c53"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ae44f71f2ff837fbdf9b6e77f609c0c53">SVF::PersistentIncDFPTData::varHasNewDFOutPts</a></div><div class="ttdeci">bool varHasNewDFOutPts(LocID loc, const Key &amp;var)</div><div class="ttdoc">Return TRUE if var has a new pts in loc&amp;#39;s OUT set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00780">PersistentPointsToDS.h:780</a></div></div>
86
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ab0299bcfee10af8b6ea59444c4d0299d"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ab0299bcfee10af8b6ea59444c4d0299d">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &amp;dstVar, const VersionedKey &amp;srcVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00859">PersistentPointsToDS.h:859</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a6c9ad3635f73b805289cc1f14cdcf09a"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a6c9ad3635f73b805289cc1f14cdcf09a">SVF::PersistentVersionedPTData::getAllPts</a></div><div class="ttdeci">virtual Map&lt; DataSet, unsigned &gt; getAllPts(bool liveOnly) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00904">PersistentPointsToDS.h:904</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a2cb37d0403e1b34316c9c24a0d6ab66c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a2cb37d0403e1b34316c9c24a0d6ab66c">SVF::PersistentDFPTData::unionPtsThroughIds</a></div><div class="ttdeci">bool unionPtsThroughIds(PointsToID &amp;dst, PointsToID &amp;src)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00549">PersistentPointsToDS.h:549</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a146a25bf9ae76f4c3c117433df9d382f"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a146a25bf9ae76f4c3c117433df9d382f">SVF::PersistentPTData::ptCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; DataSet &gt; &amp; ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00193">PersistentPointsToDS.h:193</a></div></div>
90
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a76ae2ef87bc32c2f6466e7bc2dfad726"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a76ae2ef87bc32c2f6466e7bc2dfad726">SVF::PersistentDiffPTData::getDiffPts</a></div><div class="ttdeci">virtual const DataSet &amp; getDiffPts(Key &amp;var) override</div><div class="ttdoc">Get diff points to. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00270">PersistentPointsToDS.h:270</a></div></div>
91
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a2adcebb6cf561eb00e3e05d486c86a9c"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a2adcebb6cf561eb00e3e05d486c86a9c">SVF::PersistentVersionedPTData::getVersionedKeyRevPts</a></div><div class="ttdeci">virtual const VersionedKeySet &amp; getVersionedKeyRevPts(const Data &amp;data) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00840">PersistentPointsToDS.h:840</a></div></div>
92
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a98d176e384469e0308bfee2061ef84b5"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a98d176e384469e0308bfee2061ef84b5">SVF::PersistentPointsToCache::emplacePts</a></div><div class="ttdeci">PointsToID emplacePts(const Data &amp;pts)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00091">PersistentPointsToCache.h:91</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ac563829c0d6d091c905bfe16580ceb47"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ac563829c0d6d091c905bfe16580ceb47">SVF::PersistentVersionedPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00820">PersistentPointsToDS.h:820</a></div></div>
94
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a85e0aec789ea945bd4cfa9e29189d1b4"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a85e0aec789ea945bd4cfa9e29189d1b4">SVF::PersistentDFPTData::PersistentDFPTData</a></div><div class="ttdeci">PersistentDFPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersDataFlow)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00346">PersistentPointsToDS.h:346</a></div></div>
95
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a9414aeb024e2c367b9777522aadd5d83"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a9414aeb024e2c367b9777522aadd5d83">SVF::PersistentPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const DataSet &amp;srcData) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00085">PersistentPointsToDS.h:85</a></div></div>
96
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_afa828c0db9c030584e379e86cf0a25a9"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#afa828c0db9c030584e379e86cf0a25a9">SVF::PersistentDFPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &amp;var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00389">PersistentPointsToDS.h:389</a></div></div>
97
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad9ccba048d0c749d1c2cafc517f78181"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad9ccba048d0c749d1c2cafc517f78181">SVF::PersistentDFPTData::~PersistentDFPTData</a></div><div class="ttdeci">virtual ~PersistentDFPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00349">PersistentPointsToDS.h:349</a></div></div>
98
98
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeecfaf26800dcebf0b079395126bc7f7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVF::SVFUtil::insertKey</a></div><div class="ttdeci">void insertKey(const Key &amp;key, KeySet &amp;keySet)</div><div class="ttdoc">Inserts an element into a Set/CondSet (with ::insert). </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00307">SVFUtil.h:307</a></div></div>
99
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_afb53f0b47cdad94379c3a4895980be9c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#afb53f0b47cdad94379c3a4895980be9c">SVF::PersistentDiffPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentDiffPTData&lt; Key, KeySet, Data, DataSet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00301">PersistentPointsToDS.h:301</a></div></div>
100
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a61b44f6d63cca013da2b278f47298473"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a61b44f6d63cca013da2b278f47298473">SVF::PersistentVersionedPTData::atPTData</a></div><div class="ttdeci">PersistentPTData&lt; VersionedKey, VersionedKeySet, Data, DataSet &gt; atPTData</div><div class="ttdoc">PTData for VersionedKeys (address-taken objects, generally). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00941">PersistentPointsToDS.h:941</a></div></div>
101
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a6a26ddacfd726c7078ae560a6b50ad6b"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a6a26ddacfd726c7078ae560a6b50ad6b">SVF::PersistentIncDFPTData::updateDFOutFromIn</a></div><div class="ttdeci">virtual bool updateDFOutFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00613">PersistentPointsToDS.h:613</a></div></div>
102
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ad1a2cd17519912b1d7571eeddcdc0060"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ad1a2cd17519912b1d7571eeddcdc0060">SVF::PersistentIncDFPTData::removeVarFromDFOutUpdatedSet</a></div><div class="ttdeci">void removeVarFromDFOutUpdatedSet(LocID loc, const Key &amp;var)</div><div class="ttdoc">Remove var from loc&amp;#39;s OUT updated set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00763">PersistentPointsToDS.h:763</a></div></div>
103
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a95df7d565ba8e990b61b1c932c8d4273"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a95df7d565ba8e990b61b1c932c8d4273">SVF::PersistentDFPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &amp;dstKey, const Data &amp;element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00369">PersistentPointsToDS.h:369</a></div></div>
104
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a50c3d871edb13ac5b3f0d625deb6449a"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a50c3d871edb13ac5b3f0d625deb6449a">SVF::PersistentDFPTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;) override</div><div class="ttdoc">Get reverse points-to set of a datum. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00353">PersistentPointsToDS.h:353</a></div></div>
105
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_af64c6a2c0a1b2044fac56a69e9db7cff"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#af64c6a2c0a1b2044fac56a69e9db7cff">SVF::PersistentDFPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &amp;var, const Data &amp;element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00374">PersistentPointsToDS.h:374</a></div></div>
106
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a4e896ec87d07e5b75401de4367d67458"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a4e896ec87d07e5b75401de4367d67458">SVF::PersistentPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00135">PersistentPointsToDS.h:135</a></div></div>
107
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a178b49cca2c22e874ff9e772cc4df72b"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a178b49cca2c22e874ff9e772cc4df72b">SVF::PersistentPointsToCache::unionPts</a></div><div class="ttdeci">PointsToID unionPts(PointsToID lhs, PointsToID rhs)</div><div class="ttdoc">Unions lhs and rhs and returns their union&amp;#39;s ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00112">PersistentPointsToCache.h:112</a></div></div>
108
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a444bc59754b4c365327b7ef44baadcd2"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a444bc59754b4c365327b7ef44baadcd2">SVF::PersistentDiffPTData::ptCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; DataSet &gt; &amp; ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00313">PersistentPointsToDS.h:313</a></div></div>
109
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ac4b8dc40514b50a77565a385b9a13ca5"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ac4b8dc40514b50a77565a385b9a13ca5">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &amp;dstVar, const DataSet &amp;srcDataSet) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00865">PersistentPointsToDS.h:865</a></div></div>
110
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a9982ecf42416756a0729a28e8713cfed"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed">SVF::PersistentDiffPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const Key &amp;var) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00214">PersistentPointsToDS.h:214</a></div></div>
111
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a780dc63003f8a0a4c66c1548138fdd86"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a780dc63003f8a0a4c66c1548138fdd86">SVF::PersistentDFPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const DataSet &amp;srcDataSet) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00364">PersistentPointsToDS.h:364</a></div></div>
99
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_afb53f0b47cdad94379c3a4895980be9c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#afb53f0b47cdad94379c3a4895980be9c">SVF::PersistentDiffPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentDiffPTData&lt; Key, KeySet, Data, DataSet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00311">PersistentPointsToDS.h:311</a></div></div>
100
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a61b44f6d63cca013da2b278f47298473"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a61b44f6d63cca013da2b278f47298473">SVF::PersistentVersionedPTData::atPTData</a></div><div class="ttdeci">PersistentPTData&lt; VersionedKey, VersionedKeySet, Data, DataSet &gt; atPTData</div><div class="ttdoc">PTData for VersionedKeys (address-taken objects, generally). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00951">PersistentPointsToDS.h:951</a></div></div>
101
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a6a26ddacfd726c7078ae560a6b50ad6b"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a6a26ddacfd726c7078ae560a6b50ad6b">SVF::PersistentIncDFPTData::updateDFOutFromIn</a></div><div class="ttdeci">virtual bool updateDFOutFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (OUT[dstLoc:dstVar], IN[srcLoc:srcVar]). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00623">PersistentPointsToDS.h:623</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ad1a2cd17519912b1d7571eeddcdc0060"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ad1a2cd17519912b1d7571eeddcdc0060">SVF::PersistentIncDFPTData::removeVarFromDFOutUpdatedSet</a></div><div class="ttdeci">void removeVarFromDFOutUpdatedSet(LocID loc, const Key &amp;var)</div><div class="ttdoc">Remove var from loc&amp;#39;s OUT updated set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00773">PersistentPointsToDS.h:773</a></div></div>
103
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a95df7d565ba8e990b61b1c932c8d4273"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a95df7d565ba8e990b61b1c932c8d4273">SVF::PersistentDFPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &amp;dstKey, const Data &amp;element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00379">PersistentPointsToDS.h:379</a></div></div>
104
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a50c3d871edb13ac5b3f0d625deb6449a"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a50c3d871edb13ac5b3f0d625deb6449a">SVF::PersistentDFPTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;) override</div><div class="ttdoc">Get reverse points-to set of a datum. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00363">PersistentPointsToDS.h:363</a></div></div>
105
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_af64c6a2c0a1b2044fac56a69e9db7cff"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#af64c6a2c0a1b2044fac56a69e9db7cff">SVF::PersistentDFPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &amp;var, const Data &amp;element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00384">PersistentPointsToDS.h:384</a></div></div>
106
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a4e896ec87d07e5b75401de4367d67458"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a4e896ec87d07e5b75401de4367d67458">SVF::PersistentPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00145">PersistentPointsToDS.h:145</a></div></div>
107
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a178b49cca2c22e874ff9e772cc4df72b"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a178b49cca2c22e874ff9e772cc4df72b">SVF::PersistentPointsToCache::unionPts</a></div><div class="ttdeci">PointsToID unionPts(PointsToID lhs, PointsToID rhs)</div><div class="ttdoc">Unions lhs and rhs and returns their union&amp;#39;s ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00114">PersistentPointsToCache.h:114</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a444bc59754b4c365327b7ef44baadcd2"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a444bc59754b4c365327b7ef44baadcd2">SVF::PersistentDiffPTData::ptCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; DataSet &gt; &amp; ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00323">PersistentPointsToDS.h:323</a></div></div>
109
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ac4b8dc40514b50a77565a385b9a13ca5"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ac4b8dc40514b50a77565a385b9a13ca5">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &amp;dstVar, const DataSet &amp;srcDataSet) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00875">PersistentPointsToDS.h:875</a></div></div>
110
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a9982ecf42416756a0729a28e8713cfed"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a9982ecf42416756a0729a28e8713cfed">SVF::PersistentDiffPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const Key &amp;var) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00224">PersistentPointsToDS.h:224</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a780dc63003f8a0a4c66c1548138fdd86"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a780dc63003f8a0a4c66c1548138fdd86">SVF::PersistentDFPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const DataSet &amp;srcDataSet) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00374">PersistentPointsToDS.h:374</a></div></div>
112
112
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
113
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_afc28b40eea7bad5276bbab30749d598b"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#afc28b40eea7bad5276bbab30749d598b">SVF::PersistentDFPTData::getDFInPtIdRef</a></div><div class="ttdeci">PointsToID &amp; getDFInPtIdRef(LocID loc, const Key &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00546">PersistentPointsToDS.h:546</a></div></div>
114
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a5e8036d18088ed272ab052b5cd6ef1ce"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a5e8036d18088ed272ab052b5cd6ef1ce">SVF::PersistentIncDFPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00702">PersistentPointsToDS.h:702</a></div></div>
115
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab84d0806e87c982bf81ae309f28751e3"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab84d0806e87c982bf81ae309f28751e3">SVF::PersistentPointsToCache::getAllPts</a></div><div class="ttdeci">Map&lt; Data, unsigned &gt; getAllPts(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00343">PersistentPointsToCache.h:343</a></div></div>
116
- <div class="ttc" id="classSVF_1_1DFPTData_html"><div class="ttname"><a href="classSVF_1_1DFPTData.html">SVF::DFPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00160">AbstractPointsToDS.h:160</a></div></div>
117
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ae42379dbabbd66dfd91e305673788ed3"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ae42379dbabbd66dfd91e305673788ed3">SVF::PersistentDiffPTData::computeDiffPts</a></div><div class="ttdeci">virtual bool computeDiffPts(Key &amp;var, const DataSet &amp;all) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00266">PersistentPointsToDS.h:266</a></div></div>
118
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_aff3437089686869faa772c44bca753b6"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#aff3437089686869faa772c44bca753b6">SVF::PersistentPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &amp;var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00099">PersistentPointsToDS.h:99</a></div></div>
119
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a46ab9d8365d9f9db9d84f5b8bcd3309c"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c">SVF::PersistentPTData::clearSingleRevPts</a></div><div class="ttdeci">void clearSingleRevPts(KeySet &amp;revSet, const Key &amp;k)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00166">PersistentPointsToDS.h:166</a></div></div>
120
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_af9facbe8f694b8447bb6ebe48b95ad17"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#af9facbe8f694b8447bb6ebe48b95ad17">SVF::PersistentDFPTData::BaseDFPTData</a></div><div class="ttdeci">DFPTData&lt; Key, KeySet, Data, DataSet &gt; BaseDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00329">PersistentPointsToDS.h:329</a></div></div>
121
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_add8c649853678b6c7acfa4217f1b7ee0"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#add8c649853678b6c7acfa4217f1b7ee0">SVF::PersistentDiffPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00250">PersistentPointsToDS.h:250</a></div></div>
122
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a83b7e86c11b03889d70b4dff46138987"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a83b7e86c11b03889d70b4dff46138987">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstVar, const VersionedKey &amp;srcVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00857">PersistentPointsToDS.h:857</a></div></div>
123
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a218ebd39a42b5de8910b98bef9d04f7d"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a218ebd39a42b5de8910b98bef9d04f7d">SVF::PersistentIncDFPTData::updateAllDFInFromOut</a></div><div class="ttdeci">virtual bool updateAllDFInFromOut(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above...</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00628">PersistentPointsToDS.h:628</a></div></div>
124
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a29104a2d53d94805e142f778d3d21ad5"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a29104a2d53d94805e142f778d3d21ad5">SVF::PersistentVersionedPTData::tlPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; tlPTData</div><div class="ttdoc">PTData for Keys (top-level pointers, generally). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00939">PersistentPointsToDS.h:939</a></div></div>
125
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_aea89a705aed7e02ddbf73f861506536e"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#aea89a705aed7e02ddbf73f861506536e">SVF::PersistentDFPTData::getDFOutPtsSet</a></div><div class="ttdeci">virtual const DataSet &amp; getDFOutPtsSet(LocID loc, const Key &amp;var) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00426">PersistentPointsToDS.h:426</a></div></div>
126
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a77bdc80a999296bcfa8d9f1f92c933d1"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a77bdc80a999296bcfa8d9f1f92c933d1">SVF::PersistentIncDFPTData::LocID</a></div><div class="ttdeci">BaseDFPTData::LocID LocID</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00579">PersistentPointsToDS.h:579</a></div></div>
113
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_afc28b40eea7bad5276bbab30749d598b"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#afc28b40eea7bad5276bbab30749d598b">SVF::PersistentDFPTData::getDFInPtIdRef</a></div><div class="ttdeci">PointsToID &amp; getDFInPtIdRef(LocID loc, const Key &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00556">PersistentPointsToDS.h:556</a></div></div>
114
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a5e8036d18088ed272ab052b5cd6ef1ce"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a5e8036d18088ed272ab052b5cd6ef1ce">SVF::PersistentIncDFPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00712">PersistentPointsToDS.h:712</a></div></div>
115
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_ab84d0806e87c982bf81ae309f28751e3"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#ab84d0806e87c982bf81ae309f28751e3">SVF::PersistentPointsToCache::getAllPts</a></div><div class="ttdeci">Map&lt; Data, unsigned &gt; getAllPts(void)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00345">PersistentPointsToCache.h:345</a></div></div>
116
+ <div class="ttc" id="classSVF_1_1DFPTData_html"><div class="ttname"><a href="classSVF_1_1DFPTData.html">SVF::DFPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00194">AbstractPointsToDS.h:194</a></div></div>
117
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ae42379dbabbd66dfd91e305673788ed3"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ae42379dbabbd66dfd91e305673788ed3">SVF::PersistentDiffPTData::computeDiffPts</a></div><div class="ttdeci">virtual bool computeDiffPts(Key &amp;var, const DataSet &amp;all) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00276">PersistentPointsToDS.h:276</a></div></div>
118
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_aff3437089686869faa772c44bca753b6"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#aff3437089686869faa772c44bca753b6">SVF::PersistentPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &amp;var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00109">PersistentPointsToDS.h:109</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a46ab9d8365d9f9db9d84f5b8bcd3309c"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a46ab9d8365d9f9db9d84f5b8bcd3309c">SVF::PersistentPTData::clearSingleRevPts</a></div><div class="ttdeci">void clearSingleRevPts(KeySet &amp;revSet, const Key &amp;k)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00176">PersistentPointsToDS.h:176</a></div></div>
120
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_af9facbe8f694b8447bb6ebe48b95ad17"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#af9facbe8f694b8447bb6ebe48b95ad17">SVF::PersistentDFPTData::BaseDFPTData</a></div><div class="ttdeci">DFPTData&lt; Key, KeySet, Data, DataSet &gt; BaseDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00339">PersistentPointsToDS.h:339</a></div></div>
121
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_add8c649853678b6c7acfa4217f1b7ee0"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#add8c649853678b6c7acfa4217f1b7ee0">SVF::PersistentDiffPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00260">PersistentPointsToDS.h:260</a></div></div>
122
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a83b7e86c11b03889d70b4dff46138987"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a83b7e86c11b03889d70b4dff46138987">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstVar, const VersionedKey &amp;srcVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00867">PersistentPointsToDS.h:867</a></div></div>
123
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a218ebd39a42b5de8910b98bef9d04f7d"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a218ebd39a42b5de8910b98bef9d04f7d">SVF::PersistentIncDFPTData::updateAllDFInFromOut</a></div><div class="ttdeci">virtual bool updateAllDFInFromOut(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above...</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00638">PersistentPointsToDS.h:638</a></div></div>
124
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a29104a2d53d94805e142f778d3d21ad5"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a29104a2d53d94805e142f778d3d21ad5">SVF::PersistentVersionedPTData::tlPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; tlPTData</div><div class="ttdoc">PTData for Keys (top-level pointers, generally). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00949">PersistentPointsToDS.h:949</a></div></div>
125
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_aea89a705aed7e02ddbf73f861506536e"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#aea89a705aed7e02ddbf73f861506536e">SVF::PersistentDFPTData::getDFOutPtsSet</a></div><div class="ttdeci">virtual const DataSet &amp; getDFOutPtsSet(LocID loc, const Key &amp;var) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00436">PersistentPointsToDS.h:436</a></div></div>
126
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a77bdc80a999296bcfa8d9f1f92c933d1"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a77bdc80a999296bcfa8d9f1f92c933d1">SVF::PersistentIncDFPTData::LocID</a></div><div class="ttdeci">BaseDFPTData::LocID LocID</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00589">PersistentPointsToDS.h:589</a></div></div>
127
127
  <div class="ttc" id="AbstractPointsToDS_8h_html"><div class="ttname"><a href="AbstractPointsToDS_8h.html">AbstractPointsToDS.h</a></div></div>
128
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a34f8226202e1654d4e67916b21ec4d99"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">SVF::PersistentPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const Key &amp;var) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00049">PersistentPointsToDS.h:49</a></div></div>
129
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad77d7ccad393c995813f8c433c249dfc"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad77d7ccad393c995813f8c433c249dfc">SVF::PersistentDFPTData::dfOutPtsMap</a></div><div class="ttdeci">DFKeyToIDMap dfOutPtsMap</div><div class="ttdoc">Address-taken points-to sets in OUT-sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00565">PersistentPointsToDS.h:565</a></div></div>
128
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a34f8226202e1654d4e67916b21ec4d99"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a34f8226202e1654d4e67916b21ec4d99">SVF::PersistentPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const Key &amp;var) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00059">PersistentPointsToDS.h:59</a></div></div>
129
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad77d7ccad393c995813f8c433c249dfc"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad77d7ccad393c995813f8c433c249dfc">SVF::PersistentDFPTData::dfOutPtsMap</a></div><div class="ttdeci">DFKeyToIDMap dfOutPtsMap</div><div class="ttdoc">Address-taken points-to sets in OUT-sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00575">PersistentPointsToDS.h:575</a></div></div>
130
130
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
131
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ace47d00f778bc4a714fc4f9d0cbd063c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ace47d00f778bc4a714fc4f9d0cbd063c">SVF::PersistentDFPTData::hasDFOutSet</a></div><div class="ttdeci">virtual bool hasDFOutSet(LocID loc, const Key &amp;var) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00412">PersistentPointsToDS.h:412</a></div></div>
132
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ab070b1baa6a01800edac36dc075107fd"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ab070b1baa6a01800edac36dc075107fd">SVF::PersistentDFPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00341">PersistentPointsToDS.h:341</a></div></div>
133
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a8ba8e547bf572cd7403cb4fe52c19908"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a8ba8e547bf572cd7403cb4fe52c19908">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &amp;dstVar, const Key &amp;srcVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00853">PersistentPointsToDS.h:853</a></div></div>
134
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html">SVF::PersistentVersionedPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00020">PersistentPointsToDS.h:20</a></div></div>
135
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad341c691c11bbdeaa13cfe23919ed070"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad341c691c11bbdeaa13cfe23919ed070">SVF::PersistentDFPTData::updateAllDFOutFromIn</a></div><div class="ttdeci">virtual bool updateAllDFOutFromIn(LocID loc, const Key &amp;singleton, bool strongUpdates) override</div><div class="ttdoc">For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00457">PersistentPointsToDS.h:457</a></div></div>
136
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a9f5bb9d2020973660268c4e5ac98cb61"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a9f5bb9d2020973660268c4e5ac98cb61">SVF::PersistentVersionedPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &amp;k, const Data &amp;element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00870">PersistentPointsToDS.h:870</a></div></div>
137
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ae4877cf4db5b1da5e7d05fe65ae8ed32"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ae4877cf4db5b1da5e7d05fe65ae8ed32">SVF::PersistentVersionedPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const VersionedKey &amp;vk, const Data &amp;element) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00840">PersistentPointsToDS.h:840</a></div></div>
138
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a656434f7b67aabf25f6dba400d95f2bb"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a656434f7b67aabf25f6dba400d95f2bb">SVF::PersistentIncDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentIncDFPTData&lt; Key, KeySet, Data, DataSet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00711">PersistentPointsToDS.h:711</a></div></div>
139
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a10221452ea6ffed4ae51a9c6f9dc1e93"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a10221452ea6ffed4ae51a9c6f9dc1e93">SVF::PersistentPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &amp;var, const Data &amp;element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00085">PersistentPointsToDS.h:85</a></div></div>
140
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ac008ee5f7e4d286f9e76d85989358305"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ac008ee5f7e4d286f9e76d85989358305">SVF::PersistentDiffPTData::RevPtsMap</a></div><div class="ttdeci">BasePersPTData::RevPtsMap RevPtsMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00199">PersistentPointsToDS.h:199</a></div></div>
141
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a89c4e8c8edcc6744f298e90d721a0745"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a89c4e8c8edcc6744f298e90d721a0745">SVF::PersistentPointsToCache::remapAllPts</a></div><div class="ttdeci">void remapAllPts(void)</div><div class="ttdoc">Remaps all points-to sets stored in the cache to the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00078">PersistentPointsToCache.h:78</a></div></div>
142
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a67a72d34b62884dee72e0b48b07a7e9f"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a67a72d34b62884dee72e0b48b07a7e9f">SVF::PersistentDFPTData::updateAllDFInFromOut</a></div><div class="ttdeci">virtual bool updateAllDFInFromOut(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above...</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00447">PersistentPointsToDS.h:447</a></div></div>
143
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a7b43ad5045ebdaa86f2587ea3f2f9563"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">SVF::PersistentPTData::revPtsMap</a></div><div class="ttdeci">RevPtsMap revPtsMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00185">PersistentPointsToDS.h:185</a></div></div>
144
- <div class="ttc" id="classSVF_1_1PTData_html"><div class="ttname"><a href="classSVF_1_1PTData.html">SVF::PTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00040">AbstractPointsToDS.h:40</a></div></div>
145
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad7a4b3c68c4b8b70268ee7c919c624d5"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad7a4b3c68c4b8b70268ee7c919c624d5">SVF::PersistentDFPTData::clearAllDFOutUpdatedVar</a></div><div class="ttdeci">virtual void clearAllDFOutUpdatedVar(LocID) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00476">PersistentPointsToDS.h:476</a></div></div>
131
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ace47d00f778bc4a714fc4f9d0cbd063c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ace47d00f778bc4a714fc4f9d0cbd063c">SVF::PersistentDFPTData::hasDFOutSet</a></div><div class="ttdeci">virtual bool hasDFOutSet(LocID loc, const Key &amp;var) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00422">PersistentPointsToDS.h:422</a></div></div>
132
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ab070b1baa6a01800edac36dc075107fd"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ab070b1baa6a01800edac36dc075107fd">SVF::PersistentDFPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00351">PersistentPointsToDS.h:351</a></div></div>
133
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a8ba8e547bf572cd7403cb4fe52c19908"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a8ba8e547bf572cd7403cb4fe52c19908">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const VersionedKey &amp;dstVar, const Key &amp;srcVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00863">PersistentPointsToDS.h:863</a></div></div>
134
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html">SVF::PersistentVersionedPTData</a></div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00030">PersistentPointsToDS.h:30</a></div></div>
135
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad341c691c11bbdeaa13cfe23919ed070"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad341c691c11bbdeaa13cfe23919ed070">SVF::PersistentDFPTData::updateAllDFOutFromIn</a></div><div class="ttdeci">virtual bool updateAllDFOutFromIn(LocID loc, const Key &amp;singleton, bool strongUpdates) override</div><div class="ttdoc">For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00467">PersistentPointsToDS.h:467</a></div></div>
136
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a9f5bb9d2020973660268c4e5ac98cb61"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a9f5bb9d2020973660268c4e5ac98cb61">SVF::PersistentVersionedPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &amp;k, const Data &amp;element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00880">PersistentPointsToDS.h:880</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ae4877cf4db5b1da5e7d05fe65ae8ed32"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ae4877cf4db5b1da5e7d05fe65ae8ed32">SVF::PersistentVersionedPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const VersionedKey &amp;vk, const Data &amp;element) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00850">PersistentPointsToDS.h:850</a></div></div>
138
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a656434f7b67aabf25f6dba400d95f2bb"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a656434f7b67aabf25f6dba400d95f2bb">SVF::PersistentIncDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentIncDFPTData&lt; Key, KeySet, Data, DataSet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00721">PersistentPointsToDS.h:721</a></div></div>
139
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a10221452ea6ffed4ae51a9c6f9dc1e93"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a10221452ea6ffed4ae51a9c6f9dc1e93">SVF::PersistentPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &amp;var, const Data &amp;element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00095">PersistentPointsToDS.h:95</a></div></div>
140
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ac008ee5f7e4d286f9e76d85989358305"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ac008ee5f7e4d286f9e76d85989358305">SVF::PersistentDiffPTData::RevPtsMap</a></div><div class="ttdeci">BasePersPTData::RevPtsMap RevPtsMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00209">PersistentPointsToDS.h:209</a></div></div>
141
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a89c4e8c8edcc6744f298e90d721a0745"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a89c4e8c8edcc6744f298e90d721a0745">SVF::PersistentPointsToCache::remapAllPts</a></div><div class="ttdeci">void remapAllPts(void)</div><div class="ttdoc">Remaps all points-to sets stored in the cache to the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00080">PersistentPointsToCache.h:80</a></div></div>
142
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a67a72d34b62884dee72e0b48b07a7e9f"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a67a72d34b62884dee72e0b48b07a7e9f">SVF::PersistentDFPTData::updateAllDFInFromOut</a></div><div class="ttdeci">virtual bool updateAllDFInFromOut(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], OUT[srcLoc:srcVar]. There is no flag check, unlike the above...</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00457">PersistentPointsToDS.h:457</a></div></div>
143
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a7b43ad5045ebdaa86f2587ea3f2f9563"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a7b43ad5045ebdaa86f2587ea3f2f9563">SVF::PersistentPTData::revPtsMap</a></div><div class="ttdeci">RevPtsMap revPtsMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00195">PersistentPointsToDS.h:195</a></div></div>
144
+ <div class="ttc" id="classSVF_1_1PTData_html"><div class="ttname"><a href="classSVF_1_1PTData.html">SVF::PTData</a></div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00074">AbstractPointsToDS.h:74</a></div></div>
145
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad7a4b3c68c4b8b70268ee7c919c624d5"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad7a4b3c68c4b8b70268ee7c919c624d5">SVF::PersistentDFPTData::clearAllDFOutUpdatedVar</a></div><div class="ttdeci">virtual void clearAllDFOutUpdatedVar(LocID) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00486">PersistentPointsToDS.h:486</a></div></div>
146
146
  <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html">SVF::PersistentPointsToCache&lt; DataSet &gt;</a></div></div>
147
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a142ea74fa724f047db14d3b573d9eee8"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">SVF::PersistentPTData::unionPtsFromId</a></div><div class="ttdeci">bool unionPtsFromId(const Key &amp;dstKey, PointsToID srcId)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00144">PersistentPointsToDS.h:144</a></div></div>
148
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html">SVF::PersistentDFPTData</a></div><div class="ttdoc">DFPTData backed by a PersistentPointsToCache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00016">PersistentPointsToDS.h:16</a></div></div>
149
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ae4b558e119c7e3fae25a0b4509422c87"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ae4b558e119c7e3fae25a0b4509422c87">SVF::PersistentDiffPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &amp;var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00245">PersistentPointsToDS.h:245</a></div></div>
150
- <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#l00104">PersistentPointsToCache.h:104</a></div></div>
151
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_aa9f6b38595cabbb583c52217188457e8"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#aa9f6b38595cabbb583c52217188457e8">SVF::PersistentIncDFPTData::setVarDFOutSetUpdated</a></div><div class="ttdeci">void setVarDFOutSetUpdated(LocID loc, const Key &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00757">PersistentPointsToDS.h:757</a></div></div>
152
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a7751d9831519f8021626630dce499b1a"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a7751d9831519f8021626630dce499b1a">SVF::PersistentIncDFPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00573">PersistentPointsToDS.h:573</a></div></div>
153
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_aafa09ff01060e43f08278963179eec30"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#aafa09ff01060e43f08278963179eec30">SVF::PersistentVersionedPTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;data) override</div><div class="ttdoc">Get reverse points-to set of a datum. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00825">PersistentPointsToDS.h:825</a></div></div>
154
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a86bf6959fb5587e350015d58d529af14"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a86bf6959fb5587e350015d58d529af14">SVF::PersistentPointsToCache::complementPts</a></div><div class="ttdeci">PointsToID complementPts(PointsToID lhs, PointsToID rhs)</div><div class="ttdoc">Relatively complements lhs and rhs (lhs \ rhs) and returns it&amp;#39;s ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00171">PersistentPointsToCache.h:171</a></div></div>
155
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a815a7c54c1533f16c3efd0796044afc2"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a815a7c54c1533f16c3efd0796044afc2">SVF::PersistentIncDFPTData::clearAllDFOutUpdatedVar</a></div><div class="ttdeci">virtual void clearAllDFOutUpdatedVar(LocID loc) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00690">PersistentPointsToDS.h:690</a></div></div>
156
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a18f90b2f4e54b47c4d6f2d50886a4411"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a18f90b2f4e54b47c4d6f2d50886a4411">SVF::PersistentDiffPTData::PersistentDiffPTData</a></div><div class="ttdeci">PersistentDiffPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersDiff)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00202">PersistentPointsToDS.h:202</a></div></div>
157
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a495fede1f68c53956df3c033ef349940"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a495fede1f68c53956df3c033ef349940">SVF::PersistentIncDFPTData::PersistentIncDFPTData</a></div><div class="ttdeci">PersistentIncDFPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=BasePTData::PersIncDataFlow)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00584">PersistentPointsToDS.h:584</a></div></div>
158
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a483c690c6cf19e258bdf7bb13e77976e"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">SVF::PersistentPTData::ptsMap</a></div><div class="ttdeci">KeyToIDMap ptsMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00184">PersistentPointsToDS.h:184</a></div></div>
159
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a10504f854b1b390818f8ee12182d857c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a10504f854b1b390818f8ee12182d857c">SVF::PersistentDiffPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00207">PersistentPointsToDS.h:207</a></div></div>
160
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a0d0318fa192eac88a4307112e30e9d90"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a0d0318fa192eac88a4307112e30e9d90">SVF::PersistentDFPTData::DFKeyToIDMap</a></div><div class="ttdeci">Map&lt; LocID, KeyToIDMap &gt; DFKeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00334">PersistentPointsToDS.h:334</a></div></div>
161
- <div class="ttc" id="classSVF_1_1PTData_html_a74ce29609c51f2be34a0b5b7650a9848"><div class="ttname"><a href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">SVF::PTData&lt; VersionedKey, VersionedKeySet, Data, DataSet &gt;::PTDataTy</a></div><div class="ttdeci">PTDataTy</div><div class="ttdoc">Types of a points-to data structures. </div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00044">AbstractPointsToDS.h:44</a></div></div>
162
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a6b892b707524127928e269f0f0bbe868"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a6b892b707524127928e269f0f0bbe868">SVF::PersistentDFPTData::dfInPtsMap</a></div><div class="ttdeci">DFKeyToIDMap dfInPtsMap</div><div class="ttdoc">Address-taken points-to sets in IN-sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00563">PersistentPointsToDS.h:563</a></div></div>
147
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a142ea74fa724f047db14d3b573d9eee8"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a142ea74fa724f047db14d3b573d9eee8">SVF::PersistentPTData::unionPtsFromId</a></div><div class="ttdeci">bool unionPtsFromId(const Key &amp;dstKey, PointsToID srcId)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00154">PersistentPointsToDS.h:154</a></div></div>
148
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html">SVF::PersistentDFPTData</a></div><div class="ttdoc">DFPTData backed by a PersistentPointsToCache. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00026">PersistentPointsToDS.h:26</a></div></div>
149
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ae4b558e119c7e3fae25a0b4509422c87"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ae4b558e119c7e3fae25a0b4509422c87">SVF::PersistentDiffPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &amp;var) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00255">PersistentPointsToDS.h:255</a></div></div>
150
+ <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>
151
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_aa9f6b38595cabbb583c52217188457e8"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#aa9f6b38595cabbb583c52217188457e8">SVF::PersistentIncDFPTData::setVarDFOutSetUpdated</a></div><div class="ttdeci">void setVarDFOutSetUpdated(LocID loc, const Key &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00767">PersistentPointsToDS.h:767</a></div></div>
152
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a7751d9831519f8021626630dce499b1a"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a7751d9831519f8021626630dce499b1a">SVF::PersistentIncDFPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00583">PersistentPointsToDS.h:583</a></div></div>
153
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_aafa09ff01060e43f08278963179eec30"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#aafa09ff01060e43f08278963179eec30">SVF::PersistentVersionedPTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;data) override</div><div class="ttdoc">Get reverse points-to set of a datum. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00835">PersistentPointsToDS.h:835</a></div></div>
154
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a86bf6959fb5587e350015d58d529af14"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a86bf6959fb5587e350015d58d529af14">SVF::PersistentPointsToCache::complementPts</a></div><div class="ttdeci">PointsToID complementPts(PointsToID lhs, PointsToID rhs)</div><div class="ttdoc">Relatively complements lhs and rhs (lhs \ rhs) and returns it&amp;#39;s ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00173">PersistentPointsToCache.h:173</a></div></div>
155
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a815a7c54c1533f16c3efd0796044afc2"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a815a7c54c1533f16c3efd0796044afc2">SVF::PersistentIncDFPTData::clearAllDFOutUpdatedVar</a></div><div class="ttdeci">virtual void clearAllDFOutUpdatedVar(LocID loc) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00700">PersistentPointsToDS.h:700</a></div></div>
156
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a18f90b2f4e54b47c4d6f2d50886a4411"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a18f90b2f4e54b47c4d6f2d50886a4411">SVF::PersistentDiffPTData::PersistentDiffPTData</a></div><div class="ttdeci">PersistentDiffPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersDiff)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00212">PersistentPointsToDS.h:212</a></div></div>
157
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a495fede1f68c53956df3c033ef349940"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a495fede1f68c53956df3c033ef349940">SVF::PersistentIncDFPTData::PersistentIncDFPTData</a></div><div class="ttdeci">PersistentIncDFPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=BasePTData::PersIncDataFlow)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00594">PersistentPointsToDS.h:594</a></div></div>
158
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a483c690c6cf19e258bdf7bb13e77976e"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a483c690c6cf19e258bdf7bb13e77976e">SVF::PersistentPTData::ptsMap</a></div><div class="ttdeci">KeyToIDMap ptsMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00194">PersistentPointsToDS.h:194</a></div></div>
159
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a10504f854b1b390818f8ee12182d857c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a10504f854b1b390818f8ee12182d857c">SVF::PersistentDiffPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00217">PersistentPointsToDS.h:217</a></div></div>
160
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a0d0318fa192eac88a4307112e30e9d90"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a0d0318fa192eac88a4307112e30e9d90">SVF::PersistentDFPTData::DFKeyToIDMap</a></div><div class="ttdeci">Map&lt; LocID, KeyToIDMap &gt; DFKeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00344">PersistentPointsToDS.h:344</a></div></div>
161
+ <div class="ttc" id="classSVF_1_1PTData_html_a74ce29609c51f2be34a0b5b7650a9848"><div class="ttname"><a href="classSVF_1_1PTData.html#a74ce29609c51f2be34a0b5b7650a9848">SVF::PTData&lt; VersionedKey, VersionedKeySet, Data, DataSet &gt;::PTDataTy</a></div><div class="ttdeci">PTDataTy</div><div class="ttdoc">Types of a points-to data structures. </div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00078">AbstractPointsToDS.h:78</a></div></div>
162
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a6b892b707524127928e269f0f0bbe868"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a6b892b707524127928e269f0f0bbe868">SVF::PersistentDFPTData::dfInPtsMap</a></div><div class="ttdeci">DFKeyToIDMap dfInPtsMap</div><div class="ttdoc">Address-taken points-to sets in IN-sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00573">PersistentPointsToDS.h:573</a></div></div>
163
163
  <div class="ttc" id="PersistentPointsToCache_8h_html"><div class="ttname"><a href="PersistentPointsToCache_8h.html">PersistentPointsToCache.h</a></div></div>
164
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a7a12f89c0de40dbcb5fe48219a7c121b"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a7a12f89c0de40dbcb5fe48219a7c121b">SVF::PersistentDiffPTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;data) override</div><div class="ttdoc">Get reverse points-to set of a datum. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00219">PersistentPointsToDS.h:219</a></div></div>
165
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a5c31a5faad444bd19005d06ba28d0185"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a5c31a5faad444bd19005d06ba28d0185">SVF::PersistentVersionedPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &amp;k) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00879">PersistentPointsToDS.h:879</a></div></div>
166
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a64864dcc7ec8a26244cdfbe8c25886a2"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a64864dcc7ec8a26244cdfbe8c25886a2">SVF::PersistentPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00032">PersistentPointsToDS.h:32</a></div></div>
167
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ac54339952e2734a6affdaa543fb3ed22"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ac54339952e2734a6affdaa543fb3ed22">SVF::PersistentDiffPTData::diffPtsMap</a></div><div class="ttdeci">KeyToIDMap diffPtsMap</div><div class="ttdoc">Diff points-to to be propagated. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00317">PersistentPointsToDS.h:317</a></div></div>
168
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_aee8871b4895d38bccb9078ad540f9f0f"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#aee8871b4895d38bccb9078ad540f9f0f">SVF::PersistentDFPTData::KeyToIDMap</a></div><div class="ttdeci">BasePersPTData::KeyToIDMap KeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00333">PersistentPointsToDS.h:333</a></div></div>
169
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a3bad0126e25b0a7134e8ef25869bd40e"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a3bad0126e25b0a7134e8ef25869bd40e">SVF::PersistentDiffPTData::getAllPts</a></div><div class="ttdeci">virtual Map&lt; DataSet, unsigned &gt; getAllPts(bool liveOnly) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00294">PersistentPointsToDS.h:294</a></div></div>
170
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a3a2cf38f220a831c4334614b835b57c6"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a3a2cf38f220a831c4334614b835b57c6">SVF::PersistentDiffPTData::BaseDiffPTData</a></div><div class="ttdeci">DiffPTData&lt; Key, KeySet, Data, DataSet &gt; BaseDiffPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00194">PersistentPointsToDS.h:194</a></div></div>
171
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a440e0e1e1e449d5514dbc3f8a0da90d7"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a440e0e1e1e449d5514dbc3f8a0da90d7">SVF::PersistentIncDFPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00577">PersistentPointsToDS.h:577</a></div></div>
172
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a6e7d072fd2d420870bb959b68c200137"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a6e7d072fd2d420870bb959b68c200137">SVF::PersistentDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00394">PersistentPointsToDS.h:394</a></div></div>
173
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a56764f78042a2a9229d3b76861b54952"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a56764f78042a2a9229d3b76861b54952">SVF::PersistentIncDFPTData::varHasNewDFInPts</a></div><div class="ttdeci">bool varHasNewDFInPts(LocID loc, const Key &amp;var)</div><div class="ttdoc">Return TRUE if var has a new pts in loc&amp;#39;s IN set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00740">PersistentPointsToDS.h:740</a></div></div>
174
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_afe724603022a8fed7469f9ecd633febc"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#afe724603022a8fed7469f9ecd633febc">SVF::PersistentVersionedPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const VersionedKey &amp;vk, const Data &amp;element) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00874">PersistentPointsToDS.h:874</a></div></div>
175
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a364fc243fe230342b209bb0c3a7d0966"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a364fc243fe230342b209bb0c3a7d0966">SVF::PersistentVersionedPTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData() override</div><div class="ttdoc">Dump stored keys and points-to sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00916">PersistentPointsToDS.h:916</a></div></div>
176
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_aac817d88beae87fcc961a2df7904e61c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#aac817d88beae87fcc961a2df7904e61c">SVF::PersistentDFPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00384">PersistentPointsToDS.h:384</a></div></div>
177
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_aad89172e6e99d5ee576faa7bc74b36d8"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#aad89172e6e99d5ee576faa7bc74b36d8">SVF::PersistentPTData::RevPtsMap</a></div><div class="ttdeci">Map&lt; Data, KeySet &gt; RevPtsMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00035">PersistentPointsToDS.h:35</a></div></div>
178
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a26ca6565c4766e3d6ea6bf435ae910a3"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a26ca6565c4766e3d6ea6bf435ae910a3">SVF::PersistentDFPTData::getDFInPtsSet</a></div><div class="ttdeci">virtual const DataSet &amp; getDFInPtsSet(LocID loc, const Key &amp;var) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00420">PersistentPointsToDS.h:420</a></div></div>
179
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a28a8bf95351e295e65360bf16241a5da"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a28a8bf95351e295e65360bf16241a5da">SVF::PersistentVersionedPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentVersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00926">PersistentPointsToDS.h:926</a></div></div>
164
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a7a12f89c0de40dbcb5fe48219a7c121b"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a7a12f89c0de40dbcb5fe48219a7c121b">SVF::PersistentDiffPTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;data) override</div><div class="ttdoc">Get reverse points-to set of a datum. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00229">PersistentPointsToDS.h:229</a></div></div>
165
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a5c31a5faad444bd19005d06ba28d0185"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a5c31a5faad444bd19005d06ba28d0185">SVF::PersistentVersionedPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const Key &amp;k) override</div><div class="ttdoc">Fully clears the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00889">PersistentPointsToDS.h:889</a></div></div>
166
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a64864dcc7ec8a26244cdfbe8c25886a2"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a64864dcc7ec8a26244cdfbe8c25886a2">SVF::PersistentPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00042">PersistentPointsToDS.h:42</a></div></div>
167
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ac54339952e2734a6affdaa543fb3ed22"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ac54339952e2734a6affdaa543fb3ed22">SVF::PersistentDiffPTData::diffPtsMap</a></div><div class="ttdeci">KeyToIDMap diffPtsMap</div><div class="ttdoc">Diff points-to to be propagated. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00327">PersistentPointsToDS.h:327</a></div></div>
168
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_aee8871b4895d38bccb9078ad540f9f0f"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#aee8871b4895d38bccb9078ad540f9f0f">SVF::PersistentDFPTData::KeyToIDMap</a></div><div class="ttdeci">BasePersPTData::KeyToIDMap KeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00343">PersistentPointsToDS.h:343</a></div></div>
169
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a3bad0126e25b0a7134e8ef25869bd40e"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a3bad0126e25b0a7134e8ef25869bd40e">SVF::PersistentDiffPTData::getAllPts</a></div><div class="ttdeci">virtual Map&lt; DataSet, unsigned &gt; getAllPts(bool liveOnly) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00304">PersistentPointsToDS.h:304</a></div></div>
170
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a3a2cf38f220a831c4334614b835b57c6"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a3a2cf38f220a831c4334614b835b57c6">SVF::PersistentDiffPTData::BaseDiffPTData</a></div><div class="ttdeci">DiffPTData&lt; Key, KeySet, Data, DataSet &gt; BaseDiffPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00204">PersistentPointsToDS.h:204</a></div></div>
171
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a440e0e1e1e449d5514dbc3f8a0da90d7"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a440e0e1e1e449d5514dbc3f8a0da90d7">SVF::PersistentIncDFPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00587">PersistentPointsToDS.h:587</a></div></div>
172
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a6e7d072fd2d420870bb959b68c200137"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a6e7d072fd2d420870bb959b68c200137">SVF::PersistentDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00404">PersistentPointsToDS.h:404</a></div></div>
173
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a56764f78042a2a9229d3b76861b54952"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a56764f78042a2a9229d3b76861b54952">SVF::PersistentIncDFPTData::varHasNewDFInPts</a></div><div class="ttdeci">bool varHasNewDFInPts(LocID loc, const Key &amp;var)</div><div class="ttdoc">Return TRUE if var has a new pts in loc&amp;#39;s IN set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00750">PersistentPointsToDS.h:750</a></div></div>
174
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_afe724603022a8fed7469f9ecd633febc"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#afe724603022a8fed7469f9ecd633febc">SVF::PersistentVersionedPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const VersionedKey &amp;vk, const Data &amp;element) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00884">PersistentPointsToDS.h:884</a></div></div>
175
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a364fc243fe230342b209bb0c3a7d0966"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a364fc243fe230342b209bb0c3a7d0966">SVF::PersistentVersionedPTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData() override</div><div class="ttdoc">Dump stored keys and points-to sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00926">PersistentPointsToDS.h:926</a></div></div>
176
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_aac817d88beae87fcc961a2df7904e61c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#aac817d88beae87fcc961a2df7904e61c">SVF::PersistentDFPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00394">PersistentPointsToDS.h:394</a></div></div>
177
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_aad89172e6e99d5ee576faa7bc74b36d8"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#aad89172e6e99d5ee576faa7bc74b36d8">SVF::PersistentPTData::RevPtsMap</a></div><div class="ttdeci">Map&lt; Data, KeySet &gt; RevPtsMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00045">PersistentPointsToDS.h:45</a></div></div>
178
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a26ca6565c4766e3d6ea6bf435ae910a3"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a26ca6565c4766e3d6ea6bf435ae910a3">SVF::PersistentDFPTData::getDFInPtsSet</a></div><div class="ttdeci">virtual const DataSet &amp; getDFInPtsSet(LocID loc, const Key &amp;var) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00430">PersistentPointsToDS.h:430</a></div></div>
179
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a28a8bf95351e295e65360bf16241a5da"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a28a8bf95351e295e65360bf16241a5da">SVF::PersistentVersionedPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentVersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00936">PersistentPointsToDS.h:936</a></div></div>
180
180
  <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>
181
181
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
182
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_acea7eb9ee0c1ee36906d50bce584b56a"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#acea7eb9ee0c1ee36906d50bce584b56a">SVF::PersistentIncDFPTData::BasePersPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; BasePersPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00574">PersistentPointsToDS.h:574</a></div></div>
183
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a1d168145358e0f69eca023dd9b4363ea"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a1d168145358e0f69eca023dd9b4363ea">SVF::PersistentDFPTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData() override</div><div class="ttdoc">Dump stored keys and points-to sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00389">PersistentPointsToDS.h:389</a></div></div>
184
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a311ada9c9a0376c71dae24841cc60b7a"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a311ada9c9a0376c71dae24841cc60b7a">SVF::PersistentDiffPTData::~PersistentDiffPTData</a></div><div class="ttdeci">virtual ~PersistentDiffPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00205">PersistentPointsToDS.h:205</a></div></div>
185
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ab01a663b665d629c15f3531f18b5abc2"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ab01a663b665d629c15f3531f18b5abc2">SVF::PersistentDiffPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &amp;var, const Data &amp;element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00240">PersistentPointsToDS.h:240</a></div></div>
186
- <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#l00037">PersistentPointsToCache.h:37</a></div></div>
187
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a9f748619f67f3ff9c4c4a429e6614989"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a9f748619f67f3ff9c4c4a429e6614989">SVF::PersistentDiffPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &amp;dstKey, const Data &amp;element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00225">PersistentPointsToDS.h:225</a></div></div>
188
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_aa9aac7ff120abf87e7edfe233691f00f"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#aa9aac7ff120abf87e7edfe233691f00f">SVF::PersistentDiffPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const DataSet &amp;srcDataSet) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00235">PersistentPointsToDS.h:235</a></div></div>
189
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_afe80884fa8227e50f28631e20aa6fdf6"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#afe80884fa8227e50f28631e20aa6fdf6">SVF::PersistentVersionedPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const Key &amp;vk) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00816">PersistentPointsToDS.h:816</a></div></div>
190
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_aa9d13ece84d5f519031b4f3cdb429d61"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#aa9d13ece84d5f519031b4f3cdb429d61">SVF::PersistentDFPTData::updateTLVPts</a></div><div class="ttdeci">virtual bool updateTLVPts(LocID srcLoc, const Key &amp;srcVar, const Key &amp;dstVar) override</div><div class="ttdoc">Update points-to set of top-level pointers with IN[srcLoc:srcVar]. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00481">PersistentPointsToDS.h:481</a></div></div>
191
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ae56633d34e5fb4499c82d422646a91f0"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ae56633d34e5fb4499c82d422646a91f0">SVF::PersistentIncDFPTData::BaseDFPTData</a></div><div class="ttdeci">DFPTData&lt; Key, KeySet, Data, DataSet &gt; BaseDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00575">PersistentPointsToDS.h:575</a></div></div>
192
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ab71b82478d74f1a20ce3de479f2d8d5c"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ab71b82478d74f1a20ce3de479f2d8d5c">SVF::PersistentVersionedPTData::BaseVersionedPTData</a></div><div class="ttdeci">VersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt; BaseVersionedPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00799">PersistentPointsToDS.h:799</a></div></div>
193
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_aa00e0bfaf2d46f2aa83a37c7c9514edb"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#aa00e0bfaf2d46f2aa83a37c7c9514edb">SVF::PersistentDiffPTData::clearPropaPts</a></div><div class="ttdeci">virtual void clearPropaPts(Key &amp;var) override</div><div class="ttdoc">Clear propagated points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00289">PersistentPointsToDS.h:289</a></div></div>
194
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_abffb5c9cfe1e306ce524ef1dc5ff18ad"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#abffb5c9cfe1e306ce524ef1dc5ff18ad">SVF::PersistentDiffPTData::propaPtsMap</a></div><div class="ttdeci">KeyToIDMap propaPtsMap</div><div class="ttdoc">Points-to already propagated. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00319">PersistentPointsToDS.h:319</a></div></div>
195
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ab490fd81739f2bd6dddabd5ce5beac3b"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ab490fd81739f2bd6dddabd5ce5beac3b">SVF::PersistentDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc, const Key &amp;var) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00404">PersistentPointsToDS.h:404</a></div></div>
196
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a78f2b0ee440ed5b358928ee775e95564"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a78f2b0ee440ed5b358928ee775e95564">SVF::PersistentVersionedPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const VersionedKey &amp;vk) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00883">PersistentPointsToDS.h:883</a></div></div>
197
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_abb11d9bd24cb587bba6f762ab49b07c8"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#abb11d9bd24cb587bba6f762ab49b07c8">SVF::PersistentDFPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00328">PersistentPointsToDS.h:328</a></div></div>
198
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_abf836f1b063b869215c7e9b53b013d3f"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#abf836f1b063b869215c7e9b53b013d3f">SVF::PersistentPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00043">PersistentPointsToDS.h:43</a></div></div>
199
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_aea074e213475c4dc632f8d21e8388868"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#aea074e213475c4dc632f8d21e8388868">SVF::PersistentIncDFPTData::~PersistentIncDFPTData</a></div><div class="ttdeci">virtual ~PersistentIncDFPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00587">PersistentPointsToDS.h:587</a></div></div>
200
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ac7caee8468f12e87a70837a8f2e9685c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ac7caee8468f12e87a70837a8f2e9685c">SVF::PersistentDiffPTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData() override</div><div class="ttdoc">Dump stored keys and points-to sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00255">PersistentPointsToDS.h:255</a></div></div>
201
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a349c231f59ea554059a1891f1a530820"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a349c231f59ea554059a1891f1a530820">SVF::PersistentDFPTData::persPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; persPTData</div><div class="ttdoc">PTData for top-level pointers. We will also use its cache for address-taken pointers. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00560">PersistentPointsToDS.h:560</a></div></div>
202
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a778e8374e15bba331f1be99594970812"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a778e8374e15bba331f1be99594970812">SVF::PersistentDiffPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00196">PersistentPointsToDS.h:196</a></div></div>
203
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a236c780af73ab909a66a922bc8645ea4"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a236c780af73ab909a66a922bc8645ea4">SVF::PersistentPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const Key &amp;srcKey) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00069">PersistentPointsToDS.h:69</a></div></div>
204
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a67c4dec1150bdd8458046696578e5069"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a67c4dec1150bdd8458046696578e5069">SVF::PersistentDFPTData::hasDFOutSet</a></div><div class="ttdeci">virtual bool hasDFOutSet(LocID loc) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00399">PersistentPointsToDS.h:399</a></div></div>
205
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a9191992b978b643f2d51633b2e330ec6"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a9191992b978b643f2d51633b2e330ec6">SVF::PersistentIncDFPTData::updateDFInFromOut</a></div><div class="ttdeci">virtual bool updateDFInFromOut(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00601">PersistentPointsToDS.h:601</a></div></div>
206
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html">SVF::PersistentIncDFPTData</a></div><div class="ttdoc">Incremental version of the persistent data-flow points-to data structure. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00018">PersistentPointsToDS.h:18</a></div></div>
207
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a1f85475cb6690bb1caa003c5a3aec92f"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a1f85475cb6690bb1caa003c5a3aec92f">SVF::PersistentVersionedPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00931">PersistentPointsToDS.h:931</a></div></div>
208
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a54c206686c17101a0233fbbd3836c05c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a54c206686c17101a0233fbbd3836c05c">SVF::PersistentDFPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00327">PersistentPointsToDS.h:327</a></div></div>
209
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_afe1f57d265c0910ec26567ce850b8421"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#afe1f57d265c0910ec26567ce850b8421">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstVar, const Key &amp;srcVar) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00845">PersistentPointsToDS.h:845</a></div></div>
210
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a2a83492ac0b641c67489a770aadc4ad0"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a2a83492ac0b641c67489a770aadc4ad0">SVF::PersistentPTData::clearRevPts</a></div><div class="ttdeci">void clearRevPts(const DataSet &amp;pts, const Key &amp;k)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00174">PersistentPointsToDS.h:174</a></div></div>
211
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a5b24a6efc462014ed8002cefee3c0e6e"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a5b24a6efc462014ed8002cefee3c0e6e">SVF::PersistentPTData::PersistentPTData</a></div><div class="ttdeci">PersistentPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersBase)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00038">PersistentPointsToDS.h:38</a></div></div>
212
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a9e2dcff79d55b92bc84ec2bb42d851ac"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a9e2dcff79d55b92bc84ec2bb42d851ac">SVF::PersistentDFPTData::updateAllDFInFromIn</a></div><div class="ttdeci">virtual bool updateAllDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00437">PersistentPointsToDS.h:437</a></div></div>
213
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad374e8e6ddd5c397bd5ab6cf9b259968"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad374e8e6ddd5c397bd5ab6cf9b259968">SVF::PersistentDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentDFPTData&lt; Key, KeySet, Data, DataSet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00526">PersistentPointsToDS.h:526</a></div></div>
214
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a4f4b1869210228e9d1b4f3900b41bb88"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a4f4b1869210228e9d1b4f3900b41bb88">SVF::PersistentDiffPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00306">PersistentPointsToDS.h:306</a></div></div>
215
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_abad78c2ef84371b693dca206ebbb63ab"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#abad78c2ef84371b693dca206ebbb63ab">SVF::PersistentIncDFPTData::UpdatedVarMap</a></div><div class="ttdeci">Map&lt; LocID, KeySet &gt; UpdatedVarMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00580">PersistentPointsToDS.h:580</a></div></div>
182
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_acea7eb9ee0c1ee36906d50bce584b56a"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#acea7eb9ee0c1ee36906d50bce584b56a">SVF::PersistentIncDFPTData::BasePersPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; BasePersPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00584">PersistentPointsToDS.h:584</a></div></div>
183
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a1d168145358e0f69eca023dd9b4363ea"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a1d168145358e0f69eca023dd9b4363ea">SVF::PersistentDFPTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData() override</div><div class="ttdoc">Dump stored keys and points-to sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00399">PersistentPointsToDS.h:399</a></div></div>
184
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a311ada9c9a0376c71dae24841cc60b7a"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a311ada9c9a0376c71dae24841cc60b7a">SVF::PersistentDiffPTData::~PersistentDiffPTData</a></div><div class="ttdeci">virtual ~PersistentDiffPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00215">PersistentPointsToDS.h:215</a></div></div>
185
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ab01a663b665d629c15f3531f18b5abc2"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ab01a663b665d629c15f3531f18b5abc2">SVF::PersistentDiffPTData::clearPts</a></div><div class="ttdeci">virtual void clearPts(const Key &amp;var, const Data &amp;element) override</div><div class="ttdoc">Clears element from the points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00250">PersistentPointsToDS.h:250</a></div></div>
186
+ <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>
187
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a9f748619f67f3ff9c4c4a429e6614989"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a9f748619f67f3ff9c4c4a429e6614989">SVF::PersistentDiffPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &amp;dstKey, const Data &amp;element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00235">PersistentPointsToDS.h:235</a></div></div>
188
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_aa9aac7ff120abf87e7edfe233691f00f"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#aa9aac7ff120abf87e7edfe233691f00f">SVF::PersistentDiffPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const DataSet &amp;srcDataSet) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00245">PersistentPointsToDS.h:245</a></div></div>
189
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_afe80884fa8227e50f28631e20aa6fdf6"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#afe80884fa8227e50f28631e20aa6fdf6">SVF::PersistentVersionedPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const Key &amp;vk) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00826">PersistentPointsToDS.h:826</a></div></div>
190
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_aa9d13ece84d5f519031b4f3cdb429d61"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#aa9d13ece84d5f519031b4f3cdb429d61">SVF::PersistentDFPTData::updateTLVPts</a></div><div class="ttdeci">virtual bool updateTLVPts(LocID srcLoc, const Key &amp;srcVar, const Key &amp;dstVar) override</div><div class="ttdoc">Update points-to set of top-level pointers with IN[srcLoc:srcVar]. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00491">PersistentPointsToDS.h:491</a></div></div>
191
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ae56633d34e5fb4499c82d422646a91f0"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ae56633d34e5fb4499c82d422646a91f0">SVF::PersistentIncDFPTData::BaseDFPTData</a></div><div class="ttdeci">DFPTData&lt; Key, KeySet, Data, DataSet &gt; BaseDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00585">PersistentPointsToDS.h:585</a></div></div>
192
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ab71b82478d74f1a20ce3de479f2d8d5c"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ab71b82478d74f1a20ce3de479f2d8d5c">SVF::PersistentVersionedPTData::BaseVersionedPTData</a></div><div class="ttdeci">VersionedPTData&lt; Key, KeySet, Data, DataSet, VersionedKey, VersionedKeySet &gt; BaseVersionedPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00809">PersistentPointsToDS.h:809</a></div></div>
193
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_aa00e0bfaf2d46f2aa83a37c7c9514edb"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#aa00e0bfaf2d46f2aa83a37c7c9514edb">SVF::PersistentDiffPTData::clearPropaPts</a></div><div class="ttdeci">virtual void clearPropaPts(Key &amp;var) override</div><div class="ttdoc">Clear propagated points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00299">PersistentPointsToDS.h:299</a></div></div>
194
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_abffb5c9cfe1e306ce524ef1dc5ff18ad"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#abffb5c9cfe1e306ce524ef1dc5ff18ad">SVF::PersistentDiffPTData::propaPtsMap</a></div><div class="ttdeci">KeyToIDMap propaPtsMap</div><div class="ttdoc">Points-to already propagated. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00329">PersistentPointsToDS.h:329</a></div></div>
195
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ab490fd81739f2bd6dddabd5ce5beac3b"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ab490fd81739f2bd6dddabd5ce5beac3b">SVF::PersistentDFPTData::hasDFInSet</a></div><div class="ttdeci">virtual bool hasDFInSet(LocID loc, const Key &amp;var) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00414">PersistentPointsToDS.h:414</a></div></div>
196
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a78f2b0ee440ed5b358928ee775e95564"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a78f2b0ee440ed5b358928ee775e95564">SVF::PersistentVersionedPTData::clearFullPts</a></div><div class="ttdeci">virtual void clearFullPts(const VersionedKey &amp;vk) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00893">PersistentPointsToDS.h:893</a></div></div>
197
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_abb11d9bd24cb587bba6f762ab49b07c8"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#abb11d9bd24cb587bba6f762ab49b07c8">SVF::PersistentDFPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00338">PersistentPointsToDS.h:338</a></div></div>
198
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_abf836f1b063b869215c7e9b53b013d3f"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#abf836f1b063b869215c7e9b53b013d3f">SVF::PersistentPTData::clear</a></div><div class="ttdeci">virtual void clear() override</div><div class="ttdoc">Clears all points-to sets as if nothing is stored. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00053">PersistentPointsToDS.h:53</a></div></div>
199
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_aea074e213475c4dc632f8d21e8388868"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#aea074e213475c4dc632f8d21e8388868">SVF::PersistentIncDFPTData::~PersistentIncDFPTData</a></div><div class="ttdeci">virtual ~PersistentIncDFPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00597">PersistentPointsToDS.h:597</a></div></div>
200
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_ac7caee8468f12e87a70837a8f2e9685c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#ac7caee8468f12e87a70837a8f2e9685c">SVF::PersistentDiffPTData::dumpPTData</a></div><div class="ttdeci">virtual void dumpPTData() override</div><div class="ttdoc">Dump stored keys and points-to sets. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00265">PersistentPointsToDS.h:265</a></div></div>
201
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a349c231f59ea554059a1891f1a530820"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a349c231f59ea554059a1891f1a530820">SVF::PersistentDFPTData::persPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; persPTData</div><div class="ttdoc">PTData for top-level pointers. We will also use its cache for address-taken pointers. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00570">PersistentPointsToDS.h:570</a></div></div>
202
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a778e8374e15bba331f1be99594970812"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a778e8374e15bba331f1be99594970812">SVF::PersistentDiffPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00206">PersistentPointsToDS.h:206</a></div></div>
203
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a236c780af73ab909a66a922bc8645ea4"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a236c780af73ab909a66a922bc8645ea4">SVF::PersistentPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const Key &amp;srcKey) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00079">PersistentPointsToDS.h:79</a></div></div>
204
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a67c4dec1150bdd8458046696578e5069"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a67c4dec1150bdd8458046696578e5069">SVF::PersistentDFPTData::hasDFOutSet</a></div><div class="ttdeci">virtual bool hasDFOutSet(LocID loc) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00409">PersistentPointsToDS.h:409</a></div></div>
205
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a9191992b978b643f2d51633b2e330ec6"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a9191992b978b643f2d51633b2e330ec6">SVF::PersistentIncDFPTData::updateDFInFromOut</a></div><div class="ttdeci">virtual bool updateDFInFromOut(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00611">PersistentPointsToDS.h:611</a></div></div>
206
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html">SVF::PersistentIncDFPTData</a></div><div class="ttdoc">Incremental version of the persistent data-flow points-to data structure. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00028">PersistentPointsToDS.h:28</a></div></div>
207
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a1f85475cb6690bb1caa003c5a3aec92f"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a1f85475cb6690bb1caa003c5a3aec92f">SVF::PersistentVersionedPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00941">PersistentPointsToDS.h:941</a></div></div>
208
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a54c206686c17101a0233fbbd3836c05c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a54c206686c17101a0233fbbd3836c05c">SVF::PersistentDFPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00337">PersistentPointsToDS.h:337</a></div></div>
209
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_afe1f57d265c0910ec26567ce850b8421"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#afe1f57d265c0910ec26567ce850b8421">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstVar, const Key &amp;srcVar) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00855">PersistentPointsToDS.h:855</a></div></div>
210
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a2a83492ac0b641c67489a770aadc4ad0"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a2a83492ac0b641c67489a770aadc4ad0">SVF::PersistentPTData::clearRevPts</a></div><div class="ttdeci">void clearRevPts(const DataSet &amp;pts, const Key &amp;k)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00184">PersistentPointsToDS.h:184</a></div></div>
211
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a5b24a6efc462014ed8002cefee3c0e6e"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a5b24a6efc462014ed8002cefee3c0e6e">SVF::PersistentPTData::PersistentPTData</a></div><div class="ttdeci">PersistentPTData(PersistentPointsToCache&lt; DataSet &gt; &amp;cache, bool reversePT=true, PTDataTy ty=PTDataTy::PersBase)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00048">PersistentPointsToDS.h:48</a></div></div>
212
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a9e2dcff79d55b92bc84ec2bb42d851ac"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a9e2dcff79d55b92bc84ec2bb42d851ac">SVF::PersistentDFPTData::updateAllDFInFromIn</a></div><div class="ttdeci">virtual bool updateAllDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00447">PersistentPointsToDS.h:447</a></div></div>
213
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ad374e8e6ddd5c397bd5ab6cf9b259968"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ad374e8e6ddd5c397bd5ab6cf9b259968">SVF::PersistentDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentDFPTData&lt; Key, KeySet, Data, DataSet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00536">PersistentPointsToDS.h:536</a></div></div>
214
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a4f4b1869210228e9d1b4f3900b41bb88"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a4f4b1869210228e9d1b4f3900b41bb88">SVF::PersistentDiffPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00316">PersistentPointsToDS.h:316</a></div></div>
215
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_abad78c2ef84371b693dca206ebbb63ab"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#abad78c2ef84371b693dca206ebbb63ab">SVF::PersistentIncDFPTData::UpdatedVarMap</a></div><div class="ttdeci">Map&lt; LocID, KeySet &gt; UpdatedVarMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00590">PersistentPointsToDS.h:590</a></div></div>
216
216
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
217
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a575a441ddbe233d34937792b66d2b39c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a575a441ddbe233d34937792b66d2b39c">SVF::PersistentDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00531">PersistentPointsToDS.h:531</a></div></div>
218
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a6ca39340bb502c933c3dd6c1ab8f79c1"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a6ca39340bb502c933c3dd6c1ab8f79c1">SVF::PersistentPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00031">PersistentPointsToDS.h:31</a></div></div>
219
- <div class="ttc" id="classSVF_1_1DFPTData_html_a298a5ef6cfffbe10b9d05af0ad12e786"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">SVF::DFPTData::LocID</a></div><div class="ttdeci">NodeID LocID</div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00166">AbstractPointsToDS.h:166</a></div></div>
220
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_af86313e37c5177e45456f813b9b46a4f"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#af86313e37c5177e45456f813b9b46a4f">SVF::PersistentDFPTData::ptCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; DataSet &gt; &amp; ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00557">PersistentPointsToDS.h:557</a></div></div>
221
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a174c3cac13c839863171621ea25e609f"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a174c3cac13c839863171621ea25e609f">SVF::PersistentPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00130">PersistentPointsToDS.h:130</a></div></div>
222
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a5f6a01d0bb40a718bc14f2cc1bb98a13"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13">SVF::PersistentDFPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const Key &amp;var) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00348">PersistentPointsToDS.h:348</a></div></div>
217
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a575a441ddbe233d34937792b66d2b39c"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a575a441ddbe233d34937792b66d2b39c">SVF::PersistentDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00541">PersistentPointsToDS.h:541</a></div></div>
218
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a6ca39340bb502c933c3dd6c1ab8f79c1"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a6ca39340bb502c933c3dd6c1ab8f79c1">SVF::PersistentPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00041">PersistentPointsToDS.h:41</a></div></div>
219
+ <div class="ttc" id="classSVF_1_1DFPTData_html_a298a5ef6cfffbe10b9d05af0ad12e786"><div class="ttname"><a href="classSVF_1_1DFPTData.html#a298a5ef6cfffbe10b9d05af0ad12e786">SVF::DFPTData::LocID</a></div><div class="ttdeci">NodeID LocID</div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00200">AbstractPointsToDS.h:200</a></div></div>
220
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_af86313e37c5177e45456f813b9b46a4f"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#af86313e37c5177e45456f813b9b46a4f">SVF::PersistentDFPTData::ptCache</a></div><div class="ttdeci">PersistentPointsToCache&lt; DataSet &gt; &amp; ptCache</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00567">PersistentPointsToDS.h:567</a></div></div>
221
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a174c3cac13c839863171621ea25e609f"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a174c3cac13c839863171621ea25e609f">SVF::PersistentPTData::classof</a></div><div class="ttdeci">static bool classof(const PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; *)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00140">PersistentPointsToDS.h:140</a></div></div>
222
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a5f6a01d0bb40a718bc14f2cc1bb98a13"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a5f6a01d0bb40a718bc14f2cc1bb98a13">SVF::PersistentDFPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const Key &amp;var) override</div><div class="ttdoc">Get points-to set of var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00358">PersistentPointsToDS.h:358</a></div></div>
223
223
  <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="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
224
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ad4586331863d67e78c54d919694b58db"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ad4586331863d67e78c54d919694b58db">SVF::PersistentVersionedPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00798">PersistentPointsToDS.h:798</a></div></div>
225
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a98f84bffeba6bd7dc140f1d5b63ff368"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a98f84bffeba6bd7dc140f1d5b63ff368">SVF::PersistentDFPTData::getAllPts</a></div><div class="ttdeci">virtual Map&lt; DataSet, unsigned &gt; getAllPts(bool liveOnly) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00491">PersistentPointsToDS.h:491</a></div></div>
226
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ad449df82589efb4c40affb5fdc46f479"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ad449df82589efb4c40affb5fdc46f479">SVF::PersistentIncDFPTData::removeVarFromDFInUpdatedSet</a></div><div class="ttdeci">void removeVarFromDFInUpdatedSet(LocID loc, const Key &amp;var)</div><div class="ttdoc">Remove var from loc&amp;#39;s IN updated set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00733">PersistentPointsToDS.h:733</a></div></div>
227
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a76d8a4f907269e9980f39c531806e96b"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a76d8a4f907269e9980f39c531806e96b">SVF::PersistentDFPTData::LocID</a></div><div class="ttdeci">BaseDFPTData::LocID LocID</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00332">PersistentPointsToDS.h:332</a></div></div>
228
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a00151507a86b71f99e43fa87b59d65bb"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a00151507a86b71f99e43fa87b59d65bb">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstVar, const DataSet &amp;srcDataSet) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00861">PersistentPointsToDS.h:861</a></div></div>
224
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_ad4586331863d67e78c54d919694b58db"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#ad4586331863d67e78c54d919694b58db">SVF::PersistentVersionedPTData::BasePTData</a></div><div class="ttdeci">PTData&lt; Key, KeySet, Data, DataSet &gt; BasePTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00808">PersistentPointsToDS.h:808</a></div></div>
225
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a98f84bffeba6bd7dc140f1d5b63ff368"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a98f84bffeba6bd7dc140f1d5b63ff368">SVF::PersistentDFPTData::getAllPts</a></div><div class="ttdeci">virtual Map&lt; DataSet, unsigned &gt; getAllPts(bool liveOnly) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00501">PersistentPointsToDS.h:501</a></div></div>
226
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_ad449df82589efb4c40affb5fdc46f479"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#ad449df82589efb4c40affb5fdc46f479">SVF::PersistentIncDFPTData::removeVarFromDFInUpdatedSet</a></div><div class="ttdeci">void removeVarFromDFInUpdatedSet(LocID loc, const Key &amp;var)</div><div class="ttdoc">Remove var from loc&amp;#39;s IN updated set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00743">PersistentPointsToDS.h:743</a></div></div>
227
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a76d8a4f907269e9980f39c531806e96b"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a76d8a4f907269e9980f39c531806e96b">SVF::PersistentDFPTData::LocID</a></div><div class="ttdeci">BaseDFPTData::LocID LocID</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00342">PersistentPointsToDS.h:342</a></div></div>
228
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a00151507a86b71f99e43fa87b59d65bb"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a00151507a86b71f99e43fa87b59d65bb">SVF::PersistentVersionedPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstVar, const DataSet &amp;srcDataSet) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U srcDataSet. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00871">PersistentPointsToDS.h:871</a></div></div>
229
229
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aee74719d33695e4da6fee5fc83f745d9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVF::SVFUtil::removeKey</a></div><div class="ttdeci">void removeKey(const Key &amp;key, KeySet &amp;keySet)</div><div class="ttdoc">Removes an element from a Set/CondSet (or anything implementing ::erase). </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00320">SVFUtil.h:320</a></div></div>
230
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a5b015e6801e4320e45e7942f9db82a42"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a5b015e6801e4320e45e7942f9db82a42">SVF::PersistentIncDFPTData::updateDFInFromIn</a></div><div class="ttdeci">virtual bool updateDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00589">PersistentPointsToDS.h:589</a></div></div>
231
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a2ee473a1654b7d134a602268a2b70248"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a2ee473a1654b7d134a602268a2b70248">SVF::PersistentVersionedPTData::VersionedKeyToIDMap</a></div><div class="ttdeci">PersistentPTData&lt; VersionedKey, VersionedKeySet, Data, DataSet &gt;::KeyToIDMap VersionedKeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00803">PersistentPointsToDS.h:803</a></div></div>
232
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a916017f2cc924b10e72120d1d87afd34"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a916017f2cc924b10e72120d1d87afd34">SVF::PersistentPTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;data) override</div><div class="ttdoc">Get reverse points-to set of a datum. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00055">PersistentPointsToDS.h:55</a></div></div>
233
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_aa4660a55bee52fc51248d694d475811f"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">SVF::PersistentPTData::KeyToIDMap</a></div><div class="ttdeci">Map&lt; Key, PointsToID &gt; KeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00034">PersistentPointsToDS.h:34</a></div></div>
234
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a1927ccf9bb74b698f540f683e7f0d0f2"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a1927ccf9bb74b698f540f683e7f0d0f2">SVF::PersistentVersionedPTData::KeyToIDMap</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt;::KeyToIDMap KeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00802">PersistentPointsToDS.h:802</a></div></div>
235
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a0b757b12ace04b7b7d1e081ad1b742cf"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a0b757b12ace04b7b7d1e081ad1b742cf">SVF::PersistentDFPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const Key &amp;srcKey) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00359">PersistentPointsToDS.h:359</a></div></div>
236
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_aa50d20f82143fd56cbe468b29bf9e11e"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#aa50d20f82143fd56cbe468b29bf9e11e">SVF::PersistentIncDFPTData::getDFOutUpdatedVar</a></div><div class="ttdeci">const KeySet &amp; getDFOutUpdatedVar(LocID loc)</div><div class="ttdoc">Get all variables which have new pts info in loc&amp;#39;s OUT set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00778">PersistentPointsToDS.h:778</a></div></div>
237
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_af8084d77fb666933fd0efe0df983074d"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#af8084d77fb666933fd0efe0df983074d">SVF::PersistentPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00105">PersistentPointsToDS.h:105</a></div></div>
238
- <div class="ttc" id="classSVF_1_1PTData_html_adfcbaefe1c058d9ddf14aa3da07e1daf"><div class="ttname"><a href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">SVF::PTData::getPTDTY</a></div><div class="ttdeci">PTDataTy getPTDTY() const</div><div class="ttdoc">Get the type of points-to data structure that this is. </div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00067">AbstractPointsToDS.h:67</a></div></div>
239
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_aadba2724dfe3cb745d9e9d73b8c3de67"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#aadba2724dfe3cb745d9e9d73b8c3de67">SVF::PersistentPTData::getAllPts</a></div><div class="ttdeci">virtual Map&lt; DataSet, unsigned &gt; getAllPts(bool liveOnly) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00110">PersistentPointsToDS.h:110</a></div></div>
240
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_adb2c450f2c93fbf630d91b8c2697fa06"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#adb2c450f2c93fbf630d91b8c2697fa06">SVF::PersistentDiffPTData::updatePropaPtsMap</a></div><div class="ttdeci">virtual void updatePropaPtsMap(Key &amp;src, Key &amp;dst) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00282">PersistentPointsToDS.h:282</a></div></div>
241
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a0b4feff5bc406088216d9e45941fe3ef"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a0b4feff5bc406088216d9e45941fe3ef">SVF::PersistentVersionedPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00888">PersistentPointsToDS.h:888</a></div></div>
242
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a106391cd8eefab1740b54cd9bbacccad"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a106391cd8eefab1740b54cd9bbacccad">SVF::PersistentIncDFPTData::inUpdatedVarMap</a></div><div class="ttdeci">UpdatedVarMap inUpdatedVarMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00787">PersistentPointsToDS.h:787</a></div></div>
243
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a6051aa255081543388a8f9077012834c"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a6051aa255081543388a8f9077012834c">SVF::PersistentVersionedPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00800">PersistentPointsToDS.h:800</a></div></div>
244
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a2252fcbc06243787b6854d826373da1d"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a2252fcbc06243787b6854d826373da1d">SVF::PersistentVersionedPTData::~PersistentVersionedPTData</a></div><div class="ttdeci">virtual ~PersistentVersionedPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00808">PersistentPointsToDS.h:808</a></div></div>
245
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ab13b3a484a5ac22c47391f1b2eaa58a1"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ab13b3a484a5ac22c47391f1b2eaa58a1">SVF::PersistentDFPTData::getDFOutPtIdRef</a></div><div class="ttdeci">PointsToID &amp; getDFOutPtIdRef(LocID loc, const Key &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00551">PersistentPointsToDS.h:551</a></div></div>
246
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a4e706309fe4bb40b4424251888363215"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a4e706309fe4bb40b4424251888363215">SVF::PersistentDiffPTData::KeyToIDMap</a></div><div class="ttdeci">BasePersPTData::KeyToIDMap KeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00198">PersistentPointsToDS.h:198</a></div></div>
247
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_abfacbe37d9e0b5f05eabec66c60c2e2b"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#abfacbe37d9e0b5f05eabec66c60c2e2b">SVF::PersistentDFPTData::updateDFInFromOut</a></div><div class="ttdeci">virtual bool updateDFInFromOut(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00442">PersistentPointsToDS.h:442</a></div></div>
248
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a8d53322eadc657ed88a8b724647070b2"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a8d53322eadc657ed88a8b724647070b2">SVF::PersistentPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &amp;dstKey, const Data &amp;element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00061">PersistentPointsToDS.h:61</a></div></div>
249
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a7f3730473af9218bea520ec0498fb4ac"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a7f3730473af9218bea520ec0498fb4ac">SVF::PersistentVersionedPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &amp;k, const Data &amp;element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00836">PersistentPointsToDS.h:836</a></div></div>
250
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a6a59e2297b72cc30553db5e45da70f46"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a6a59e2297b72cc30553db5e45da70f46">SVF::PersistentIncDFPTData::updateAllDFOutFromIn</a></div><div class="ttdeci">virtual bool updateAllDFOutFromIn(LocID loc, const Key &amp;singleton, bool strongUpdates) override</div><div class="ttdoc">For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00650">PersistentPointsToDS.h:650</a></div></div>
251
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a9cc43f58ea3be1b7fbc7df7cfe965c3c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a9cc43f58ea3be1b7fbc7df7cfe965c3c">SVF::PersistentDiffPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const Key &amp;srcKey) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00230">PersistentPointsToDS.h:230</a></div></div>
252
- <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a0d6620a7078bd60d16256ac48af58db9"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a0d6620a7078bd60d16256ac48af58db9">SVF::PersistentDiffPTData::persPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; persPTData</div><div class="ttdoc">Backing to implement basic PTData methods. Allows us to avoid multiple inheritance. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00315">PersistentPointsToDS.h:315</a></div></div>
253
- <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a9b81d20e54d08e36edbff43549b1e820"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820">SVF::PersistentVersionedPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const VersionedKey &amp;vk) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00820">PersistentPointsToDS.h:820</a></div></div>
254
- <div class="ttc" id="classSVF_1_1PTData_html_a46fa3ec6462f3dda19549340281bb219"><div class="ttname"><a href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">SVF::PTData::rev</a></div><div class="ttdeci">bool rev</div><div class="ttdoc">Whether we maintain reverse points-to sets or not. </div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00107">AbstractPointsToDS.h:107</a></div></div>
255
- <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a6761733754abf061e92125988a684fa3"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a6761733754abf061e92125988a684fa3">SVF::PersistentDFPTData::updateATVPts</a></div><div class="ttdeci">virtual bool updateATVPts(const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00486">PersistentPointsToDS.h:486</a></div></div>
256
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a2259da9defa195350b3f70cd16c3f2ec"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a2259da9defa195350b3f70cd16c3f2ec">SVF::PersistentIncDFPTData::updateAllDFInFromIn</a></div><div class="ttdeci">virtual bool updateAllDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00639">PersistentPointsToDS.h:639</a></div></div>
257
- <div class="ttc" id="classSVF_1_1PersistentPTData_html_a66a9367f0b965d18be8bb1247e1c2548"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a66a9367f0b965d18be8bb1247e1c2548">SVF::PersistentPTData::~PersistentPTData</a></div><div class="ttdeci">virtual ~PersistentPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00041">PersistentPointsToDS.h:41</a></div></div>
258
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a47c2fbf8b959aae3166b9757b12880a7"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a47c2fbf8b959aae3166b9757b12880a7">SVF::PersistentIncDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00716">PersistentPointsToDS.h:716</a></div></div>
259
- <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_abce6fa91fed789ef25146440ee10872b"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#abce6fa91fed789ef25146440ee10872b">SVF::PersistentIncDFPTData::BasePersDFPTData</a></div><div class="ttdeci">PersistentDFPTData&lt; Key, KeySet, Data, DataSet &gt; BasePersDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00576">PersistentPointsToDS.h:576</a></div></div>
260
- <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a17d33558208c19019e541ee167009494"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a17d33558208c19019e541ee167009494">SVF::PersistentPointsToCache::intersectPts</a></div><div class="ttdeci">PointsToID intersectPts(PointsToID lhs, PointsToID rhs)</div><div class="ttdoc">Intersects lhs and rhs (lhs AND rhs) and returns the intersection&amp;#39;s ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00234">PersistentPointsToCache.h:234</a></div></div>
230
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a5b015e6801e4320e45e7942f9db82a42"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a5b015e6801e4320e45e7942f9db82a42">SVF::PersistentIncDFPTData::updateDFInFromIn</a></div><div class="ttdeci">virtual bool updateDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00599">PersistentPointsToDS.h:599</a></div></div>
231
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a2ee473a1654b7d134a602268a2b70248"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a2ee473a1654b7d134a602268a2b70248">SVF::PersistentVersionedPTData::VersionedKeyToIDMap</a></div><div class="ttdeci">PersistentPTData&lt; VersionedKey, VersionedKeySet, Data, DataSet &gt;::KeyToIDMap VersionedKeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00813">PersistentPointsToDS.h:813</a></div></div>
232
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a916017f2cc924b10e72120d1d87afd34"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a916017f2cc924b10e72120d1d87afd34">SVF::PersistentPTData::getRevPts</a></div><div class="ttdeci">virtual const KeySet &amp; getRevPts(const Data &amp;data) override</div><div class="ttdoc">Get reverse points-to set of a datum. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00065">PersistentPointsToDS.h:65</a></div></div>
233
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_aa4660a55bee52fc51248d694d475811f"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#aa4660a55bee52fc51248d694d475811f">SVF::PersistentPTData::KeyToIDMap</a></div><div class="ttdeci">Map&lt; Key, PointsToID &gt; KeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00044">PersistentPointsToDS.h:44</a></div></div>
234
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a1927ccf9bb74b698f540f683e7f0d0f2"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a1927ccf9bb74b698f540f683e7f0d0f2">SVF::PersistentVersionedPTData::KeyToIDMap</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt;::KeyToIDMap KeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00812">PersistentPointsToDS.h:812</a></div></div>
235
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a0b757b12ace04b7b7d1e081ad1b742cf"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a0b757b12ace04b7b7d1e081ad1b742cf">SVF::PersistentDFPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const Key &amp;srcKey) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00369">PersistentPointsToDS.h:369</a></div></div>
236
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_aa50d20f82143fd56cbe468b29bf9e11e"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#aa50d20f82143fd56cbe468b29bf9e11e">SVF::PersistentIncDFPTData::getDFOutUpdatedVar</a></div><div class="ttdeci">const KeySet &amp; getDFOutUpdatedVar(LocID loc)</div><div class="ttdoc">Get all variables which have new pts info in loc&amp;#39;s OUT set. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00788">PersistentPointsToDS.h:788</a></div></div>
237
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_af8084d77fb666933fd0efe0df983074d"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#af8084d77fb666933fd0efe0df983074d">SVF::PersistentPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00115">PersistentPointsToDS.h:115</a></div></div>
238
+ <div class="ttc" id="classSVF_1_1PTData_html_adfcbaefe1c058d9ddf14aa3da07e1daf"><div class="ttname"><a href="classSVF_1_1PTData.html#adfcbaefe1c058d9ddf14aa3da07e1daf">SVF::PTData::getPTDTY</a></div><div class="ttdeci">PTDataTy getPTDTY() const</div><div class="ttdoc">Get the type of points-to data structure that this is. </div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00101">AbstractPointsToDS.h:101</a></div></div>
239
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_aadba2724dfe3cb745d9e9d73b8c3de67"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#aadba2724dfe3cb745d9e9d73b8c3de67">SVF::PersistentPTData::getAllPts</a></div><div class="ttdeci">virtual Map&lt; DataSet, unsigned &gt; getAllPts(bool liveOnly) const override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00120">PersistentPointsToDS.h:120</a></div></div>
240
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_adb2c450f2c93fbf630d91b8c2697fa06"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#adb2c450f2c93fbf630d91b8c2697fa06">SVF::PersistentDiffPTData::updatePropaPtsMap</a></div><div class="ttdeci">virtual void updatePropaPtsMap(Key &amp;src, Key &amp;dst) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00292">PersistentPointsToDS.h:292</a></div></div>
241
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a0b4feff5bc406088216d9e45941fe3ef"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a0b4feff5bc406088216d9e45941fe3ef">SVF::PersistentVersionedPTData::remapAllPts</a></div><div class="ttdeci">virtual void remapAllPts(void) override</div><div class="ttdoc">Remaps all points-to sets to use the current mapping. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00898">PersistentPointsToDS.h:898</a></div></div>
242
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a106391cd8eefab1740b54cd9bbacccad"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a106391cd8eefab1740b54cd9bbacccad">SVF::PersistentIncDFPTData::inUpdatedVarMap</a></div><div class="ttdeci">UpdatedVarMap inUpdatedVarMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00797">PersistentPointsToDS.h:797</a></div></div>
243
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a6051aa255081543388a8f9077012834c"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a6051aa255081543388a8f9077012834c">SVF::PersistentVersionedPTData::PTDataTy</a></div><div class="ttdeci">BasePTData::PTDataTy PTDataTy</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00810">PersistentPointsToDS.h:810</a></div></div>
244
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a2252fcbc06243787b6854d826373da1d"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a2252fcbc06243787b6854d826373da1d">SVF::PersistentVersionedPTData::~PersistentVersionedPTData</a></div><div class="ttdeci">virtual ~PersistentVersionedPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00818">PersistentPointsToDS.h:818</a></div></div>
245
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_ab13b3a484a5ac22c47391f1b2eaa58a1"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#ab13b3a484a5ac22c47391f1b2eaa58a1">SVF::PersistentDFPTData::getDFOutPtIdRef</a></div><div class="ttdeci">PointsToID &amp; getDFOutPtIdRef(LocID loc, const Key &amp;var)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00561">PersistentPointsToDS.h:561</a></div></div>
246
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a4e706309fe4bb40b4424251888363215"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a4e706309fe4bb40b4424251888363215">SVF::PersistentDiffPTData::KeyToIDMap</a></div><div class="ttdeci">BasePersPTData::KeyToIDMap KeyToIDMap</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00208">PersistentPointsToDS.h:208</a></div></div>
247
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_abfacbe37d9e0b5f05eabec66c60c2e2b"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#abfacbe37d9e0b5f05eabec66c60c2e2b">SVF::PersistentDFPTData::updateDFInFromOut</a></div><div class="ttdeci">virtual bool updateDFInFromOut(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc:dstVar], OUT[srcLoc:srcVar]). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00452">PersistentPointsToDS.h:452</a></div></div>
248
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a8d53322eadc657ed88a8b724647070b2"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a8d53322eadc657ed88a8b724647070b2">SVF::PersistentPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &amp;dstKey, const Data &amp;element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00071">PersistentPointsToDS.h:71</a></div></div>
249
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a7f3730473af9218bea520ec0498fb4ac"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a7f3730473af9218bea520ec0498fb4ac">SVF::PersistentVersionedPTData::addPts</a></div><div class="ttdeci">virtual bool addPts(const Key &amp;k, const Data &amp;element) override</div><div class="ttdoc">Adds element to the points-to set associated with var. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00846">PersistentPointsToDS.h:846</a></div></div>
250
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a6a59e2297b72cc30553db5e45da70f46"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a6a59e2297b72cc30553db5e45da70f46">SVF::PersistentIncDFPTData::updateAllDFOutFromIn</a></div><div class="ttdeci">virtual bool updateAllDFOutFromIn(LocID loc, const Key &amp;singleton, bool strongUpdates) override</div><div class="ttdoc">For each variable var in IN at loc, do updateDFOutFromIn(loc, var, loc, var). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00660">PersistentPointsToDS.h:660</a></div></div>
251
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a9cc43f58ea3be1b7fbc7df7cfe965c3c"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a9cc43f58ea3be1b7fbc7df7cfe965c3c">SVF::PersistentDiffPTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstKey, const Key &amp;srcKey) override</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00240">PersistentPointsToDS.h:240</a></div></div>
252
+ <div class="ttc" id="classSVF_1_1PersistentDiffPTData_html_a0d6620a7078bd60d16256ac48af58db9"><div class="ttname"><a href="classSVF_1_1PersistentDiffPTData.html#a0d6620a7078bd60d16256ac48af58db9">SVF::PersistentDiffPTData::persPTData</a></div><div class="ttdeci">PersistentPTData&lt; Key, KeySet, Data, DataSet &gt; persPTData</div><div class="ttdoc">Backing to implement basic PTData methods. Allows us to avoid multiple inheritance. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00325">PersistentPointsToDS.h:325</a></div></div>
253
+ <div class="ttc" id="classSVF_1_1PersistentVersionedPTData_html_a9b81d20e54d08e36edbff43549b1e820"><div class="ttname"><a href="classSVF_1_1PersistentVersionedPTData.html#a9b81d20e54d08e36edbff43549b1e820">SVF::PersistentVersionedPTData::getPts</a></div><div class="ttdeci">virtual const DataSet &amp; getPts(const VersionedKey &amp;vk) override</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00830">PersistentPointsToDS.h:830</a></div></div>
254
+ <div class="ttc" id="classSVF_1_1PTData_html_a46fa3ec6462f3dda19549340281bb219"><div class="ttname"><a href="classSVF_1_1PTData.html#a46fa3ec6462f3dda19549340281bb219">SVF::PTData::rev</a></div><div class="ttdeci">bool rev</div><div class="ttdoc">Whether we maintain reverse points-to sets or not. </div><div class="ttdef"><b>Definition:</b> <a href="AbstractPointsToDS_8h_source.html#l00141">AbstractPointsToDS.h:141</a></div></div>
255
+ <div class="ttc" id="classSVF_1_1PersistentDFPTData_html_a6761733754abf061e92125988a684fa3"><div class="ttname"><a href="classSVF_1_1PersistentDFPTData.html#a6761733754abf061e92125988a684fa3">SVF::PersistentDFPTData::updateATVPts</a></div><div class="ttdeci">virtual bool updateATVPts(const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Update address-taken variables OUT[dstLoc:dstVar] with points-to of top-level pointers. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00496">PersistentPointsToDS.h:496</a></div></div>
256
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a2259da9defa195350b3f70cd16c3f2ec"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a2259da9defa195350b3f70cd16c3f2ec">SVF::PersistentIncDFPTData::updateAllDFInFromIn</a></div><div class="ttdeci">virtual bool updateAllDFInFromIn(LocID srcLoc, const Key &amp;srcVar, LocID dstLoc, const Key &amp;dstVar) override</div><div class="ttdoc">Union (IN[dstLoc::dstVar], IN[srcLoc:srcVar]. There is no flag check, unlike the above. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00649">PersistentPointsToDS.h:649</a></div></div>
257
+ <div class="ttc" id="classSVF_1_1PersistentPTData_html_a66a9367f0b965d18be8bb1247e1c2548"><div class="ttname"><a href="classSVF_1_1PersistentPTData.html#a66a9367f0b965d18be8bb1247e1c2548">SVF::PersistentPTData::~PersistentPTData</a></div><div class="ttdeci">virtual ~PersistentPTData()</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00051">PersistentPointsToDS.h:51</a></div></div>
258
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_a47c2fbf8b959aae3166b9757b12880a7"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#a47c2fbf8b959aae3166b9757b12880a7">SVF::PersistentIncDFPTData::classof</a></div><div class="ttdeci">static bool classof(const PTData&lt; Key, KeySet, Data, DataSet &gt; *ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00726">PersistentPointsToDS.h:726</a></div></div>
259
+ <div class="ttc" id="classSVF_1_1PersistentIncDFPTData_html_abce6fa91fed789ef25146440ee10872b"><div class="ttname"><a href="classSVF_1_1PersistentIncDFPTData.html#abce6fa91fed789ef25146440ee10872b">SVF::PersistentIncDFPTData::BasePersDFPTData</a></div><div class="ttdeci">PersistentDFPTData&lt; Key, KeySet, Data, DataSet &gt; BasePersDFPTData</div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToDS_8h_source.html#l00586">PersistentPointsToDS.h:586</a></div></div>
260
+ <div class="ttc" id="classSVF_1_1PersistentPointsToCache_html_a17d33558208c19019e541ee167009494"><div class="ttname"><a href="classSVF_1_1PersistentPointsToCache.html#a17d33558208c19019e541ee167009494">SVF::PersistentPointsToCache::intersectPts</a></div><div class="ttdeci">PointsToID intersectPts(PointsToID lhs, PointsToID rhs)</div><div class="ttdoc">Intersects lhs and rhs (lhs AND rhs) and returns the intersection&amp;#39;s ID. </div><div class="ttdef"><b>Definition:</b> <a href="PersistentPointsToCache_8h_source.html#l00236">PersistentPointsToCache.h:236</a></div></div>
261
261
  </div><!-- fragment --></div><!-- contents -->
262
262
  <!-- start footer part -->
263
263
  <hr class="footer"/><address class="footer"><small>