svf-tools 1.0.348 → 1.0.352

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 (583) hide show
  1. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +6 -5
  2. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +16 -16
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +14 -14
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +13 -13
  6. package/SVF-doxygen/html/html/CHG_8h_source.html +7 -7
  7. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +3 -3
  8. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -3
  9. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  10. package/SVF-doxygen/html/html/CSC_8cpp_source.html +4 -4
  11. package/SVF-doxygen/html/html/CSC_8h_source.html +3 -3
  12. package/SVF-doxygen/html/html/Conditions_8cpp_source.html +2 -2
  13. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +4 -4
  14. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
  15. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +45 -46
  16. package/SVF-doxygen/html/html/ConsG_8h_source.html +22 -22
  17. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -8
  18. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +5 -5
  19. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  20. package/SVF-doxygen/html/html/DCHG_8h_source.html +4 -4
  21. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +4 -4
  22. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  24. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  25. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  26. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  28. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -2
  29. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  31. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  32. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +24 -22
  33. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +17 -17
  34. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +15 -14
  35. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +25 -25
  36. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +7 -8
  37. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -3
  38. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
  39. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +5 -5
  41. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/IRGraph_8h_source.html +7 -8
  43. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  44. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +13 -6
  45. package/SVF-doxygen/html/html/LocationSet_8h_source.html +12 -14
  46. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  47. package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +4 -5
  49. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +2 -2
  51. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +8 -8
  52. package/SVF-doxygen/html/html/MemRegion_8h_source.html +5 -6
  53. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
  54. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  55. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +4 -4
  57. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +3 -3
  58. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  59. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +4 -5
  60. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +9 -10
  61. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +1 -1
  63. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
  64. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -4
  66. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +4 -4
  67. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +5 -5
  68. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  69. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +2 -3
  70. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +8 -8
  71. package/SVF-doxygen/html/html/SVFG_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +12 -12
  73. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +53 -55
  74. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +39 -41
  75. package/SVF-doxygen/html/html/SVFIR_8h_source.html +38 -41
  76. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +22 -24
  77. package/SVF-doxygen/html/html/SVFStatements_8h.html +0 -4
  78. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +150 -160
  79. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  80. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +101 -100
  81. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  82. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
  84. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +3 -4
  85. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  87. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +14 -13
  88. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/VFGNode_8h_source.html +13 -13
  90. package/SVF-doxygen/html/html/VFG_8cpp_source.html +50 -51
  91. package/SVF-doxygen/html/html/VFG_8h_source.html +35 -35
  92. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  93. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +4 -4
  94. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  95. package/SVF-doxygen/html/html/annotated.html +100 -102
  96. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode-members.html +3 -3
  97. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +9 -9
  98. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode-members.html +3 -3
  99. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +9 -9
  100. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode-members.html +3 -3
  101. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +9 -9
  102. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode-members.html +3 -3
  103. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +9 -9
  104. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge-members.html +1 -1
  105. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +5 -5
  106. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt-members.html +26 -27
  107. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +26 -27
  108. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode-members.html +3 -3
  109. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +9 -9
  110. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  111. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +11 -11
  112. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +46 -46
  113. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +11 -11
  114. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +64 -64
  115. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +11 -11
  116. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +29 -29
  117. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +11 -11
  118. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +29 -29
  119. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +11 -11
  120. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +31 -31
  121. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +11 -11
  122. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +33 -33
  123. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +12 -12
  124. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +43 -42
  125. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +18 -18
  126. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +11 -11
  127. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +31 -31
  128. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode-members.html +3 -3
  129. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +11 -11
  130. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt-members.html +30 -31
  131. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +34 -39
  132. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.png +0 -0
  133. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
  135. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt-members.html +30 -31
  136. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +32 -33
  137. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode-members.html +3 -3
  138. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +11 -11
  139. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt-members.html +33 -34
  140. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +47 -48
  141. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode-members.html +3 -3
  142. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +12 -12
  143. package/SVF-doxygen/html/html/classSVF_1_1CHEdge-members.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1CHEdge.html +3 -3
  145. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +3 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1CHGraph-members.html +4 -4
  147. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +24 -24
  148. package/SVF-doxygen/html/html/classSVF_1_1CHNode-members.html +3 -3
  149. package/SVF-doxygen/html/html/classSVF_1_1CHNode.html +11 -11
  150. package/SVF-doxygen/html/html/classSVF_1_1CSC-members.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +11 -11
  152. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge-members.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +4 -4
  154. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge-members.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +4 -4
  156. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +3 -3
  157. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +9 -9
  158. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +4 -4
  160. package/SVF-doxygen/html/html/classSVF_1_1CallPE-members.html +29 -30
  161. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +35 -36
  162. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +3 -3
  163. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +20 -20
  164. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +3 -3
  165. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +21 -21
  166. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +4 -4
  167. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +24 -24
  168. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt-members.html +32 -33
  169. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +33 -34
  170. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode-members.html +3 -3
  171. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +11 -11
  172. package/SVF-doxygen/html/html/classSVF_1_1CondManager.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +3 -3
  175. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge-members.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1ConstraintEdge.html +3 -3
  177. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph-members.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +99 -100
  179. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  180. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +68 -68
  181. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +20 -19
  183. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge-members.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1CopyCGEdge.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt-members.html +26 -27
  186. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +26 -27
  187. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode-members.html +3 -3
  188. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +9 -9
  189. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge-members.html +5 -5
  190. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +8 -8
  191. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +7 -7
  192. package/SVF-doxygen/html/html/classSVF_1_1DCHNode-members.html +3 -3
  193. package/SVF-doxygen/html/html/classSVF_1_1DCHNode.html +11 -11
  194. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +2 -2
  195. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +2 -2
  196. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +5 -5
  197. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge-members.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +4 -4
  200. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG-members.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +3 -3
  203. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +22 -22
  204. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +3 -3
  205. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +22 -22
  206. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode-members.html +3 -3
  207. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +9 -9
  208. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +3 -3
  209. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +23 -23
  210. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +13 -13
  211. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +37 -37
  212. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +9 -8
  214. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +13 -13
  215. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +134 -134
  216. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +22 -22
  217. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +13 -13
  218. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +93 -92
  219. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode-members.html +3 -3
  220. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +9 -9
  221. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode-members.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +9 -9
  223. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode-members.html +3 -3
  224. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +9 -9
  225. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode-members.html +3 -3
  226. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +9 -9
  227. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode-members.html +3 -3
  228. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +9 -9
  229. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode-members.html +3 -3
  230. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +9 -9
  231. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge-members.html +1 -1
  232. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +7 -7
  233. package/SVF-doxygen/html/html/classSVF_1_1GenericNode-members.html +3 -3
  234. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +43 -42
  235. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  236. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge-members.html +1 -1
  237. package/SVF-doxygen/html/html/classSVF_1_1GepCGEdge.html +3 -3
  238. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +4 -4
  239. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +52 -52
  240. package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +18 -16
  241. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +148 -59
  242. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.png +0 -0
  243. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode-members.html +3 -3
  244. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +9 -9
  245. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +5 -5
  246. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +49 -49
  247. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode-members.html +3 -3
  248. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +9 -9
  249. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge-members.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1HareParForEdge.html +4 -4
  251. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
  252. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge-members.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +5 -5
  254. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode-members.html +3 -3
  255. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +9 -9
  256. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +7 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  259. package/SVF-doxygen/html/html/classSVF_1_1IRGraph-members.html +5 -5
  260. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +27 -27
  261. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG-members.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  265. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode-members.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1InterICFGNode.html +9 -9
  267. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode-members.html +3 -3
  268. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +9 -9
  269. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode-members.html +3 -3
  270. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +9 -9
  271. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge-members.html +1 -1
  272. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +4 -4
  273. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge-members.html +1 -1
  274. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +4 -4
  275. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG-members.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +2 -2
  277. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode-members.html +3 -3
  278. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +9 -9
  279. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +4 -4
  281. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode-members.html +3 -3
  282. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +9 -9
  283. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode-members.html +3 -3
  284. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +9 -9
  285. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge-members.html +1 -1
  286. package/SVF-doxygen/html/html/classSVF_1_1LoadCGEdge.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt-members.html +29 -30
  288. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +26 -27
  289. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode-members.html +3 -3
  290. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +9 -9
  291. package/SVF-doxygen/html/html/classSVF_1_1LocationSet-members.html +12 -12
  292. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +120 -150
  293. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator-members.html +1 -1
  294. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +11 -11
  295. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode-members.html +3 -3
  296. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +9 -9
  297. package/SVF-doxygen/html/html/classSVF_1_1MRVer-members.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1MRVer.html +8 -8
  299. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode-members.html +3 -3
  300. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +9 -9
  301. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  303. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  304. package/SVF-doxygen/html/html/classSVF_1_1MemObj-members.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +7 -7
  306. package/SVF-doxygen/html/html/classSVF_1_1MemRegion-members.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +8 -8
  308. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
  309. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +3 -3
  310. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt-members.html +35 -36
  311. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +41 -42
  312. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge-members.html +6 -6
  314. package/SVF-doxygen/html/html/classSVF_1_1NormalGepCGEdge.html +11 -11
  315. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt-members.html +3 -3
  316. package/SVF-doxygen/html/html/classSVF_1_1NormalGepStmt.html +17 -17
  317. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode-members.html +3 -3
  318. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +9 -9
  319. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo-members.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +13 -13
  321. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +3 -3
  322. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +27 -27
  323. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG-members.html +1 -1
  324. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +6 -6
  325. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile-members.html +1 -1
  326. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +12 -12
  327. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode-members.html +3 -3
  328. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +11 -11
  329. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph-members.html +2 -2
  330. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +15 -15
  331. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge-members.html +1 -1
  332. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +5 -5
  333. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode-members.html +3 -3
  334. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +9 -9
  335. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +11 -12
  336. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt-members.html +32 -33
  337. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +32 -33
  338. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +1 -1
  339. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +12 -12
  340. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge-members.html +1 -1
  341. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +4 -4
  342. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge-members.html +1 -1
  343. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +4 -4
  344. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +3 -3
  345. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +9 -9
  346. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +1 -1
  347. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +4 -4
  348. package/SVF-doxygen/html/html/classSVF_1_1RetPE-members.html +29 -30
  349. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +35 -36
  350. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +3 -3
  351. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +22 -22
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +1 -1
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +3 -3
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +3 -3
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +10 -10
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +3 -3
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal-members.html +1 -1
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +3 -3
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +10 -10
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +110 -111
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +4 -4
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +152 -151
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt-members.html +26 -27
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +67 -71
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.png +0 -0
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +9 -9
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +3 -3
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +15 -15
  375. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +3 -3
  376. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +11 -11
  377. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +31 -31
  378. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode-members.html +3 -3
  379. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +12 -12
  380. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge-members.html +1 -1
  381. package/SVF-doxygen/html/html/classSVF_1_1StoreCGEdge.html +3 -3
  382. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt-members.html +26 -27
  383. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +27 -28
  384. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode-members.html +3 -3
  385. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +9 -9
  386. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +2 -2
  387. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +1 -1
  388. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +12 -12
  389. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge-members.html +1 -1
  390. package/SVF-doxygen/html/html/classSVF_1_1TCTEdge.html +3 -3
  391. package/SVF-doxygen/html/html/classSVF_1_1TCTNode-members.html +3 -3
  392. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +9 -9
  393. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE-members.html +28 -29
  394. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +28 -29
  395. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE-members.html +28 -29
  396. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +28 -29
  397. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph-members.html +2 -2
  398. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  399. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge-members.html +1 -1
  400. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
  401. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge-members.html +1 -1
  402. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
  403. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +1 -1
  404. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +4 -4
  405. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +11 -11
  406. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +31 -31
  407. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +22 -21
  408. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt-members.html +31 -32
  409. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +39 -40
  410. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode-members.html +3 -3
  411. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +9 -9
  412. package/SVF-doxygen/html/html/classSVF_1_1VFG-members.html +2 -2
  413. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +79 -80
  414. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge-members.html +1 -1
  415. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +5 -5
  416. package/SVF-doxygen/html/html/classSVF_1_1VFGNode-members.html +3 -3
  417. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +9 -9
  418. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +3 -3
  419. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +20 -20
  420. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +3 -3
  421. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +22 -22
  422. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge-members.html +1 -1
  423. package/SVF-doxygen/html/html/classSVF_1_1VariantGepCGEdge.html +3 -3
  424. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt-members.html +2 -2
  425. package/SVF-doxygen/html/html/classSVF_1_1VariantGepStmt.html +9 -9
  426. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +15 -15
  427. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +55 -55
  428. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +20 -20
  429. package/SVF-doxygen/html/html/classes.html +95 -93
  430. package/SVF-doxygen/html/html/functions_a.html +19 -16
  431. package/SVF-doxygen/html/html/functions_c.html +22 -22
  432. package/SVF-doxygen/html/html/functions_eval_g.html +2 -1
  433. package/SVF-doxygen/html/html/functions_eval_n.html +0 -1
  434. package/SVF-doxygen/html/html/functions_eval_v.html +0 -1
  435. package/SVF-doxygen/html/html/functions_f.html +3 -3
  436. package/SVF-doxygen/html/html/functions_func.html +20 -17
  437. package/SVF-doxygen/html/html/functions_func_c.html +20 -22
  438. package/SVF-doxygen/html/html/functions_func_f.html +1 -1
  439. package/SVF-doxygen/html/html/functions_func_g.html +37 -40
  440. package/SVF-doxygen/html/html/functions_func_i.html +8 -5
  441. package/SVF-doxygen/html/html/functions_func_n.html +0 -3
  442. package/SVF-doxygen/html/html/functions_func_o.html +5 -7
  443. package/SVF-doxygen/html/html/functions_func_r.html +2 -2
  444. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  445. package/SVF-doxygen/html/html/functions_func_t.html +0 -2
  446. package/SVF-doxygen/html/html/functions_func_v.html +1 -4
  447. package/SVF-doxygen/html/html/functions_g.html +30 -32
  448. package/SVF-doxygen/html/html/functions_i.html +13 -10
  449. package/SVF-doxygen/html/html/functions_l.html +4 -4
  450. package/SVF-doxygen/html/html/functions_m.html +3 -3
  451. package/SVF-doxygen/html/html/functions_n.html +23 -27
  452. package/SVF-doxygen/html/html/functions_o.html +6 -8
  453. package/SVF-doxygen/html/html/functions_p.html +7 -7
  454. package/SVF-doxygen/html/html/functions_r.html +2 -2
  455. package/SVF-doxygen/html/html/functions_s.html +7 -5
  456. package/SVF-doxygen/html/html/functions_t.html +4 -8
  457. package/SVF-doxygen/html/html/functions_type_g.html +3 -3
  458. package/SVF-doxygen/html/html/functions_type_n.html +1 -1
  459. package/SVF-doxygen/html/html/functions_type_o.html +1 -1
  460. package/SVF-doxygen/html/html/functions_v.html +10 -11
  461. package/SVF-doxygen/html/html/functions_vars_a.html +1 -1
  462. package/SVF-doxygen/html/html/functions_vars_f.html +2 -2
  463. package/SVF-doxygen/html/html/functions_vars_m.html +2 -2
  464. package/SVF-doxygen/html/html/functions_vars_n.html +22 -22
  465. package/SVF-doxygen/html/html/functions_vars_t.html +3 -3
  466. package/SVF-doxygen/html/html/functions_vars_v.html +5 -2
  467. package/SVF-doxygen/html/html/functions_w.html +5 -9
  468. package/SVF-doxygen/html/html/hierarchy.html +55 -57
  469. package/SVF-doxygen/html/html/namespaceSVF.html +22 -26
  470. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  471. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +5 -5
  472. package/SVF-doxygen/html/html/namespacemembers_s.html +3 -3
  473. package/SVF-doxygen/html/html/namespacemembers_type_s.html +3 -3
  474. package/SVF-doxygen/html/html/search/all_1.js +9 -8
  475. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  476. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  477. package/SVF-doxygen/html/html/search/all_13.js +9 -9
  478. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  479. package/SVF-doxygen/html/html/search/all_16.js +7 -7
  480. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  481. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  482. package/SVF-doxygen/html/html/search/all_6.js +3 -3
  483. package/SVF-doxygen/html/html/search/all_7.js +19 -20
  484. package/SVF-doxygen/html/html/search/all_9.js +4 -3
  485. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  486. package/SVF-doxygen/html/html/search/all_d.js +5 -5
  487. package/SVF-doxygen/html/html/search/all_e.js +20 -21
  488. package/SVF-doxygen/html/html/search/all_f.js +4 -4
  489. package/SVF-doxygen/html/html/search/classes_12.js +0 -1
  490. package/SVF-doxygen/html/html/search/classes_b.js +0 -1
  491. package/SVF-doxygen/html/html/search/enumvalues_12.js +1 -1
  492. package/SVF-doxygen/html/html/search/enumvalues_6.js +1 -1
  493. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
  494. package/SVF-doxygen/html/html/search/functions_0.js +8 -7
  495. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  496. package/SVF-doxygen/html/html/search/functions_11.js +1 -1
  497. package/SVF-doxygen/html/html/search/functions_13.js +1 -2
  498. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  499. package/SVF-doxygen/html/html/search/functions_5.js +1 -1
  500. package/SVF-doxygen/html/html/search/functions_6.js +16 -17
  501. package/SVF-doxygen/html/html/search/functions_8.js +3 -2
  502. package/SVF-doxygen/html/html/search/functions_a.js +1 -1
  503. package/SVF-doxygen/html/html/search/functions_c.js +0 -1
  504. package/SVF-doxygen/html/html/search/functions_d.js +3 -3
  505. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  506. package/SVF-doxygen/html/html/search/functions_f.js +2 -2
  507. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  508. package/SVF-doxygen/html/html/search/typedefs_6.js +2 -2
  509. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  510. package/SVF-doxygen/html/html/search/typedefs_e.js +1 -1
  511. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  512. package/SVF-doxygen/html/html/search/variables_14.js +4 -4
  513. package/SVF-doxygen/html/html/search/variables_16.js +3 -2
  514. package/SVF-doxygen/html/html/search/variables_6.js +2 -2
  515. package/SVF-doxygen/html/html/search/variables_d.js +3 -3
  516. package/SVF-doxygen/html/html/search/variables_e.js +18 -18
  517. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +16 -16
  518. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  519. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +18 -18
  520. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +5 -5
  521. package/include/Graphs/CHG.h +6 -6
  522. package/include/Graphs/ConsG.h +2 -2
  523. package/include/Graphs/ConsGEdge.h +1 -1
  524. package/include/Graphs/ConsGNode.h +16 -16
  525. package/include/Graphs/GenericGraph.h +4 -4
  526. package/include/Graphs/IRGraph.h +5 -5
  527. package/include/Graphs/PTACallGraph.h +2 -2
  528. package/include/Graphs/VFG.h +2 -2
  529. package/include/MSSA/MSSAMuChi.h +1 -1
  530. package/include/MSSA/MemRegion.h +2 -2
  531. package/include/MemoryModel/LocationSet.h +10 -48
  532. package/include/MemoryModel/PAGBuilderFromFile.h +1 -1
  533. package/include/MemoryModel/PointerAnalysis.h +1 -1
  534. package/include/MemoryModel/SVFIR.h +5 -5
  535. package/include/MemoryModel/SVFStatements.h +18 -95
  536. package/include/MemoryModel/SVFVariables.h +9 -6
  537. package/include/MemoryModel/SymbolTableInfo.h +3 -3
  538. package/include/SVF-FE/DCHG.h +1 -1
  539. package/include/SVF-FE/SVFIRBuilder.h +7 -7
  540. package/include/Util/IRAnnotator.h +3 -3
  541. package/include/Util/SVFBasicTypes.h +3 -3
  542. package/include/WPA/Andersen.h +11 -11
  543. package/include/WPA/AndersenSFR.h +1 -1
  544. package/include/WPA/CSC.h +1 -1
  545. package/include/WPA/FlowSensitive.h +13 -13
  546. package/include/WPA/VersionedFlowSensitive.h +2 -2
  547. package/lib/DDA/ContextDDA.cpp +4 -5
  548. package/lib/DDA/DDAClient.cpp +6 -6
  549. package/lib/DDA/DDAStat.cpp +1 -1
  550. package/lib/DDA/FlowDDA.cpp +4 -5
  551. package/lib/Graphs/ConsG.cpp +30 -35
  552. package/lib/Graphs/ICFG.cpp +1 -1
  553. package/lib/Graphs/SVFG.cpp +2 -2
  554. package/lib/Graphs/SVFGStat.cpp +2 -2
  555. package/lib/Graphs/VFG.cpp +36 -43
  556. package/lib/MSSA/MemRegion.cpp +2 -2
  557. package/lib/MTA/MHP.cpp +2 -2
  558. package/lib/MTA/MTAAnnotator.cpp +3 -3
  559. package/lib/MemoryModel/LocationSet.cpp +49 -9
  560. package/lib/MemoryModel/PAGBuilderFromFile.cpp +3 -3
  561. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  562. package/lib/MemoryModel/SVFIR.cpp +27 -35
  563. package/lib/MemoryModel/SVFStatements.cpp +0 -22
  564. package/lib/MemoryModel/SVFVariables.cpp +1 -1
  565. package/lib/MemoryModel/SymbolTableInfo.cpp +4 -4
  566. package/lib/SVF-FE/CPPUtil.cpp +6 -6
  567. package/lib/SVF-FE/DCHG.cpp +1 -1
  568. package/lib/SVF-FE/Graph2Json.cpp +24 -27
  569. package/lib/SVF-FE/LLVMUtil.cpp +1 -1
  570. package/lib/SVF-FE/SVFIRBuilder.cpp +14 -13
  571. package/lib/SVF-FE/SymbolTableBuilder.cpp +1 -1
  572. package/lib/Util/Conditions.cpp +1 -1
  573. package/lib/Util/PTAStat.cpp +9 -9
  574. package/lib/Util/TypeBasedHeapCloning.cpp +6 -6
  575. package/lib/WPA/Andersen.cpp +13 -13
  576. package/lib/WPA/AndersenSFR.cpp +8 -8
  577. package/lib/WPA/AndersenStat.cpp +2 -2
  578. package/lib/WPA/CSC.cpp +6 -6
  579. package/lib/WPA/FlowSensitive.cpp +4 -7
  580. package/lib/WPA/FlowSensitiveStat.cpp +2 -2
  581. package/lib/WPA/FlowSensitiveTBHC.cpp +6 -9
  582. package/lib/WPA/TypeAnalysis.cpp +3 -3
  583. package/package.json +1 -1
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">Andersen.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="Andersen_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;<span class="comment">//===- Andersen.h -- Field-sensitive Andersen&#39;s pointer analysis-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></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">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</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;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * Andersen.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Nov 12, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef ANDERSENPASS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define ANDERSENPASS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPAStat_8h.html">WPA/WPAStat.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPASolver_8h.html">WPA/WPASolver.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ConsG_8h.html">Graphs/ConsG.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="OfflineConsG_8h.html">Graphs/OfflineConsG.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</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="namespaceSVF.html#ae9c142945ea31b6c70bceb93eb6f3ca4"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1WPASolver.html">WPASolver&lt;ConstraintGraph*&gt;</a> <a class="code" href="namespaceSVF.html#ae9c142945ea31b6c70bceb93eb6f3ca4">WPAConstraintSolver</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html"> 50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a>: <span class="keyword">public</span> WPAConstraintSolver, <span class="keyword">public</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#af89bc974fda6bed754bb07b3b6ee8ffe"> 55</a></span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#af89bc974fda6bed754bb07b3b6ee8ffe">AndersenBase</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; : <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>(_pag, type, alias_check), <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>(nullptr)</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; <a class="code" href="classSVF_1_1WPASolver.html#aa7c0636780a86f376e9222bce771e859">iterationForPrintStat</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">OnTheFlyIterBudgetForStat</a>;</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="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a8da8746b38c55561d3f6904e8fd0a9aa">~AndersenBase</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">finalize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065"> 74</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">updateCallGraph</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp;)<span class="keyword"> override</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="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_1AndersenBase.html#afa4d710b093a6c7a33cb1aef823781f0"> 81</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#afa4d710b093a6c7a33cb1aef823781f0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a> *)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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_1AndersenBase.html#a0167fa7b59571c07b2cbec08905f6629"> 85</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#a0167fa7b59571c07b2cbec08905f6629">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> ( pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">AndersenLCD_WPA</a></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">AndersenHCD_WPA</a></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">AndersenHLCD_WPA</a></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f">AndersenWaveDiffWithType_WPA</a></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aaec5125db063f8c1e7431ac7fe7a70f2"> 102</a></span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>* <a class="code" href="classSVF_1_1AndersenBase.html#aaec5125db063f8c1e7431ac7fe7a70f2">getConstraintGraph</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a566830d0c7a1f5cd967bb8f2ab168f8d"> 108</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a566830d0c7a1f5cd967bb8f2ab168f8d">printStat</a>()</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"> 110</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">PointerAnalysis::dumpStat</a>();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#af37392229dab0a1f2f807a12186c3b39">normalizePointsTo</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#aebfe0c7238eb24f74f105b950b86cb5e">cleanConsCG</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a6c3d6b4c004d9e43690c3807502eed74"> 118</a></span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1AndersenBase.html#a6c3d6b4c004d9e43690c3807502eed74">redundantGepNodes</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</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"><a class="line" href="classSVF_1_1AndersenBase.html#a70e60ce2e6f4cfd575c6f5c974ca1081"> 122</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a70e60ce2e6f4cfd575c6f5c974ca1081">numOfProcessedAddr</a>; </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a9d7b6e602e1764f76583824dddebf985"> 123</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a9d7b6e602e1764f76583824dddebf985">numOfProcessedCopy</a>; </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a25de7638a692832f0d4727815ff270f6"> 124</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a25de7638a692832f0d4727815ff270f6">numOfProcessedGep</a>; </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a5f1b0711583aa8947dfb4619658f1904"> 125</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a5f1b0711583aa8947dfb4619658f1904">numOfProcessedLoad</a>; </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ae18183a5d8ebd46fcdb9246bd643b150"> 126</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#ae18183a5d8ebd46fcdb9246bd643b150">numOfProcessedStore</a>; </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aa31bc83cdeaa30dd0975976e29a5be12"> 127</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#aa31bc83cdeaa30dd0975976e29a5be12">numOfSfrs</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ad21fc4e60abc4e6030880f8197e1c93f"> 128</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#ad21fc4e60abc4e6030880f8197e1c93f">numOfFieldExpand</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a6da6e1231a46fde6925493045b8b2490"> 130</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a6da6e1231a46fde6925493045b8b2490">numOfSCCDetection</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143"> 131</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">timeOfSCCDetection</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d"> 132</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">timeOfSCCMerges</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25"> 133</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25">timeOfCollapse</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#abdc249ea291d0247f6b91a8fcc7df341"> 134</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#abdc249ea291d0247f6b91a8fcc7df341">AveragePointsToSetSize</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a7cfafe54d564c9401f435362d44d3f9c"> 135</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">Size_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a7cfafe54d564c9401f435362d44d3f9c">MaxPointsToSetSize</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0"> 136</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">timeOfProcessCopyGep</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf"> 137</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf">timeOfProcessLoadStore</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a2afb49f513c9534fd051117b59dc056b"> 138</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a2afb49f513c9534fd051117b59dc056b">timeOfUpdateCallGraph</a>;</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">protected</span>:</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd"> 143</a></span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>* <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;};</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html"> 149</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1Andersen.html">Andersen</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a></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;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a77e7378a3a35622bde2371d7d3ed7013"> 154</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;ConstraintGraph*&gt;</a> <a class="code" href="classSVF_1_1Andersen.html#a77e7378a3a35622bde2371d7d3ed7013">CGSCC</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a0f65f1881111167bffe1cb2ad05c0a51"> 155</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;CallSite, NodeID&gt;</a> <a class="code" href="classSVF_1_1Andersen.html#a0f65f1881111167bffe1cb2ad05c0a51">CallSite2DummyValPN</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a680dc709c0263fc1a13aa5c81d95fc72"> 158</a></span>&#160; <a class="code" href="classSVF_1_1Andersen.html#a680dc709c0263fc1a13aa5c81d95fc72">Andersen</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; : <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a>(_pag, type, alias_check), pwcOpt(false), diffOpt(true)</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="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a15218a84e653baf2cd7f1dc95ccfb77d"> 164</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1Andersen.html#a15218a84e653baf2cd7f1dc95ccfb77d">~Andersen</a>()</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">finalize</a>();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17"> 176</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17">resetData</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; <a class="code" href="classSVF_1_1AndersenBase.html#abdc249ea291d0247f6b91a8fcc7df341">AveragePointsToSetSize</a> = 0;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a7cfafe54d564c9401f435362d44d3f9c">MaxPointsToSetSize</a> = 0;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">timeOfProcessCopyGep</a> = 0;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf">timeOfProcessLoadStore</a> = 0;</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="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#aaec53980b25ed769fa9a985860f810b5"> 186</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#aaec53980b25ed769fa9a985860f810b5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</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">return</span> <span class="keyword">true</span>;</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"><a class="line" href="classSVF_1_1Andersen.html#a60214d7c6c9aac8e498644b048660ab9"> 190</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a60214d7c6c9aac8e498644b048660ab9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</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="keywordflow">return</span> (pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">AndersenLCD_WPA</a></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">AndersenHCD_WPA</a></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">AndersenHLCD_WPA</a></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f">AndersenWaveDiffWithType_WPA</a></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</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"> 202</span>&#160;</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_1Andersen.html#aad706e332847e6b0892350a05028ba30"> 205</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">sccRepNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f"> 209</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f">sccSubNodes</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> repId)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3">sccSubNodes</a>(repId);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639"> 216</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">getPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(<a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4"> 220</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4">unionPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; target)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keywordtype">id</span>, target);</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_1Andersen.html#a8da98a9d33a6e9be329309f4af65e969"> 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_1Andersen.html#a8da98a9d33a6e9be329309f4af65e969">unionPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; ptd = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(ptd);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keywordtype">id</span>,ptd);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a8d6cea841b6ded0f80ef2b5784e9b752">dumpTopLevelPtsTo</a>();</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_1Andersen.html#a2b13f14db90ad59a61dff097bcdf8fb7"> 235</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a2b13f14db90ad59a61dff097bcdf8fb7">setPWCOpt</a>(<span class="keywordtype">bool</span> flag)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; pwcOpt = flag;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (pwcOpt)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; setSCCEdgeFlag(<a class="code" href="classSVF_1_1ConstraintNode.html#a6e59b815d784bc1a9437290ff0e1e28ca7f8c92a2f50277fee80899235ae477f9">ConstraintNode::Direct</a>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; setSCCEdgeFlag(<a class="code" href="classSVF_1_1ConstraintNode.html#a6e59b815d784bc1a9437290ff0e1e28ca4b202c80793ae965686b9d275a5c586a">ConstraintNode::Copy</a>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a44d62658bbd2efcef5ff479930b5dce9"> 244</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a44d62658bbd2efcef5ff479930b5dce9">mergePWC</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> pwcOpt;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a69161671030b51c5a6cf139325aa098f"> 249</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a69161671030b51c5a6cf139325aa098f">setDiffOpt</a>(<span class="keywordtype">bool</span> flag)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; diffOpt = flag;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</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"><a class="line" href="classSVF_1_1Andersen.html#a6804284abb4b63f44eefdaf044a301f7"> 254</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a6804284abb4b63f44eefdaf044a301f7">enableDiff</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> diffOpt;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a2f88b6035ecb480f7d11afe6bc666541"> 261</a></span>&#160; CallSite2DummyValPN <a class="code" href="classSVF_1_1Andersen.html#a2f88b6035ecb480f7d11afe6bc666541">callsite2DummyValPN</a>; </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">void</span> heapAllocatorViaIndCall(<a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs,<a class="code" href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">NodePairSet</a> &amp;cpySrcNodes);</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"><a class="line" href="classSVF_1_1Andersen.html#ab90350dc4788d8e282404bd7944dd263"> 264</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#ab90350dc4788d8e282404bd7944dd263">pwcOpt</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a187a23c3b522f2aca49d3c5408ab4469"> 265</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a187a23c3b522f2aca49d3c5408ab4469">diffOpt</a>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a7e26ac6fb40684694f7ff2aadfde8bc7"> 268</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a7e26ac6fb40684694f7ff2aadfde8bc7">computeDiffPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</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"> 270</span>&#160; <span class="keywordflow">if</span> (enableDiff())</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a6eab8e1201083ed8705379e100cfb3b7">computeDiffPts</a>(rep, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(rep));</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_1Andersen.html#a106691684d8e7a69157d423393d83d66"> 276</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#a106691684d8e7a69157d423393d83d66">getDiffPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (enableDiff())</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a7c4159d873a836b6f6d9b2d2c044921d">getDiffPts</a>(rep);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(rep);</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;</div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018"> 286</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">updatePropaPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> 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; <span class="keywordflow">if</span> (!enableDiff())</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcRep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(srcId);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstRep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(dstId);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a0f422f826bb378ebb34199f0378e351d">updatePropaPtsMap</a>(srcRep, dstRep);</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_1Andersen.html#a839ed248cf5ff8359217e2029f389d8a"> 294</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a839ed248cf5ff8359217e2029f389d8a">clearPropaPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (enableDiff())</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(src);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a7784c4a76aa41149975840af8b32c2a9">clearPropaPts</a>(rep);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</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"><a class="line" href="classSVF_1_1Andersen.html#a9075cd05cb21e0f08a1109b7af6c7480"> 303</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a9075cd05cb21e0f08a1109b7af6c7480">initWorklist</a>() {}</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#ab81b08574f80287803dd43b5ebe2adfa"> 305</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#ab81b08574f80287803dd43b5ebe2adfa">setSCCEdgeFlag</a>(<a class="code" href="classSVF_1_1ConstraintNode.html#a6e59b815d784bc1a9437290ff0e1e28c">ConstraintNode::SCCEdgeFlag</a> f)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html#a0fd9fca5ed82cf83dbd825d23c63783a">ConstraintNode::sccEdgeFlag</a> = f;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#abd7fd785e70f66d394088101d78598ca">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</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; <span class="keywordtype">void</span> processAllAddr();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processLoad(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processStore(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processCopy(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processGep(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepCGEdge.html">GepCGEdge</a>* edge);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleCopyGep(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleLoadStore(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> processAddr(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processGepPts(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepCGEdge.html">GepCGEdge</a>* edge);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57"> 328</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57">addCopyEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(src, dst))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; updatePropaPts(src, dst);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">updateCallGraph</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp; callsites);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordtype">void</span> connectCaller2CalleeParams(<a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* F, <a class="code" href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">NodePairSet</a>&amp; cpySrcNodes);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeNodeToRep(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</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; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> mergeSrcToTgt(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tgtId);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</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"> 351</span>&#160; <span class="keywordtype">void</span> mergeSccNodes(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> repNodeId, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; subNodes);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordtype">void</span> mergeSccCycle();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#a138b403af0370ad6fdf8cc6af0530392">collapsePWCNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#a79c2b3f10f3f813396d8caaa1f7bc62a">collapseFields</a>();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordtype">bool</span> collapseNodePts(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordtype">bool</span> collapseField(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordtype">void</span> updateNodeRepAndSubs(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>&amp; <a class="code" href="classSVF_1_1WPASolver.html#aaa932894d00b69cfa741f9987a9cc6b8">SCCDetect</a>();</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"> 369</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a308ef1f3a1c9fd7ac1858d0c690aa37a"> 371</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a308ef1f3a1c9fd7ac1858d0c690aa37a">sanitizePts</a>()</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">ConstraintGraph::iterator</a> it = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(it-&gt;first);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> fldInsenObjs;</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; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(o))</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; fldInsenObjs.set(o);</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"> 384</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : fldInsenObjs)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;allFields = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#afd200919cf8742bb62bb0bde279a558a">getAllFieldsObjVars</a>(o);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> f : allFields) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(it-&gt;first, f);</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"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#ad92dbecc91170b235180e59ba307acda"> 393</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1Andersen.html#ad92dbecc91170b235180e59ba307acda">PTAName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;AndersenWPA&quot;</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#af42fe6aeacfd31bbef7f5c80c8cf6173"> 399</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#af42fe6aeacfd31bbef7f5c80c8cf6173">matchType</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>*)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a85cc81a4f9399e9a23372fa2658325a6"> 404</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a85cc81a4f9399e9a23372fa2658325a6">addTypeForGepObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>*)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span>;</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="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> cluster(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</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"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html"> 419</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a></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"> 422</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#add4dcb6d74a8ce8747bcac5f740cd672"> 424</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1AndersenWaveDiff.html#add4dcb6d74a8ce8747bcac5f740cd672">diffWave</a>; <span class="comment">// static instance</span></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"> 426</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da"> 427</a></span>&#160; <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da">AndersenWaveDiff</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>): <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, type, alias_check) {}</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540"> 430</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</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"> 432</span>&#160; <span class="keywordflow">if</span>(diffWave==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; diffWave = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>(_pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; diffWave-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> diffWave;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">return</span> diffWave;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a5da6abb1a7f0ef3e3871ea6e5a623625"> 440</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a5da6abb1a7f0ef3e3871ea6e5a623625">releaseAndersenWaveDiff</a>()</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"> 442</span>&#160; <span class="keywordflow">if</span> (diffWave)</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">delete</span> diffWave;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; diffWave = <span class="keyword">nullptr</span>;</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"> 447</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">solveWorklist</a>();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#abd7fd785e70f66d394088101d78598ca">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> postProcessNode(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleCopyGep(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> handleLoad(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> handleStore(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* store);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processCopy(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeNodeToRep(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a57c7c12ebcf06f2912e93c802c6cdd02"> 459</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a57c7c12ebcf06f2912e93c802c6cdd02">processCast</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>*)</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; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;};</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;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="comment"> * Lazy Cycle Detection Based Andersen Analysis</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html"> 469</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a></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;<span class="keyword">private</span>:</div><div class="line"><a name="l00473"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#ae4e979d6e7fa83c8961d0caf0ca0f54e"> 473</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>* <a class="code" href="classSVF_1_1AndersenLCD.html#ae4e979d6e7fa83c8961d0caf0ca0f54e">lcdAndersen</a>;</div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#a501ff7f8648c735c4a896063128d9ccc"> 474</a></span>&#160; <a class="code" href="namespaceSVF.html#a0d2e17d5b07a50ed95e8f407cd6dd0be">EdgeSet</a> <a class="code" href="classSVF_1_1AndersenLCD.html#a501ff7f8648c735c4a896063128d9ccc">metEdges</a>;</div><div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#a63823aa384f1438917c3625befa30bad"> 475</a></span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> <a class="code" href="classSVF_1_1AndersenLCD.html#a63823aa384f1438917c3625befa30bad">lcdCandidates</a>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#aab4737557838799f52b64ceb2ec543a3"> 478</a></span>&#160; <a class="code" href="classSVF_1_1AndersenLCD.html#aab4737557838799f52b64ceb2ec543a3">AndersenLCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">AndersenLCD_WPA</a>) :</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, type), metEdges({}), lcdCandidates( {})</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="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#aa59a98c152562ff4038bb4ac3b7a72d1"> 484</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>* <a class="code" href="classSVF_1_1AndersenLCD.html#aa59a98c152562ff4038bb4ac3b7a72d1">createAndersenLCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</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"> 486</span>&#160; <span class="keywordflow">if</span> (lcdAndersen == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; lcdAndersen = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>(_pag);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; lcdAndersen-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> lcdAndersen;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">return</span> lcdAndersen;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</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"><a class="line" href="classSVF_1_1AndersenLCD.html#a583b062b7c221bd50e5f37b7cb9b7a62"> 495</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenLCD.html#a583b062b7c221bd50e5f37b7cb9b7a62">releaseAndersenLCD</a>()</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span> (lcdAndersen)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">delete</span> lcdAndersen;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; lcdAndersen = <span class="keyword">nullptr</span>;</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="keyword">protected</span>:</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">// &#39;lcdCandidates&#39; is used to collect nodes need to be visited by SCC detector</span></div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#ad3f4bd35f98c43a0642b91c6b0e7acb3"> 505</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenLCD.html#ad3f4bd35f98c43a0642b91c6b0e7acb3">hasLCDCandidate</a> ()<span class="keyword"> const</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">return</span> !lcdCandidates.empty();</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"><a class="line" href="classSVF_1_1AndersenLCD.html#ab58bd928fbfcc56344dcaf82a9c360a2"> 509</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenLCD.html#ab58bd928fbfcc56344dcaf82a9c360a2">cleanLCDCandidate</a>()</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; lcdCandidates.clear();</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; };</div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#aa830cfc0e46114751337e8ea3586d0bb"> 513</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenLCD.html#aa830cfc0e46114751337e8ea3586d0bb">addLCDCandidate</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; lcdCandidates.insert(nodeId);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</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; <span class="comment">// &#39;metEdges&#39; is used to collect edges met by AndersenLCD, to avoid redundant visit</span></div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#a4f374bbd066f9e8b1480184a1416b68b"> 521</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenLCD.html#a4f374bbd066f9e8b1480184a1416b68b">isMetEdge</a> (<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge)<span class="keyword"> const</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; EdgeSet::const_iterator it = metEdges.find(edge-&gt;<a class="code" href="classSVF_1_1ConstraintEdge.html#ab201b7df925c12e6944516f4b87d7823">getEdgeID</a>());</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> it != metEdges.end();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; };</div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#a0c5adfc0876e9bea02fe8ded41baeb91"> 526</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenLCD.html#a0c5adfc0876e9bea02fe8ded41baeb91">addMetEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge)</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; metEdges.insert(edge-&gt;<a class="code" href="classSVF_1_1ConstraintEdge.html#ab201b7df925c12e6944516f4b87d7823">getEdgeID</a>());</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; };</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">//AndersenLCD worklist processer</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">solveWorklist</a>();</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// Solve constraints of each nodes</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleCopyGep(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// Collapse nodes and fields based on &#39;lcdCandidates&#39;</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeSCC();</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// AndersenLCD specified SCC detector, need to input a nodeStack &#39;lcdCandidate&#39;</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>&amp; <a class="code" href="classSVF_1_1WPASolver.html#aaa932894d00b69cfa741f9987a9cc6b8">SCCDetect</a>();</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordtype">bool</span> mergeSrcToTgt(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;};</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;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html"> 548</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a></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"> 551</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#a33cb18543abbcd434861c5da7e588356"> 552</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;OfflineConsG*&gt;</a> <a class="code" href="classSVF_1_1AndersenHCD.html#a33cb18543abbcd434861c5da7e588356">OSCC</a>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#a2356a7f8215725d2ee035630b1487b05"> 555</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>* <a class="code" href="classSVF_1_1AndersenHCD.html#a2356a7f8215725d2ee035630b1487b05">hcdAndersen</a>;</div><div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#ac1de536453e92d7628b12e54cc7b2df7"> 556</a></span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> <a class="code" href="classSVF_1_1AndersenHCD.html#ac1de536453e92d7628b12e54cc7b2df7">mergedNodes</a>;</div><div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#af5fe01816e65ece685a3c3537ebd0137"> 557</a></span>&#160; <a class="code" href="classSVF_1_1OfflineConsG.html">OfflineConsG</a>* <a class="code" href="classSVF_1_1AndersenHCD.html#af5fe01816e65ece685a3c3537ebd0137">oCG</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#ac7629cede14407d42ed5b5ec7e607b0e"> 560</a></span>&#160; <a class="code" href="classSVF_1_1AndersenHCD.html#ac7629cede14407d42ed5b5ec7e607b0e">AndersenHCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">AndersenHCD_WPA</a>) :</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, type), oCG(nullptr)</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; }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#aa3553e6d7c7245d3d2cdc9d083889c28"> 566</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a> *<a class="code" href="classSVF_1_1AndersenHCD.html#aa3553e6d7c7245d3d2cdc9d083889c28">createAndersenHCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span> (hcdAndersen == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; hcdAndersen = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>(_pag);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; hcdAndersen-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> hcdAndersen;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span> hcdAndersen;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</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"><a class="line" href="classSVF_1_1AndersenHCD.html#ad2cb6f353fef40a99ae9fba112663b84"> 577</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHCD.html#ad2cb6f353fef40a99ae9fba112663b84">releaseAndersenHCD</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"> 579</span>&#160; <span class="keywordflow">if</span> (hcdAndersen)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">delete</span> hcdAndersen;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; hcdAndersen = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>();</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"> 587</span>&#160; <span class="comment">// Get offline rep node from offline constraint graph</span></div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#abeafc9d45d529577b99fe821e59fd9cb"> 589</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenHCD.html#abeafc9d45d529577b99fe821e59fd9cb">hasOfflineRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)<span class="keyword"> const</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">return</span> oCG-&gt;<a class="code" href="classSVF_1_1OfflineConsG.html#a0a03ef009894059fa2591ea5f9ef87d9">hasOCGRep</a>(nodeId);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#ac2e6a5acffff567e729b6aa9e9beeb55"> 593</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AndersenHCD.html#ac2e6a5acffff567e729b6aa9e9beeb55">getOfflineRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> oCG-&gt;<a class="code" href="classSVF_1_1OfflineConsG.html#a3f390900ee8761055c6d59107bc0ad27">getOCGRep</a>(nodeId);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</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"> 599</span>&#160; <span class="comment">// The set &#39;mergedNodes&#39; is used to record the merged node, therefore avoiding re-merge nodes</span></div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#ab0414e29a745ed14e790c296042d1fe9"> 601</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenHCD.html#ab0414e29a745ed14e790c296042d1fe9">isaMergedNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)<span class="keyword"> const</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; NodeSet::const_iterator it = mergedNodes.find(node);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">return</span> it != mergedNodes.end();</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"><a class="line" href="classSVF_1_1AndersenHCD.html#a6d6d770848a42c6291db663ab138461d"> 606</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHCD.html#a6d6d770848a42c6291db663ab138461d">setMergedNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)</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">if</span> (!isaMergedNode(node))</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; mergedNodes.insert(node);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</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"> 613</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">solveWorklist</a>();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeSCC(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordtype">void</span> mergeNodeAndPts(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tgt);</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;};</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;</div><div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html"> 624</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>, <span class="keyword">public</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;{</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;<span class="keyword">private</span>:</div><div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#ad22c1990d8faad9c7cae6d779c7de94a"> 628</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a>* <a class="code" href="classSVF_1_1AndersenHLCD.html#ad22c1990d8faad9c7cae6d779c7de94a">hlcdAndersen</a>;</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00631"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#aa4c37c2d4119b473b29ef21d630d7f26"> 631</a></span>&#160; <a class="code" href="classSVF_1_1AndersenHLCD.html#aa4c37c2d4119b473b29ef21d630d7f26">AndersenHLCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">AndersenHLCD_WPA</a>) :</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, type), <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>(_pag, type), <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>(_pag, type)</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;</div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#a835f347f1f947ac3bbf5e4c958e59f05"> 637</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a> *<a class="code" href="classSVF_1_1AndersenHLCD.html#a835f347f1f947ac3bbf5e4c958e59f05">createAndersenHLCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</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"> 639</span>&#160; <span class="keywordflow">if</span> (hlcdAndersen == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; hlcdAndersen = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a>(_pag);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; hlcdAndersen-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> hlcdAndersen;</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; <span class="keywordflow">return</span> hlcdAndersen;</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;</div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#a23f7e4f0b51bd6474644f566998d367f"> 648</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a23f7e4f0b51bd6474644f566998d367f">releaseAndersenHLCD</a>()</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"> 650</span>&#160; <span class="keywordflow">if</span> (hlcdAndersen)</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">delete</span> hlcdAndersen;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; hlcdAndersen = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#a5926080868429040f5142843f01a2a5c"> 656</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a5926080868429040f5142843f01a2a5c">initialize</a>()</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1AndersenHCD.html#aaac9cac7fc5696adb585abd9d67f8c14">AndersenHCD::initialize</a>();</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_1AndersenHLCD.html#a0ead595bb9e36c89419adb22ef11a283"> 660</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a0ead595bb9e36c89419adb22ef11a283">solveWorklist</a>()</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1AndersenHCD.html#ae3ac936d1ae3e46a9110b8c8ed9f279c">AndersenHCD::solveWorklist</a>();</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"><a class="line" href="classSVF_1_1AndersenHLCD.html#a9582cde6cbb510f3fb624109f8ea8f63"> 664</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a9582cde6cbb510f3fb624109f8ea8f63">handleCopyGep</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node)</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="classSVF_1_1AndersenLCD.html#a139d80e25fe713194f719581915d36d5">AndersenLCD::handleCopyGep</a>(node);</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"> 668</span>&#160; <span class="keywordtype">void</span> mergeSCC(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00669"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#a59da289c87f9ab815a15e0a745bdc31f"> 669</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a59da289c87f9ab815a15e0a745bdc31f">mergeSrcToTgt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId)</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenLCD.html#ac78efb1e4246c06c64dad1d368ed032d">AndersenLCD::mergeSrcToTgt</a>(nodeId, newRepId);</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;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;} <span class="comment">// End namespace SVF</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;<span class="preprocessor">#endif </span><span class="comment">/* ANDERSENPASS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
69
+ <a href="Andersen_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;<span class="comment">//===- Andersen.h -- Field-sensitive Andersen&#39;s pointer analysis-------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></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">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</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;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * Andersen.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Nov 12, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef ANDERSENPASS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define ANDERSENPASS_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPAStat_8h.html">WPA/WPAStat.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPASolver_8h.html">WPA/WPASolver.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ConsG_8h.html">Graphs/ConsG.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="OfflineConsG_8h.html">Graphs/OfflineConsG.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</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="namespaceSVF.html#ae9c142945ea31b6c70bceb93eb6f3ca4"> 43</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1WPASolver.html">WPASolver&lt;ConstraintGraph*&gt;</a> <a class="code" href="namespaceSVF.html#ae9c142945ea31b6c70bceb93eb6f3ca4">WPAConstraintSolver</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html"> 50</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a>: <span class="keyword">public</span> WPAConstraintSolver, <span class="keyword">public</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;{</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#af89bc974fda6bed754bb07b3b6ee8ffe"> 55</a></span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#af89bc974fda6bed754bb07b3b6ee8ffe">AndersenBase</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; : <a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>(_pag, type, alias_check), <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>(nullptr)</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; <a class="code" href="classSVF_1_1WPASolver.html#aa7c0636780a86f376e9222bce771e859">iterationForPrintStat</a> = <a class="code" href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">OnTheFlyIterBudgetForStat</a>;</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="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a8da8746b38c55561d3f6904e8fd0a9aa">~AndersenBase</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">finalize</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065"> 74</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">updateCallGraph</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp;)<span class="keyword"> override</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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="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_1AndersenBase.html#afa4d710b093a6c7a33cb1aef823781f0"> 81</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#afa4d710b093a6c7a33cb1aef823781f0">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a> *)</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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_1AndersenBase.html#a0167fa7b59571c07b2cbec08905f6629"> 85</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#a0167fa7b59571c07b2cbec08905f6629">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> ( pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">Andersen_BASE</a></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a></div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">AndersenLCD_WPA</a></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">AndersenHCD_WPA</a></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">AndersenHLCD_WPA</a></div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f">AndersenWaveDiffWithType_WPA</a></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</a></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">TypeCPP_WPA</a></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">Steensgaard_WPA</a>);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aaec5125db063f8c1e7431ac7fe7a70f2"> 102</a></span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>* <a class="code" href="classSVF_1_1AndersenBase.html#aaec5125db063f8c1e7431ac7fe7a70f2">getConstraintGraph</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a566830d0c7a1f5cd967bb8f2ab168f8d"> 108</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a566830d0c7a1f5cd967bb8f2ab168f8d">printStat</a>()</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"> 110</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html#ab83b827ea42d3a61aad20b1a1485d866">PointerAnalysis::dumpStat</a>();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#af37392229dab0a1f2f807a12186c3b39">normalizePointsTo</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#aebfe0c7238eb24f74f105b950b86cb5e">cleanConsCG</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a6c3d6b4c004d9e43690c3807502eed74"> 118</a></span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1AndersenBase.html#a6c3d6b4c004d9e43690c3807502eed74">redundantGepNodes</a>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</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"><a class="line" href="classSVF_1_1AndersenBase.html#a4acad18a6eb585ba9e3d2276dd591067"> 122</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a4acad18a6eb585ba9e3d2276dd591067">numOfProcessedAddr</a>; </div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130"> 123</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130">numOfProcessedCopy</a>; </div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aa1246b392aeae1fd10c8a9ebedcc2dd9"> 124</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#aa1246b392aeae1fd10c8a9ebedcc2dd9">numOfProcessedGep</a>; </div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e"> 125</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e">numOfProcessedLoad</a>; </div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a2b763519509ce21cf40893c01f8357b6"> 126</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a2b763519509ce21cf40893c01f8357b6">numOfProcessedStore</a>; </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5"> 127</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5">numOfSfrs</a>;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259"> 128</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259">numOfFieldExpand</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968"> 130</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968">numOfSCCDetection</a>;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143"> 131</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">timeOfSCCDetection</a>;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d"> 132</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">timeOfSCCMerges</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25"> 133</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#ad40b196c2c699bd115529b806d20de25">timeOfCollapse</a>;</div><div class="line"><a name="l00134"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49"> 134</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49">AveragePointsToSetSize</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#abd73e930450b7c605f478672bdf9bdae"> 135</a></span>&#160; <span class="keyword">static</span> <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1AndersenBase.html#abd73e930450b7c605f478672bdf9bdae">MaxPointsToSetSize</a>;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0"> 136</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">timeOfProcessCopyGep</a>;</div><div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf"> 137</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf">timeOfProcessLoadStore</a>;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#a2afb49f513c9534fd051117b59dc056b"> 138</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">double</span> <a class="code" href="classSVF_1_1AndersenBase.html#a2afb49f513c9534fd051117b59dc056b">timeOfUpdateCallGraph</a>;</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">protected</span>:</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd"> 143</a></span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>* <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;};</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html"> 149</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1Andersen.html">Andersen</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a></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;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a77e7378a3a35622bde2371d7d3ed7013"> 154</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;ConstraintGraph*&gt;</a> <a class="code" href="classSVF_1_1Andersen.html#a77e7378a3a35622bde2371d7d3ed7013">CGSCC</a>;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a0f65f1881111167bffe1cb2ad05c0a51"> 155</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">OrderedMap&lt;CallSite, NodeID&gt;</a> <a class="code" href="classSVF_1_1Andersen.html#a0f65f1881111167bffe1cb2ad05c0a51">CallSite2DummyValPN</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a680dc709c0263fc1a13aa5c81d95fc72"> 158</a></span>&#160; <a class="code" href="classSVF_1_1Andersen.html#a680dc709c0263fc1a13aa5c81d95fc72">Andersen</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; : <a class="code" href="classSVF_1_1AndersenBase.html">AndersenBase</a>(_pag, type, alias_check), pwcOpt(false), diffOpt(true)</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="l00164"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a15218a84e653baf2cd7f1dc95ccfb77d"> 164</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1Andersen.html#a15218a84e653baf2cd7f1dc95ccfb77d">~Andersen</a>()</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a28a1c3571cdee5e05004b29ace364e67">finalize</a>();</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17"> 176</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17">resetData</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; <a class="code" href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49">AveragePointsToSetSize</a> = 0;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#abd73e930450b7c605f478672bdf9bdae">MaxPointsToSetSize</a> = 0;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">timeOfProcessCopyGep</a> = 0;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="classSVF_1_1AndersenBase.html#a9fe738f1e11c80006d540f246a80bfdf">timeOfProcessLoadStore</a> = 0;</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="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#aaec53980b25ed769fa9a985860f810b5"> 186</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#aaec53980b25ed769fa9a985860f810b5">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</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">return</span> <span class="keyword">true</span>;</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"><a class="line" href="classSVF_1_1Andersen.html#a60214d7c6c9aac8e498644b048660ab9"> 190</a></span>&#160; <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a60214d7c6c9aac8e498644b048660ab9">classof</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a> *pta)</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="keywordflow">return</span> (pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">Andersen_WPA</a></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">AndersenLCD_WPA</a></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">AndersenHCD_WPA</a></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">AndersenHLCD_WPA</a></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f">AndersenWaveDiffWithType_WPA</a></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">AndersenSCD_WPA</a></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; || pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">getAnalysisTy</a>() == <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">AndersenSFR_WPA</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"> 202</span>&#160;</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_1Andersen.html#aad706e332847e6b0892350a05028ba30"> 205</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">sccRepNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a39b973543acdcdc5493832cc9d0f586f">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f"> 209</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f">sccSubNodes</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> repId)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; {</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#aed605b010e313f4b11e95b83fe50e3b3">sccSubNodes</a>(repId);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639"> 216</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#a187285a5bdf9422d9188b2b11b667639">getPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(<a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>));</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4"> 220</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#ab7dadfd4d810be4863f03ed996b3b3c4">unionPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; target)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keywordtype">id</span>, target);</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_1Andersen.html#a8da98a9d33a6e9be329309f4af65e969"> 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_1Andersen.html#a8da98a9d33a6e9be329309f4af65e969">unionPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> ptd)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordtype">id</span> = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; ptd = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(ptd);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">unionPts</a>(<span class="keywordtype">id</span>,ptd);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#a8d6cea841b6ded0f80ef2b5784e9b752">dumpTopLevelPtsTo</a>();</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_1Andersen.html#a2b13f14db90ad59a61dff097bcdf8fb7"> 235</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a2b13f14db90ad59a61dff097bcdf8fb7">setPWCOpt</a>(<span class="keywordtype">bool</span> flag)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; pwcOpt = flag;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (pwcOpt)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; setSCCEdgeFlag(<a class="code" href="classSVF_1_1ConstraintNode.html#a6e59b815d784bc1a9437290ff0e1e28ca7f8c92a2f50277fee80899235ae477f9">ConstraintNode::Direct</a>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; setSCCEdgeFlag(<a class="code" href="classSVF_1_1ConstraintNode.html#a6e59b815d784bc1a9437290ff0e1e28ca4b202c80793ae965686b9d275a5c586a">ConstraintNode::Copy</a>);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a44d62658bbd2efcef5ff479930b5dce9"> 244</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a44d62658bbd2efcef5ff479930b5dce9">mergePWC</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> pwcOpt;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a69161671030b51c5a6cf139325aa098f"> 249</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a69161671030b51c5a6cf139325aa098f">setDiffOpt</a>(<span class="keywordtype">bool</span> flag)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; {</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; diffOpt = flag;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</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"><a class="line" href="classSVF_1_1Andersen.html#a6804284abb4b63f44eefdaf044a301f7"> 254</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a6804284abb4b63f44eefdaf044a301f7">enableDiff</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> diffOpt;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a2f88b6035ecb480f7d11afe6bc666541"> 261</a></span>&#160; CallSite2DummyValPN <a class="code" href="classSVF_1_1Andersen.html#a2f88b6035ecb480f7d11afe6bc666541">callsite2DummyValPN</a>; </div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordtype">void</span> heapAllocatorViaIndCall(<a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs,<a class="code" href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">NodePairSet</a> &amp;cpySrcNodes);</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"><a class="line" href="classSVF_1_1Andersen.html#ab90350dc4788d8e282404bd7944dd263"> 264</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#ab90350dc4788d8e282404bd7944dd263">pwcOpt</a>;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a187a23c3b522f2aca49d3c5408ab4469"> 265</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a187a23c3b522f2aca49d3c5408ab4469">diffOpt</a>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a7e26ac6fb40684694f7ff2aadfde8bc7"> 268</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a7e26ac6fb40684694f7ff2aadfde8bc7">computeDiffPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</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"> 270</span>&#160; <span class="keywordflow">if</span> (enableDiff())</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; {</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a6eab8e1201083ed8705379e100cfb3b7">computeDiffPts</a>(rep, <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(rep));</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_1Andersen.html#a106691684d8e7a69157d423393d83d66"> 276</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; <a class="code" href="classSVF_1_1Andersen.html#a106691684d8e7a69157d423393d83d66">getDiffPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (enableDiff())</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a7c4159d873a836b6f6d9b2d2c044921d">getDiffPts</a>(rep);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ae94cea78b71fb75837ee2a17b5ed0e81">getPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1PTData.html#a9ae6037637d8b9acb323333f491f4a7d">getPts</a>(rep);</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;</div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018"> 286</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a4baa6fc95d52afa370fc0fabffd42018">updatePropaPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> 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; <span class="keywordflow">if</span> (!enableDiff())</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcRep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(srcId);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dstRep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(dstId);</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a0f422f826bb378ebb34199f0378e351d">updatePropaPtsMap</a>(srcRep, dstRep);</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_1Andersen.html#a839ed248cf5ff8359217e2029f389d8a"> 294</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a839ed248cf5ff8359217e2029f389d8a">clearPropaPts</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src)</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">if</span> (enableDiff())</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep = <a class="code" href="classSVF_1_1WPASolver.html#a3bd463cd456a1d58242f118328f51ddb">sccRepNode</a>(src);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">getDiffPTDataTy</a>()-&gt;<a class="code" href="classSVF_1_1DiffPTData.html#a7784c4a76aa41149975840af8b32c2a9">clearPropaPts</a>(rep);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</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"><a class="line" href="classSVF_1_1Andersen.html#a9075cd05cb21e0f08a1109b7af6c7480"> 303</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a9075cd05cb21e0f08a1109b7af6c7480">initWorklist</a>() {}</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#ab81b08574f80287803dd43b5ebe2adfa"> 305</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#ab81b08574f80287803dd43b5ebe2adfa">setSCCEdgeFlag</a>(<a class="code" href="classSVF_1_1ConstraintNode.html#a6e59b815d784bc1a9437290ff0e1e28c">ConstraintNode::SCCEdgeFlag</a> f)</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; {</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html#a0fd9fca5ed82cf83dbd825d23c63783a">ConstraintNode::sccEdgeFlag</a> = f;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#abd7fd785e70f66d394088101d78598ca">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</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; <span class="keywordtype">void</span> processAllAddr();</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processLoad(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processStore(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processCopy(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processGep(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepCGEdge.html">GepCGEdge</a>* edge);</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleCopyGep(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleLoadStore(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> processAddr(<span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr);</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processGepPts(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts, <span class="keyword">const</span> <a class="code" href="classSVF_1_1GepCGEdge.html">GepCGEdge</a>* edge);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57"> 328</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57">addCopyEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">addCopyCGEdge</a>(src, dst))</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; {</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; updatePropaPts(src, dst);</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">updateCallGraph</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">CallSiteToFunPtrMap</a>&amp; callsites);</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="keywordtype">void</span> connectCaller2CalleeParams(<a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* F, <a class="code" href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">NodePairSet</a>&amp; cpySrcNodes);</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeNodeToRep(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</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; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> mergeSrcToTgt(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> srcId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tgtId);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</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"> 351</span>&#160; <span class="keywordtype">void</span> mergeSccNodes(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> repNodeId, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; subNodes);</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordtype">void</span> mergeSccCycle();</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#a138b403af0370ad6fdf8cc6af0530392">collapsePWCNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#a79c2b3f10f3f813396d8caaa1f7bc62a">collapseFields</a>();</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordtype">bool</span> collapseNodePts(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; <span class="keywordtype">bool</span> collapseField(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordtype">void</span> updateNodeRepAndSubs(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keyword">virtual</span> <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>&amp; <a class="code" href="classSVF_1_1WPASolver.html#aaa932894d00b69cfa741f9987a9cc6b8">SCCDetect</a>();</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"> 369</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a308ef1f3a1c9fd7ac1858d0c690aa37a"> 371</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a308ef1f3a1c9fd7ac1858d0c690aa37a">sanitizePts</a>()</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">ConstraintGraph::iterator</a> it = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), eit = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); it!=eit; ++it)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; pts = <a class="code" href="classSVF_1_1BVDataPTAImpl.html#aee289e298e421448caaa604b7eb34fcb">getPts</a>(it-&gt;first);</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> fldInsenObjs;</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; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">isFieldInsensitive</a>(o))</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; fldInsenObjs.set(o);</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"> 384</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : fldInsenObjs)</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; {</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;allFields = <a class="code" href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">consCG</a>-&gt;<a class="code" href="classSVF_1_1ConstraintGraph.html#afd200919cf8742bb62bb0bde279a558a">getAllFieldsObjVars</a>(o);</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> f : allFields) <a class="code" href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">addPts</a>(it-&gt;first, f);</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"> 389</span>&#160; }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; }</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#ad92dbecc91170b235180e59ba307acda"> 393</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1Andersen.html#ad92dbecc91170b235180e59ba307acda">PTAName</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;AndersenWPA&quot;</span>;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; }</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#af42fe6aeacfd31bbef7f5c80c8cf6173"> 399</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1Andersen.html#af42fe6aeacfd31bbef7f5c80c8cf6173">matchType</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>*)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; {</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classSVF_1_1Andersen.html#a85cc81a4f9399e9a23372fa2658325a6"> 404</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1Andersen.html#a85cc81a4f9399e9a23372fa2658325a6">addTypeForGepObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>*)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; {</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <span class="keywordflow">return</span>;</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="l00411"></a><span class="lineno"> 411</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> cluster(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</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"> 414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;</div><div class="line"><a name="l00419"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html"> 419</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a></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"> 422</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#add4dcb6d74a8ce8747bcac5f740cd672"> 424</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1AndersenWaveDiff.html#add4dcb6d74a8ce8747bcac5f740cd672">diffWave</a>; <span class="comment">// static instance</span></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"> 426</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da"> 427</a></span>&#160; <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da">AndersenWaveDiff</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a>, <span class="keywordtype">bool</span> alias_check = <span class="keyword">true</span>): <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, type, alias_check) {}</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540"> 430</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>* <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">createAndersenWaveDiff</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</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"> 432</span>&#160; <span class="keywordflow">if</span>(diffWave==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; {</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; diffWave = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>(_pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">AndersenWaveDiff_WPA</a>, <span class="keyword">false</span>);</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; diffWave-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="keywordflow">return</span> diffWave;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">return</span> diffWave;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00440"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a5da6abb1a7f0ef3e3871ea6e5a623625"> 440</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a5da6abb1a7f0ef3e3871ea6e5a623625">releaseAndersenWaveDiff</a>()</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"> 442</span>&#160; <span class="keywordflow">if</span> (diffWave)</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <span class="keyword">delete</span> diffWave;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; diffWave = <span class="keyword">nullptr</span>;</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"> 447</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">solveWorklist</a>();</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#abd7fd785e70f66d394088101d78598ca">processNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> postProcessNode(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleCopyGep(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> handleLoad(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* load);</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> handleStore(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* store);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> processCopy(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeNodeToRep(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId,<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenWaveDiff.html#a57c7c12ebcf06f2912e93c802c6cdd02"> 459</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html#a57c7c12ebcf06f2912e93c802c6cdd02">processCast</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>*)</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; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;};</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;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="comment"> * Lazy Cycle Detection Based Andersen Analysis</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00469"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html"> 469</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a></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;<span class="keyword">private</span>:</div><div class="line"><a name="l00473"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#ae4e979d6e7fa83c8961d0caf0ca0f54e"> 473</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>* <a class="code" href="classSVF_1_1AndersenLCD.html#ae4e979d6e7fa83c8961d0caf0ca0f54e">lcdAndersen</a>;</div><div class="line"><a name="l00474"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#a501ff7f8648c735c4a896063128d9ccc"> 474</a></span>&#160; <a class="code" href="namespaceSVF.html#a0d2e17d5b07a50ed95e8f407cd6dd0be">EdgeSet</a> <a class="code" href="classSVF_1_1AndersenLCD.html#a501ff7f8648c735c4a896063128d9ccc">metEdges</a>;</div><div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#a63823aa384f1438917c3625befa30bad"> 475</a></span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> <a class="code" href="classSVF_1_1AndersenLCD.html#a63823aa384f1438917c3625befa30bad">lcdCandidates</a>;</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00478"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#aab4737557838799f52b64ceb2ec543a3"> 478</a></span>&#160; <a class="code" href="classSVF_1_1AndersenLCD.html#aab4737557838799f52b64ceb2ec543a3">AndersenLCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">AndersenLCD_WPA</a>) :</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, type), metEdges({}), lcdCandidates( {})</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="l00484"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#aa59a98c152562ff4038bb4ac3b7a72d1"> 484</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>* <a class="code" href="classSVF_1_1AndersenLCD.html#aa59a98c152562ff4038bb4ac3b7a72d1">createAndersenLCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</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"> 486</span>&#160; <span class="keywordflow">if</span> (lcdAndersen == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; {</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; lcdAndersen = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>(_pag);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; lcdAndersen-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; <span class="keywordflow">return</span> lcdAndersen;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">return</span> lcdAndersen;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160; }</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"><a class="line" href="classSVF_1_1AndersenLCD.html#a583b062b7c221bd50e5f37b7cb9b7a62"> 495</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenLCD.html#a583b062b7c221bd50e5f37b7cb9b7a62">releaseAndersenLCD</a>()</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; {</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">if</span> (lcdAndersen)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <span class="keyword">delete</span> lcdAndersen;</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; lcdAndersen = <span class="keyword">nullptr</span>;</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="keyword">protected</span>:</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="comment">// &#39;lcdCandidates&#39; is used to collect nodes need to be visited by SCC detector</span></div><div class="line"><a name="l00505"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#ad3f4bd35f98c43a0642b91c6b0e7acb3"> 505</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenLCD.html#ad3f4bd35f98c43a0642b91c6b0e7acb3">hasLCDCandidate</a> ()<span class="keyword"> const</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; <span class="keywordflow">return</span> !lcdCandidates.empty();</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"><a class="line" href="classSVF_1_1AndersenLCD.html#ab58bd928fbfcc56344dcaf82a9c360a2"> 509</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenLCD.html#ab58bd928fbfcc56344dcaf82a9c360a2">cleanLCDCandidate</a>()</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; lcdCandidates.clear();</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; };</div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#aa830cfc0e46114751337e8ea3586d0bb"> 513</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenLCD.html#aa830cfc0e46114751337e8ea3586d0bb">addLCDCandidate</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; {</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; lcdCandidates.insert(nodeId);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</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; <span class="comment">// &#39;metEdges&#39; is used to collect edges met by AndersenLCD, to avoid redundant visit</span></div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#a4f374bbd066f9e8b1480184a1416b68b"> 521</a></span>&#160;<span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenLCD.html#a4f374bbd066f9e8b1480184a1416b68b">isMetEdge</a> (<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge)<span class="keyword"> const</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; EdgeSet::const_iterator it = metEdges.find(edge-&gt;<a class="code" href="classSVF_1_1ConstraintEdge.html#ab201b7df925c12e6944516f4b87d7823">getEdgeID</a>());</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="keywordflow">return</span> it != metEdges.end();</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; };</div><div class="line"><a name="l00526"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenLCD.html#a0c5adfc0876e9bea02fe8ded41baeb91"> 526</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenLCD.html#a0c5adfc0876e9bea02fe8ded41baeb91">addMetEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge)</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; metEdges.insert(edge-&gt;<a class="code" href="classSVF_1_1ConstraintEdge.html#ab201b7df925c12e6944516f4b87d7823">getEdgeID</a>());</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; };</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="comment">//AndersenLCD worklist processer</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">solveWorklist</a>();</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// Solve constraints of each nodes</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> handleCopyGep(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="comment">// Collapse nodes and fields based on &#39;lcdCandidates&#39;</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeSCC();</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; <span class="comment">// AndersenLCD specified SCC detector, need to input a nodeStack &#39;lcdCandidate&#39;</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <a class="code" href="namespaceSVF.html#a1811127aebdb9c926e39d155e20b3dc0">NodeStack</a>&amp; <a class="code" href="classSVF_1_1WPASolver.html#aaa932894d00b69cfa741f9987a9cc6b8">SCCDetect</a>();</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; <span class="keywordtype">bool</span> mergeSrcToTgt(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;};</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;</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;</div><div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html"> 548</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a> : <span class="keyword">virtual</span> <span class="keyword">public</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a></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"> 551</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00552"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#a33cb18543abbcd434861c5da7e588356"> 552</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;OfflineConsG*&gt;</a> <a class="code" href="classSVF_1_1AndersenHCD.html#a33cb18543abbcd434861c5da7e588356">OSCC</a>;</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00555"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#a2356a7f8215725d2ee035630b1487b05"> 555</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>* <a class="code" href="classSVF_1_1AndersenHCD.html#a2356a7f8215725d2ee035630b1487b05">hcdAndersen</a>;</div><div class="line"><a name="l00556"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#ac1de536453e92d7628b12e54cc7b2df7"> 556</a></span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> <a class="code" href="classSVF_1_1AndersenHCD.html#ac1de536453e92d7628b12e54cc7b2df7">mergedNodes</a>;</div><div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#af5fe01816e65ece685a3c3537ebd0137"> 557</a></span>&#160; <a class="code" href="classSVF_1_1OfflineConsG.html">OfflineConsG</a>* <a class="code" href="classSVF_1_1AndersenHCD.html#af5fe01816e65ece685a3c3537ebd0137">oCG</a>;</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00560"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#ac7629cede14407d42ed5b5ec7e607b0e"> 560</a></span>&#160; <a class="code" href="classSVF_1_1AndersenHCD.html#ac7629cede14407d42ed5b5ec7e607b0e">AndersenHCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">AndersenHCD_WPA</a>) :</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, type), oCG(nullptr)</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; }</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#aa3553e6d7c7245d3d2cdc9d083889c28"> 566</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a> *<a class="code" href="classSVF_1_1AndersenHCD.html#aa3553e6d7c7245d3d2cdc9d083889c28">createAndersenHCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; {</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">if</span> (hcdAndersen == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; {</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; hcdAndersen = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>(_pag);</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; hcdAndersen-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">return</span> hcdAndersen;</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; }</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordflow">return</span> hcdAndersen;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; }</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"><a class="line" href="classSVF_1_1AndersenHCD.html#ad2cb6f353fef40a99ae9fba112663b84"> 577</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHCD.html#ad2cb6f353fef40a99ae9fba112663b84">releaseAndersenHCD</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"> 579</span>&#160; <span class="keywordflow">if</span> (hcdAndersen)</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keyword">delete</span> hcdAndersen;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; hcdAndersen = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; }</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenBase.html#a891816407a4c6346f56bc01a67b78aac">initialize</a>();</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"> 587</span>&#160; <span class="comment">// Get offline rep node from offline constraint graph</span></div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#abeafc9d45d529577b99fe821e59fd9cb"> 589</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenHCD.html#abeafc9d45d529577b99fe821e59fd9cb">hasOfflineRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)<span class="keyword"> const</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">return</span> oCG-&gt;<a class="code" href="classSVF_1_1OfflineConsG.html#a0a03ef009894059fa2591ea5f9ef87d9">hasOCGRep</a>(nodeId);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#ac2e6a5acffff567e729b6aa9e9beeb55"> 593</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1AndersenHCD.html#ac2e6a5acffff567e729b6aa9e9beeb55">getOfflineRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <span class="keywordflow">return</span> oCG-&gt;<a class="code" href="classSVF_1_1OfflineConsG.html#a3f390900ee8761055c6d59107bc0ad27">getOCGRep</a>(nodeId);</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</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"> 599</span>&#160; <span class="comment">// The set &#39;mergedNodes&#39; is used to record the merged node, therefore avoiding re-merge nodes</span></div><div class="line"><a name="l00601"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHCD.html#ab0414e29a745ed14e790c296042d1fe9"> 601</a></span>&#160;<span class="comment"></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenHCD.html#ab0414e29a745ed14e790c296042d1fe9">isaMergedNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)<span class="keyword"> const</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; NodeSet::const_iterator it = mergedNodes.find(node);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">return</span> it != mergedNodes.end();</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"><a class="line" href="classSVF_1_1AndersenHCD.html#a6d6d770848a42c6291db663ab138461d"> 606</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHCD.html#a6d6d770848a42c6291db663ab138461d">setMergedNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)</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">if</span> (!isaMergedNode(node))</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; mergedNodes.insert(node);</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</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"> 613</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPASolver.html#af1bb670efde7006e3e99b3735e4fc4cc">solveWorklist</a>();</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> mergeSCC(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="keywordtype">void</span> mergeNodeAndPts(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> tgt);</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;};</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;</div><div class="line"><a name="l00624"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html"> 624</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>, <span class="keyword">public</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a></div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;{</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;<span class="keyword">private</span>:</div><div class="line"><a name="l00628"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#ad22c1990d8faad9c7cae6d779c7de94a"> 628</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a>* <a class="code" href="classSVF_1_1AndersenHLCD.html#ad22c1990d8faad9c7cae6d779c7de94a">hlcdAndersen</a>;</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;<span class="keyword">public</span>:</div><div class="line"><a name="l00631"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#aa4c37c2d4119b473b29ef21d630d7f26"> 631</a></span>&#160; <a class="code" href="classSVF_1_1AndersenHLCD.html#aa4c37c2d4119b473b29ef21d630d7f26">AndersenHLCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag, <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">PTATY</a> type = <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">AndersenHLCD_WPA</a>) :</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(_pag, type), <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>(_pag, type), <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>(_pag, type)</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;</div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#a835f347f1f947ac3bbf5e4c958e59f05"> 637</a></span>&#160; <span class="keyword">static</span> <a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a> *<a class="code" href="classSVF_1_1AndersenHLCD.html#a835f347f1f947ac3bbf5e4c958e59f05">createAndersenHLCD</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* _pag)</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"> 639</span>&#160; <span class="keywordflow">if</span> (hlcdAndersen == <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; {</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; hlcdAndersen = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a>(_pag);</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; hlcdAndersen-&gt;<a class="code" href="classSVF_1_1AndersenBase.html#a944966086ecb716184c8cdcc43db5751">analyze</a>();</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">return</span> hlcdAndersen;</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; <span class="keywordflow">return</span> hlcdAndersen;</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;</div><div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#a23f7e4f0b51bd6474644f566998d367f"> 648</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a23f7e4f0b51bd6474644f566998d367f">releaseAndersenHLCD</a>()</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"> 650</span>&#160; <span class="keywordflow">if</span> (hlcdAndersen)</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">delete</span> hlcdAndersen;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; hlcdAndersen = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; }</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00656"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#a5926080868429040f5142843f01a2a5c"> 656</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a5926080868429040f5142843f01a2a5c">initialize</a>()</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; {</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <a class="code" href="classSVF_1_1AndersenHCD.html#aaac9cac7fc5696adb585abd9d67f8c14">AndersenHCD::initialize</a>();</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_1AndersenHLCD.html#a0ead595bb9e36c89419adb22ef11a283"> 660</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a0ead595bb9e36c89419adb22ef11a283">solveWorklist</a>()</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="classSVF_1_1AndersenHCD.html#ae3ac936d1ae3e46a9110b8c8ed9f279c">AndersenHCD::solveWorklist</a>();</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"><a class="line" href="classSVF_1_1AndersenHLCD.html#a9582cde6cbb510f3fb624109f8ea8f63"> 664</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a9582cde6cbb510f3fb624109f8ea8f63">handleCopyGep</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node)</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; {</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; <a class="code" href="classSVF_1_1AndersenLCD.html#a139d80e25fe713194f719581915d36d5">AndersenLCD::handleCopyGep</a>(node);</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"> 668</span>&#160; <span class="keywordtype">void</span> mergeSCC(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00669"></a><span class="lineno"><a class="line" href="classSVF_1_1AndersenHLCD.html#a59da289c87f9ab815a15e0a745bdc31f"> 669</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1AndersenHLCD.html#a59da289c87f9ab815a15e0a745bdc31f">mergeSrcToTgt</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> newRepId)</div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; {</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1AndersenLCD.html#ac78efb1e4246c06c64dad1d368ed032d">AndersenLCD::mergeSrcToTgt</a>(nodeId, newRepId);</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;</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;} <span class="comment">// End namespace SVF</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;<span class="preprocessor">#endif </span><span class="comment">/* ANDERSENPASS_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a8da8746b38c55561d3f6904e8fd0a9aa"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a8da8746b38c55561d3f6904e8fd0a9aa">SVF::AndersenBase::~AndersenBase</a></div><div class="ttdeci">~AndersenBase() override</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8cpp_source.html#l00063">Andersen.cpp:63</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00361">GenericGraph.h:361</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1AndersenBase_html_aae14de6fbca9280d8d0290326aa493f0"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#aae14de6fbca9280d8d0290326aa493f0">SVF::AndersenBase::timeOfProcessCopyGep</a></div><div class="ttdeci">static double timeOfProcessCopyGep</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00136">Andersen.h:136</a></div></div>
@@ -99,6 +99,7 @@ $(function() {
99
99
  <div class="ttc" id="classSVF_1_1Andersen_html_a2f88b6035ecb480f7d11afe6bc666541"><div class="ttname"><a href="classSVF_1_1Andersen.html#a2f88b6035ecb480f7d11afe6bc666541">SVF::Andersen::callsite2DummyValPN</a></div><div class="ttdeci">CallSite2DummyValPN callsite2DummyValPN</div><div class="ttdoc">Map an instruction to a dummy obj which created at an indirect callsite, which invokes a heap allocat...</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00261">Andersen.h:261</a></div></div>
100
100
  <div class="ttc" id="classSVF_1_1DiffPTData_html_a0f422f826bb378ebb34199f0378e351d"><div class="ttname"><a href="classSVF_1_1DiffPTData.html#a0f422f826bb378ebb34199f0378e351d">SVF::DiffPTData::updatePropaPtsMap</a></div><div class="ttdeci">virtual void updatePropaPtsMap(Key &amp;src, Key &amp;dst)=0</div></div>
101
101
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a69aae96fc1c99bf108075e5061f50f9e"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a69aae96fc1c99bf108075e5061f50f9e">SVF::AndersenBase::numOfProcessedLoad</a></div><div class="ttdeci">static u32_t numOfProcessedLoad</div><div class="ttdoc">Number of processed Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00125">Andersen.h:125</a></div></div>
102
103
  <div class="ttc" id="classSVF_1_1WPASolver_html_a138b403af0370ad6fdf8cc6af0530392"><div class="ttname"><a href="classSVF_1_1WPASolver.html#a138b403af0370ad6fdf8cc6af0530392">SVF::WPASolver::collapsePWCNode</a></div><div class="ttdeci">virtual void collapsePWCNode(NodeID)</div><div class="ttdoc">collapse positive weight cycles of a graph </div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00129">WPASolver.h:129</a></div></div>
103
104
  <div class="ttc" id="classSVF_1_1AndersenHCD_html_a33cb18543abbcd434861c5da7e588356"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#a33cb18543abbcd434861c5da7e588356">SVF::AndersenHCD::OSCC</a></div><div class="ttdeci">SCCDetection&lt; OfflineConsG * &gt; OSCC</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00552">Andersen.h:552</a></div></div>
104
105
  <div class="ttc" id="classSVF_1_1AndersenHCD_html_aaac9cac7fc5696adb585abd9d67f8c14"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#aaac9cac7fc5696adb585abd9d67f8c14">SVF::AndersenHCD::initialize</a></div><div class="ttdeci">virtual void initialize()</div><div class="ttdef"><b>Definition:</b> <a href="AndersenHCD_8cpp_source.html#l00045">AndersenHCD.cpp:45</a></div></div>
@@ -121,6 +122,7 @@ $(function() {
121
122
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
122
123
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a6e59b815d784bc1a9437290ff0e1e28ca7f8c92a2f50277fee80899235ae477f9"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a6e59b815d784bc1a9437290ff0e1e28ca7f8c92a2f50277fee80899235ae477f9">SVF::ConstraintNode::Direct</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00050">ConsGNode.h:50</a></div></div>
123
124
  <div class="ttc" id="namespaceSVF_html_ac82022f3f81965c3ce9b26c299f537a7"><div class="ttname"><a href="namespaceSVF.html#ac82022f3f81965c3ce9b26c299f537a7">SVF::NodePairSet</a></div><div class="ttdeci">Set&lt; NodePair &gt; NodePairSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00115">SVFBasicTypes.h:115</a></div></div>
125
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a04acd871bd1b98cd9e83e395334ac130"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a04acd871bd1b98cd9e83e395334ac130">SVF::AndersenBase::numOfProcessedCopy</a></div><div class="ttdeci">static u32_t numOfProcessedCopy</div><div class="ttdoc">Number of processed Addr edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00123">Andersen.h:123</a></div></div>
124
126
  <div class="ttc" id="classSVF_1_1OfflineConsG_html"><div class="ttname"><a href="classSVF_1_1OfflineConsG.html">SVF::OfflineConsG</a></div><div class="ttdef"><b>Definition:</b> <a href="OfflineConsG_8h_source.html#l00044">OfflineConsG.h:44</a></div></div>
125
127
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a02c5a50b214d36921e1404784e76704d"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a02c5a50b214d36921e1404784e76704d">SVF::AndersenBase::timeOfSCCMerges</a></div><div class="ttdeci">static double timeOfSCCMerges</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00132">Andersen.h:132</a></div></div>
126
128
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_afc320fbf269404fe128e69c98e6f9cac"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#afc320fbf269404fe128e69c98e6f9cac">SVF::PointerAnalysis::OnTheFlyIterBudgetForStat</a></div><div class="ttdeci">u32_t OnTheFlyIterBudgetForStat</div><div class="ttdoc">Flag for iteration budget for on-the-fly statistics. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00143">PointerAnalysis.h:143</a></div></div>
@@ -128,14 +130,16 @@ $(function() {
128
130
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ac23f71c1307cda9cba44acc40059f0a3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ac23f71c1307cda9cba44acc40059f0a3">SVF::PointerAnalysis::getAnalysisTy</a></div><div class="ttdeci">PTATY getAnalysisTy() const</div><div class="ttdoc">Type of pointer analysis. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00192">PointerAnalysis.h:192</a></div></div>
129
131
  <div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
130
132
  <div class="ttc" id="classSVF_1_1AndersenHCD_html_aa3553e6d7c7245d3d2cdc9d083889c28"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#aa3553e6d7c7245d3d2cdc9d083889c28">SVF::AndersenHCD::createAndersenHCD</a></div><div class="ttdeci">static AndersenHCD * createAndersenHCD(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00566">Andersen.h:566</a></div></div>
131
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a9d7b6e602e1764f76583824dddebf985"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a9d7b6e602e1764f76583824dddebf985">SVF::AndersenBase::numOfProcessedCopy</a></div><div class="ttdeci">static Size_t numOfProcessedCopy</div><div class="ttdoc">Number of processed Addr edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00123">Andersen.h:123</a></div></div>
133
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a4acad18a6eb585ba9e3d2276dd591067"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a4acad18a6eb585ba9e3d2276dd591067">SVF::AndersenBase::numOfProcessedAddr</a></div><div class="ttdeci">static u32_t numOfProcessedAddr</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00122">Andersen.h:122</a></div></div>
132
134
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a6c3d6b4c004d9e43690c3807502eed74"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a6c3d6b4c004d9e43690c3807502eed74">SVF::AndersenBase::redundantGepNodes</a></div><div class="ttdeci">NodeBS redundantGepNodes</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00118">Andersen.h:118</a></div></div>
135
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00075">SVFBasicTypes.h:75</a></div></div>
133
136
  <div class="ttc" id="classSVF_1_1Andersen_html_a308ef1f3a1c9fd7ac1858d0c690aa37a"><div class="ttname"><a href="classSVF_1_1Andersen.html#a308ef1f3a1c9fd7ac1858d0c690aa37a">SVF::Andersen::sanitizePts</a></div><div class="ttdeci">void sanitizePts()</div><div class="ttdoc">Sanitize pts for field insensitive objects. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00371">Andersen.h:371</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a25b00d9ca71cbdd27530fc5d0dc84ee5"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a25b00d9ca71cbdd27530fc5d0dc84ee5">SVF::AndersenBase::numOfSfrs</a></div><div class="ttdeci">static u32_t numOfSfrs</div><div class="ttdoc">Number of processed Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00127">Andersen.h:127</a></div></div>
134
138
  <div class="ttc" id="classSVF_1_1AndersenLCD_html_aa59a98c152562ff4038bb4ac3b7a72d1"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#aa59a98c152562ff4038bb4ac3b7a72d1">SVF::AndersenLCD::createAndersenLCD</a></div><div class="ttdeci">static AndersenLCD * createAndersenLCD(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00484">Andersen.h:484</a></div></div>
135
139
  <div class="ttc" id="classSVF_1_1AndersenHCD_html_abeafc9d45d529577b99fe821e59fd9cb"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#abeafc9d45d529577b99fe821e59fd9cb">SVF::AndersenHCD::hasOfflineRep</a></div><div class="ttdeci">bool hasOfflineRep(NodeID nodeId) const</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00589">Andersen.h:589</a></div></div>
140
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a2b763519509ce21cf40893c01f8357b6"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a2b763519509ce21cf40893c01f8357b6">SVF::AndersenBase::numOfProcessedStore</a></div><div class="ttdeci">static u32_t numOfProcessedStore</div><div class="ttdoc">Number of processed Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00126">Andersen.h:126</a></div></div>
136
141
  <div class="ttc" id="classSVF_1_1AndersenBase_html_ac05796a5672ddb5bd0e08924d79da065"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ac05796a5672ddb5bd0e08924d79da065">SVF::AndersenBase::updateCallGraph</a></div><div class="ttdeci">virtual bool updateCallGraph(const CallSiteToFunPtrMap &amp;) override</div><div class="ttdoc">Implement it in child class to update call graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00074">Andersen.h:74</a></div></div>
137
142
  <div class="ttc" id="classSVF_1_1Andersen_html_a95c0b2f501dff61993cd43a5cab89e17"><div class="ttname"><a href="classSVF_1_1Andersen.html#a95c0b2f501dff61993cd43a5cab89e17">SVF::Andersen::resetData</a></div><div class="ttdeci">void resetData()</div><div class="ttdoc">Reset data. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00176">Andersen.h:176</a></div></div>
138
- <div class="ttc" id="classSVF_1_1AndersenBase_html_abdc249ea291d0247f6b91a8fcc7df341"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#abdc249ea291d0247f6b91a8fcc7df341">SVF::AndersenBase::AveragePointsToSetSize</a></div><div class="ttdeci">static Size_t AveragePointsToSetSize</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00134">Andersen.h:134</a></div></div>
139
143
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">SVF::PointerAnalysis::Steensgaard_WPA</a></div><div class="ttdoc">Steensgaard PTA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00074">PointerAnalysis.h:74</a></div></div>
140
144
  <div class="ttc" id="classSVF_1_1WPASolver_html"><div class="ttname"><a href="classSVF_1_1WPASolver.html">SVF::WPASolver</a></div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00043">WPASolver.h:43</a></div></div>
141
145
  <div class="ttc" id="classSVF_1_1SCCDetection_html"><div class="ttname"><a href="classSVF_1_1SCCDetection.html">SVF::SCCDetection</a></div><div class="ttdef"><b>Definition:</b> <a href="SCC_8h_source.html#l00054">SCC.h:54</a></div></div>
@@ -149,7 +153,6 @@ $(function() {
149
153
  <div class="ttc" id="classSVF_1_1AndersenBase_html"><div class="ttname"><a href="classSVF_1_1AndersenBase.html">SVF::AndersenBase</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00050">Andersen.h:50</a></div></div>
150
154
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a6e59b815d784bc1a9437290ff0e1e28ca4b202c80793ae965686b9d275a5c586a"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a6e59b815d784bc1a9437290ff0e1e28ca4b202c80793ae965686b9d275a5c586a">SVF::ConstraintNode::Copy</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00050">ConsGNode.h:50</a></div></div>
151
155
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a0167fa7b59571c07b2cbec08905f6629"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a0167fa7b59571c07b2cbec08905f6629">SVF::AndersenBase::classof</a></div><div class="ttdeci">static bool classof(const PointerAnalysis *pta)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00085">Andersen.h:85</a></div></div>
152
- <div class="ttc" id="classSVF_1_1AndersenBase_html_aa31bc83cdeaa30dd0975976e29a5be12"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#aa31bc83cdeaa30dd0975976e29a5be12">SVF::AndersenBase::numOfSfrs</a></div><div class="ttdeci">static Size_t numOfSfrs</div><div class="ttdoc">Number of processed Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00127">Andersen.h:127</a></div></div>
153
156
  <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; ConstraintNode, ConstraintEdge &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00338">GenericGraph.h:338</a></div></div>
154
157
  <div class="ttc" id="classSVF_1_1Andersen_html_a15218a84e653baf2cd7f1dc95ccfb77d"><div class="ttname"><a href="classSVF_1_1Andersen.html#a15218a84e653baf2cd7f1dc95ccfb77d">SVF::Andersen::~Andersen</a></div><div class="ttdeci">virtual ~Andersen()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00164">Andersen.h:164</a></div></div>
155
158
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_af68485a2208553579f9c2e4b2cb20cff"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#af68485a2208553579f9c2e4b2cb20cff">SVF::BVDataPTAImpl::addPts</a></div><div class="ttdeci">virtual bool addPts(NodeID id, NodeID ptd)</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00132">PointerAnalysisImpl.h:132</a></div></div>
@@ -161,18 +164,17 @@ $(function() {
161
164
  <div class="ttc" id="classSVF_1_1PTData_html_af7aa22f11558c12ff16612174e2221dd"><div class="ttname"><a href="classSVF_1_1PTData.html#af7aa22f11558c12ff16612174e2221dd">SVF::PTData::unionPts</a></div><div class="ttdeci">virtual bool unionPts(const Key &amp;dstVar, const Key &amp;srcVar)=0</div><div class="ttdoc">Performs pts(dstVar) = pts(dstVar) U pts(srcVar). </div></div>
162
165
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">SVF::PointerAnalysis::AndersenHCD_WPA</a></div><div class="ttdoc">Hybird cycle detection andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00068">PointerAnalysis.h:68</a></div></div>
163
166
  <div class="ttc" id="classSVF_1_1WPASolver_html_abd7fd785e70f66d394088101d78598ca"><div class="ttname"><a href="classSVF_1_1WPASolver.html#abd7fd785e70f66d394088101d78598ca">SVF::WPASolver::processNode</a></div><div class="ttdeci">virtual void processNode(NodeID)</div><div class="ttdoc">Following methods are to be implemented in child class, in order to achieve a fully worked PTA...</div><div class="ttdef"><b>Definition:</b> <a href="WPASolver_8h_source.html#l00127">WPASolver.h:127</a></div></div>
164
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a5f1b0711583aa8947dfb4619658f1904"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a5f1b0711583aa8947dfb4619658f1904">SVF::AndersenBase::numOfProcessedLoad</a></div><div class="ttdeci">static Size_t numOfProcessedLoad</div><div class="ttdoc">Number of processed Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00125">Andersen.h:125</a></div></div>
165
- <div class="ttc" id="namespaceSVF_html_a2db29836a72e8d86e9baa6d8d55d2978"><div class="ttname"><a href="namespaceSVF.html#a2db29836a72e8d86e9baa6d8d55d2978">SVF::Size_t</a></div><div class="ttdeci">signed long Size_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00078">SVFBasicTypes.h:78</a></div></div>
166
167
  <div class="ttc" id="classSVF_1_1Andersen_html_af42fe6aeacfd31bbef7f5c80c8cf6173"><div class="ttname"><a href="classSVF_1_1Andersen.html#af42fe6aeacfd31bbef7f5c80c8cf6173">SVF::Andersen::matchType</a></div><div class="ttdeci">virtual bool matchType(NodeID, NodeID, const NormalGepCGEdge *)</div><div class="ttdoc">match types for Gep Edges </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00399">Andersen.h:399</a></div></div>
167
168
  <div class="ttc" id="namespaceSVF_html_ae9c142945ea31b6c70bceb93eb6f3ca4"><div class="ttname"><a href="namespaceSVF.html#ae9c142945ea31b6c70bceb93eb6f3ca4">SVF::WPAConstraintSolver</a></div><div class="ttdeci">WPASolver&lt; ConstraintGraph * &gt; WPAConstraintSolver</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00043">Andersen.h:43</a></div></div>
168
169
  <div class="ttc" id="classSVF_1_1Andersen_html_a85cc81a4f9399e9a23372fa2658325a6"><div class="ttname"><a href="classSVF_1_1Andersen.html#a85cc81a4f9399e9a23372fa2658325a6">SVF::Andersen::addTypeForGepObjNode</a></div><div class="ttdeci">virtual void addTypeForGepObjNode(NodeID, const NormalGepCGEdge *)</div><div class="ttdoc">add type for newly created GepObjNode </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00404">Andersen.h:404</a></div></div>
169
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a70e60ce2e6f4cfd575c6f5c974ca1081"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a70e60ce2e6f4cfd575c6f5c974ca1081">SVF::AndersenBase::numOfProcessedAddr</a></div><div class="ttdeci">static Size_t numOfProcessedAddr</div><div class="ttdoc">Statistics. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00122">Andersen.h:122</a></div></div>
170
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a0d7298cbf83568f24fd2bd1926a32968"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a0d7298cbf83568f24fd2bd1926a32968">SVF::AndersenBase::numOfSCCDetection</a></div><div class="ttdeci">static u32_t numOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00130">Andersen.h:130</a></div></div>
171
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_a9f453ec1b4236b8194ae590981217259"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a9f453ec1b4236b8194ae590981217259">SVF::AndersenBase::numOfFieldExpand</a></div><div class="ttdeci">static u32_t numOfFieldExpand</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00128">Andersen.h:128</a></div></div>
170
172
  <div class="ttc" id="classSVF_1_1Andersen_html_a2b13f14db90ad59a61dff097bcdf8fb7"><div class="ttname"><a href="classSVF_1_1Andersen.html#a2b13f14db90ad59a61dff097bcdf8fb7">SVF::Andersen::setPWCOpt</a></div><div class="ttdeci">void setPWCOpt(bool flag)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00235">Andersen.h:235</a></div></div>
171
173
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a6b7d0e57f741c446d0bf178939960143"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a6b7d0e57f741c446d0bf178939960143">SVF::AndersenBase::timeOfSCCDetection</a></div><div class="ttdeci">static double timeOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00131">Andersen.h:131</a></div></div>
172
174
  <div class="ttc" id="classSVF_1_1AndersenHLCD_html_a23f7e4f0b51bd6474644f566998d367f"><div class="ttname"><a href="classSVF_1_1AndersenHLCD.html#a23f7e4f0b51bd6474644f566998d367f">SVF::AndersenHLCD::releaseAndersenHLCD</a></div><div class="ttdeci">static void releaseAndersenHLCD()</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00648">Andersen.h:648</a></div></div>
173
175
  <div class="ttc" id="namespaceSVF_html_a0d2e17d5b07a50ed95e8f407cd6dd0be"><div class="ttname"><a href="namespaceSVF.html#a0d2e17d5b07a50ed95e8f407cd6dd0be">SVF::EdgeSet</a></div><div class="ttdeci">NodeSet EdgeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00124">SVFBasicTypes.h:124</a></div></div>
174
176
  <div class="ttc" id="classSVF_1_1AndersenLCD_html_ac78efb1e4246c06c64dad1d368ed032d"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#ac78efb1e4246c06c64dad1d368ed032d">SVF::AndersenLCD::mergeSrcToTgt</a></div><div class="ttdeci">bool mergeSrcToTgt(NodeID nodeId, NodeID newRepId)</div><div class="ttdef"><b>Definition:</b> <a href="AndersenLCD_8cpp_source.html#l00131">AndersenLCD.cpp:131</a></div></div>
175
- <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a60bb27100e8c264be2add004069d1758"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">SVF::ConstraintGraph::addCopyCGEdge</a></div><div class="ttdeci">CopyCGEdge * addCopyCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00182">ConsG.cpp:182</a></div></div>
177
+ <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a60bb27100e8c264be2add004069d1758"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">SVF::ConstraintGraph::addCopyCGEdge</a></div><div class="ttdeci">CopyCGEdge * addCopyCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00177">ConsG.cpp:177</a></div></div>
176
178
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">SVF::PointerAnalysis::AndersenHLCD_WPA</a></div><div class="ttdoc">Hybird lazy cycle detection andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00069">PointerAnalysis.h:69</a></div></div>
177
179
  <div class="ttc" id="classSVF_1_1AndersenLCD_html_ab58bd928fbfcc56344dcaf82a9c360a2"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#ab58bd928fbfcc56344dcaf82a9c360a2">SVF::AndersenLCD::cleanLCDCandidate</a></div><div class="ttdeci">void cleanLCDCandidate()</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00509">Andersen.h:509</a></div></div>
178
180
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a2afb49f513c9534fd051117b59dc056b"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a2afb49f513c9534fd051117b59dc056b">SVF::AndersenBase::timeOfUpdateCallGraph</a></div><div class="ttdeci">static double timeOfUpdateCallGraph</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00138">Andersen.h:138</a></div></div>
@@ -201,15 +203,15 @@ $(function() {
201
203
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a48ff6fc4badc79ad3204ae9bd95cc540"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a48ff6fc4badc79ad3204ae9bd95cc540">SVF::AndersenWaveDiff::createAndersenWaveDiff</a></div><div class="ttdeci">static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00430">Andersen.h:430</a></div></div>
202
204
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a7478d23055a5db981d7a9515cffc99da"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a7478d23055a5db981d7a9515cffc99da">SVF::AndersenWaveDiff::AndersenWaveDiff</a></div><div class="ttdeci">AndersenWaveDiff(SVFIR *_pag, PTATY type=AndersenWaveDiff_WPA, bool alias_check=true)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00427">Andersen.h:427</a></div></div>
203
205
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">SVF::PointerAnalysis::Andersen_WPA</a></div><div class="ttdoc">Andersen PTA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00066">PointerAnalysis.h:66</a></div></div>
204
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a7cfafe54d564c9401f435362d44d3f9c"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a7cfafe54d564c9401f435362d44d3f9c">SVF::AndersenBase::MaxPointsToSetSize</a></div><div class="ttdeci">static Size_t MaxPointsToSetSize</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00135">Andersen.h:135</a></div></div>
205
206
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">SVF::PointerAnalysis::AndersenSFR_WPA</a></div><div class="ttdoc">Stride-based field representation. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00071">PointerAnalysis.h:71</a></div></div>
206
207
  <div class="ttc" id="classSVF_1_1AndersenBase_html_a566830d0c7a1f5cd967bb8f2ab168f8d"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a566830d0c7a1f5cd967bb8f2ab168f8d">SVF::AndersenBase::printStat</a></div><div class="ttdeci">void printStat()</div><div class="ttdoc">dump statistics </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00108">Andersen.h:108</a></div></div>
207
208
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html_ab9c0bb439f98ae11dd178148109697ab"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html#ab9c0bb439f98ae11dd178148109697ab">SVF::BVDataPTAImpl::getDiffPTDataTy</a></div><div class="ttdeci">DiffPTDataTy * getDiffPTDataTy() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00178">PointerAnalysisImpl.h:178</a></div></div>
209
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_abd73e930450b7c605f478672bdf9bdae"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#abd73e930450b7c605f478672bdf9bdae">SVF::AndersenBase::MaxPointsToSetSize</a></div><div class="ttdeci">static u32_t MaxPointsToSetSize</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00135">Andersen.h:135</a></div></div>
208
210
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a57c7c12ebcf06f2912e93c802c6cdd02"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a57c7c12ebcf06f2912e93c802c6cdd02">SVF::AndersenWaveDiff::processCast</a></div><div class="ttdeci">virtual void processCast(const ConstraintEdge *)</div><div class="ttdoc">process &quot;bitcast&quot; CopyCGEdge </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00459">Andersen.h:459</a></div></div>
209
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a25de7638a692832f0d4727815ff270f6"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a25de7638a692832f0d4727815ff270f6">SVF::AndersenBase::numOfProcessedGep</a></div><div class="ttdeci">static Size_t numOfProcessedGep</div><div class="ttdoc">Number of processed Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00124">Andersen.h:124</a></div></div>
210
211
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac581e279a4bd69c059b0e5987f839a1f">SVF::PointerAnalysis::AndersenWaveDiffWithType_WPA</a></div><div class="ttdoc">Diff wave propagation with type info andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00073">PointerAnalysis.h:73</a></div></div>
211
212
  <div class="ttc" id="classSVF_1_1Andersen_html_a8ba593bd16d4436310f2f25e75687c57"><div class="ttname"><a href="classSVF_1_1Andersen.html#a8ba593bd16d4436310f2f25e75687c57">SVF::Andersen::addCopyEdge</a></div><div class="ttdeci">virtual bool addCopyEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add copy edge on constraint graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00328">Andersen.h:328</a></div></div>
212
213
  <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="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
214
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_adaf738bee77a4b1fbb8d42911fabdb49"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#adaf738bee77a4b1fbb8d42911fabdb49">SVF::AndersenBase::AveragePointsToSetSize</a></div><div class="ttdeci">static u32_t AveragePointsToSetSize</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00134">Andersen.h:134</a></div></div>
213
215
  <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00303">BasicTypes.h:303</a></div></div>
214
216
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_ad95c842964e6ca46e51fb763fefec585"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#ad95c842964e6ca46e51fb763fefec585">SVF::PointerAnalysis::CallSiteToFunPtrMap</a></div><div class="ttdeci">SVFIR::CallSiteToFunPtrMap CallSiteToFunPtrMap</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00109">PointerAnalysis.h:109</a></div></div>
215
217
  <div class="ttc" id="classSVF_1_1DiffPTData_html_a7784c4a76aa41149975840af8b32c2a9"><div class="ttname"><a href="classSVF_1_1DiffPTData.html#a7784c4a76aa41149975840af8b32c2a9">SVF::DiffPTData::clearPropaPts</a></div><div class="ttdeci">virtual void clearPropaPts(Key &amp;var)=0</div><div class="ttdoc">Clear propagated points-to set of var. </div></div>
@@ -224,12 +226,12 @@ $(function() {
224
226
  <div class="ttc" id="classSVF_1_1AndersenHCD_html_ac2e6a5acffff567e729b6aa9e9beeb55"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#ac2e6a5acffff567e729b6aa9e9beeb55">SVF::AndersenHCD::getOfflineRep</a></div><div class="ttdeci">NodeID getOfflineRep(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00593">Andersen.h:593</a></div></div>
225
227
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85">SVF::PointerAnalysis::PTATY</a></div><div class="ttdeci">PTATY</div><div class="ttdoc">Pointer analysis type list. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00062">PointerAnalysis.h:62</a></div></div>
226
228
  <div class="ttc" id="classSVF_1_1AndersenBase_html_ae21e38a06a4397d11cdd17b0f8f282fd"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ae21e38a06a4397d11cdd17b0f8f282fd">SVF::AndersenBase::consCG</a></div><div class="ttdeci">ConstraintGraph * consCG</div><div class="ttdoc">Constraint Graph. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00143">Andersen.h:143</a></div></div>
227
- <div class="ttc" id="classSVF_1_1AndersenBase_html_ae18183a5d8ebd46fcdb9246bd643b150"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ae18183a5d8ebd46fcdb9246bd643b150">SVF::AndersenBase::numOfProcessedStore</a></div><div class="ttdeci">static Size_t numOfProcessedStore</div><div class="ttdoc">Number of processed Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00126">Andersen.h:126</a></div></div>
228
229
  <div class="ttc" id="classSVF_1_1AndersenHCD_html_ac7629cede14407d42ed5b5ec7e607b0e"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html#ac7629cede14407d42ed5b5ec7e607b0e">SVF::AndersenHCD::AndersenHCD</a></div><div class="ttdeci">AndersenHCD(SVFIR *_pag, PTATY type=AndersenHCD_WPA)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00560">Andersen.h:560</a></div></div>
229
230
  <div class="ttc" id="classSVF_1_1AddrCGEdge_html"><div class="ttname"><a href="classSVF_1_1AddrCGEdge.html">SVF::AddrCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00093">ConsGEdge.h:93</a></div></div>
230
231
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a9a25374fb6d2218c6c59de0482548f49">SVF::PointerAnalysis::Andersen_BASE</a></div><div class="ttdoc">Base Andersen PTA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00065">PointerAnalysis.h:65</a></div></div>
231
232
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0f71e4cd0948b294c7d33a690bde7dbe"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0f71e4cd0948b294c7d33a690bde7dbe">SVF::PointerAnalysis::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00367">PointerAnalysis.h:367</a></div></div>
232
233
  <div class="ttc" id="classSVF_1_1Andersen_html_a7e26ac6fb40684694f7ff2aadfde8bc7"><div class="ttname"><a href="classSVF_1_1Andersen.html#a7e26ac6fb40684694f7ff2aadfde8bc7">SVF::Andersen::computeDiffPts</a></div><div class="ttdeci">virtual void computeDiffPts(NodeID id)</div><div class="ttdoc">Handle diff points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00268">Andersen.h:268</a></div></div>
234
+ <div class="ttc" id="classSVF_1_1AndersenBase_html_aa1246b392aeae1fd10c8a9ebedcc2dd9"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#aa1246b392aeae1fd10c8a9ebedcc2dd9">SVF::AndersenBase::numOfProcessedGep</a></div><div class="ttdeci">static u32_t numOfProcessedGep</div><div class="ttdoc">Number of processed Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00124">Andersen.h:124</a></div></div>
233
235
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">SVF::PointerAnalysis::AndersenSCD_WPA</a></div><div class="ttdoc">Selective cycle detection andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00070">PointerAnalysis.h:70</a></div></div>
234
236
  <div class="ttc" id="classSVF_1_1Andersen_html_a839ed248cf5ff8359217e2029f389d8a"><div class="ttname"><a href="classSVF_1_1Andersen.html#a839ed248cf5ff8359217e2029f389d8a">SVF::Andersen::clearPropaPts</a></div><div class="ttdeci">void clearPropaPts(NodeID src)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00294">Andersen.h:294</a></div></div>
235
237
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html">SVF::ConstraintEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00048">ConsGEdge.h:48</a></div></div>
@@ -244,12 +246,10 @@ $(function() {
244
246
  <div class="ttc" id="classSVF_1_1Andersen_html_ab81b08574f80287803dd43b5ebe2adfa"><div class="ttname"><a href="classSVF_1_1Andersen.html#ab81b08574f80287803dd43b5ebe2adfa">SVF::Andersen::setSCCEdgeFlag</a></div><div class="ttdeci">virtual void setSCCEdgeFlag(ConstraintNode::SCCEdgeFlag f)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00305">Andersen.h:305</a></div></div>
245
247
  <div class="ttc" id="classSVF_1_1Andersen_html_acd2feff818906db49a1bb2d94c33db5f"><div class="ttname"><a href="classSVF_1_1Andersen.html#acd2feff818906db49a1bb2d94c33db5f">SVF::Andersen::sccSubNodes</a></div><div class="ttdeci">NodeBS &amp; sccSubNodes(NodeID repId)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00209">Andersen.h:209</a></div></div>
246
248
  <div class="ttc" id="classSVF_1_1Andersen_html_aad706e332847e6b0892350a05028ba30"><div class="ttname"><a href="classSVF_1_1Andersen.html#aad706e332847e6b0892350a05028ba30">SVF::Andersen::sccRepNode</a></div><div class="ttdeci">NodeID sccRepNode(NodeID id) const</div><div class="ttdoc">SCC methods. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00205">Andersen.h:205</a></div></div>
247
- <div class="ttc" id="classSVF_1_1AndersenBase_html_ad21fc4e60abc4e6030880f8197e1c93f"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#ad21fc4e60abc4e6030880f8197e1c93f">SVF::AndersenBase::numOfFieldExpand</a></div><div class="ttdeci">static Size_t numOfFieldExpand</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00128">Andersen.h:128</a></div></div>
248
249
  <div class="ttc" id="classSVF_1_1AndersenLCD_html_a0c5adfc0876e9bea02fe8ded41baeb91"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html#a0c5adfc0876e9bea02fe8ded41baeb91">SVF::AndersenLCD::addMetEdge</a></div><div class="ttdeci">void addMetEdge(ConstraintEdge *edge)</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00526">Andersen.h:526</a></div></div>
249
250
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a0fd9fca5ed82cf83dbd825d23c63783a"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a0fd9fca5ed82cf83dbd825d23c63783a">SVF::ConstraintNode::sccEdgeFlag</a></div><div class="ttdeci">static SCCEdgeFlag sccEdgeFlag</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00076">ConsGNode.h:76</a></div></div>
250
251
  <div class="ttc" id="classSVF_1_1AndersenHLCD_html_a835f347f1f947ac3bbf5e4c958e59f05"><div class="ttname"><a href="classSVF_1_1AndersenHLCD.html#a835f347f1f947ac3bbf5e4c958e59f05">SVF::AndersenHLCD::createAndersenHLCD</a></div><div class="ttdeci">static AndersenHLCD * createAndersenHLCD(SVFIR *_pag)</div><div class="ttdoc">Create an singleton instance directly instead of invoking llvm pass manager. </div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00637">Andersen.h:637</a></div></div>
251
252
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>
252
- <div class="ttc" id="classSVF_1_1AndersenBase_html_a6da6e1231a46fde6925493045b8b2490"><div class="ttname"><a href="classSVF_1_1AndersenBase.html#a6da6e1231a46fde6925493045b8b2490">SVF::AndersenBase::numOfSCCDetection</a></div><div class="ttdeci">static Size_t numOfSCCDetection</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00130">Andersen.h:130</a></div></div>
253
253
  <div class="ttc" id="namespaceSVF_html_aedf0d6718ca176e0b9e17ab4b30729c6"><div class="ttname"><a href="namespaceSVF.html#aedf0d6718ca176e0b9e17ab4b30729c6">SVF::OrderedMap</a></div><div class="ttdeci">std::map&lt; Key, Value, Compare, Allocator &gt; OrderedMap</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00107">SVFBasicTypes.h:107</a></div></div>
254
254
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html_a5da6abb1a7f0ef3e3871ea6e5a623625"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html#a5da6abb1a7f0ef3e3871ea6e5a623625">SVF::AndersenWaveDiff::releaseAndersenWaveDiff</a></div><div class="ttdeci">static void releaseAndersenWaveDiff()</div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00440">Andersen.h:440</a></div></div>
255
255
  </div><!-- fragment --></div><!-- contents -->