svf-tools 1.0.442 → 1.0.445

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 (518) hide show
  1. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  5. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
  8. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
  9. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
  11. package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
  12. package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +1 -1
  14. package/SVF-doxygen/html/html/BDDExpr_8h_source.html +1 -1
  15. package/SVF-doxygen/html/html/BitVector_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/BitVector_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  18. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +1 -1
  19. package/SVF-doxygen/html/html/CFGNormalizer_8cpp.html +86 -0
  20. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +104 -0
  21. package/SVF-doxygen/html/html/CFGNormalizer_8h.html +95 -0
  22. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +95 -0
  23. package/SVF-doxygen/html/html/CFLAlias_8h.html +100 -0
  24. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +136 -0
  25. package/SVF-doxygen/html/html/CFLGrammar_8cpp.html +81 -0
  26. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +90 -0
  27. package/SVF-doxygen/html/html/CFLGrammar_8h.html +97 -0
  28. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +114 -0
  29. package/SVF-doxygen/html/html/CFLGraph_8cpp.html +96 -0
  30. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +123 -0
  31. package/SVF-doxygen/html/html/CFLGraph_8h.html +124 -0
  32. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +114 -0
  33. package/SVF-doxygen/html/html/CFLSolver_8cpp.html +80 -0
  34. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +107 -0
  35. package/SVF-doxygen/html/html/CFLSolver_8h.html +6 -5
  36. package/SVF-doxygen/html/html/CFLSolver_8h_source.html +27 -33
  37. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -1
  39. package/SVF-doxygen/html/html/CHG_8cpp_source.html +2 -2
  40. package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
  41. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
  42. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  44. package/SVF-doxygen/html/html/CSC_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  47. package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
  49. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +6 -6
  51. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  52. package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
  54. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
  55. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  56. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +1 -1
  57. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  58. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
  59. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  60. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
  61. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  62. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
  63. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  65. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  66. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
  67. package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  71. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +1 -1
  73. package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  75. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  76. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
  77. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  79. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  80. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  81. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  82. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
  84. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
  86. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
  88. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
  89. package/SVF-doxygen/html/html/GrammarBuilder_8cpp.html +94 -0
  90. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +92 -0
  91. package/SVF-doxygen/html/html/GrammarBuilder_8h.html +96 -0
  92. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +87 -0
  93. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  94. package/SVF-doxygen/html/html/Graph2Json_8h_source.html +1 -1
  95. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  96. package/SVF-doxygen/html/html/GraphReachSolver_8h.html +96 -0
  97. package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +113 -0
  98. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  100. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  104. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  105. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  106. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  107. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  108. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  109. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +1 -1
  110. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  111. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  112. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  113. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  114. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
  115. package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
  116. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
  117. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  118. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  119. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  120. package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
  121. package/SVF-doxygen/html/html/MHP_8h_source.html +1 -1
  122. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  124. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  125. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  126. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  127. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  128. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  129. package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
  130. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  131. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  132. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  133. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
  134. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  135. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
  136. package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -1
  137. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +1 -1
  138. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  139. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +1 -1
  140. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  141. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  142. package/SVF-doxygen/html/html/Options_8cpp_source.html +7 -2
  143. package/SVF-doxygen/html/html/Options_8h_source.html +7 -2
  144. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
  145. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  146. package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
  147. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  148. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  149. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  150. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
  151. package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
  152. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  153. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  154. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +1 -1
  155. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
  156. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
  157. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
  158. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
  159. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
  160. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
  161. package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
  162. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
  163. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  164. package/SVF-doxygen/html/html/SCC_8h_source.html +1 -1
  165. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
  166. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  167. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +1 -1
  168. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  169. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  170. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
  171. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
  172. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
  173. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
  174. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
  175. package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
  176. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
  177. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
  178. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
  179. package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
  180. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  181. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  182. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
  183. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  184. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
  185. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
  186. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  187. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
  188. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  189. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  190. package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
  191. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
  192. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
  193. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  194. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  195. package/SVF-doxygen/html/html/SrcSnkDDA_8h.html +3 -3
  196. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +61 -61
  197. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
  198. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  199. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  200. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -1
  201. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  202. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
  203. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +1 -1
  204. package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
  205. package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
  206. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
  207. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  208. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
  209. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  210. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  211. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  212. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
  213. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  214. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +1 -1
  215. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
  216. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  217. package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
  218. package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
  219. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
  220. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
  221. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -1
  222. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +1 -1
  223. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
  224. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  225. package/SVF-doxygen/html/html/WPASolver_8h_source.html +1 -1
  226. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  227. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  228. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  229. package/SVF-doxygen/html/html/annotated.html +302 -288
  230. package/SVF-doxygen/html/html/cfl_8cpp.html +171 -0
  231. package/SVF-doxygen/html/html/cfl_8cpp_source.html +95 -0
  232. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +51 -51
  233. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +3 -3
  234. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +39 -39
  235. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  236. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +56 -56
  237. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +3 -3
  238. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +55 -55
  239. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +3 -3
  240. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +51 -51
  241. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
  242. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +52 -52
  243. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +3 -3
  244. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +59 -59
  245. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
  246. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +53 -53
  247. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  248. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +33 -33
  249. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
  250. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +90 -0
  251. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +458 -0
  252. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +216 -0
  253. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +801 -0
  254. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
  255. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge-members.html +96 -0
  256. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +216 -0
  257. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.png +0 -0
  258. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +110 -0
  259. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +591 -0
  260. package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.png +0 -0
  261. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +122 -0
  262. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +756 -0
  263. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.png +0 -0
  264. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +118 -0
  265. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +257 -0
  266. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.png +0 -0
  267. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +17 -28
  268. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +181 -548
  269. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +36 -36
  270. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +3 -3
  271. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
  272. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
  273. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +57 -57
  274. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
  275. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +55 -55
  276. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +64 -64
  277. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.png +0 -0
  278. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +55 -55
  279. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
  280. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +57 -57
  281. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +66 -66
  282. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.png +0 -0
  283. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +48 -48
  284. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  285. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +47 -47
  286. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
  287. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +59 -59
  288. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +3 -3
  289. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +8 -24
  290. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
  291. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +10 -9
  292. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.png +0 -0
  293. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
  294. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  295. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +93 -0
  296. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +399 -0
  297. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.png +0 -0
  298. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder-members.html +85 -0
  299. package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +226 -0
  300. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +106 -0
  301. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +937 -0
  302. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.png +0 -0
  303. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +55 -55
  304. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +81 -81
  305. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.png +0 -0
  306. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +80 -75
  307. package/SVF-doxygen/html/html/classSVF_1_1Options.html +130 -0
  308. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +25 -25
  309. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +17 -16
  310. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  311. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +51 -51
  312. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +207 -207
  313. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.png +0 -0
  314. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +0 -12
  315. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +42 -42
  316. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +3 -3
  317. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +45 -45
  318. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
  319. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +61 -61
  320. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +5 -5
  321. package/SVF-doxygen/html/html/classes.html +103 -101
  322. package/SVF-doxygen/html/html/cuddInt_8c.html +6 -6
  323. package/SVF-doxygen/html/html/cuddInt_8c_source.html +2 -2
  324. package/SVF-doxygen/html/html/cudd_8h.html +4 -4
  325. package/SVF-doxygen/html/html/dda_8cpp.html +2 -46
  326. package/SVF-doxygen/html/html/dda_8cpp_source.html +4 -5
  327. package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
  328. package/SVF-doxygen/html/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html +2 -0
  329. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  330. package/SVF-doxygen/html/html/dir_97aefd0d527b934f1d99a682da8fe6a9.html +2 -0
  331. package/SVF-doxygen/html/html/dir_98f9a352f241e0e917d4efaa4086f6e8.html +89 -0
  332. package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +91 -0
  333. package/SVF-doxygen/html/html/dir_d44c64559bbebec7f509842c48db8b23.html +2 -0
  334. package/SVF-doxygen/html/html/dir_e6cca4e14eddbb730e0cbe3cab632ce5.html +83 -0
  335. package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +2 -0
  336. package/SVF-doxygen/html/html/files.html +268 -252
  337. package/SVF-doxygen/html/html/functions.html +2 -1
  338. package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
  339. package/SVF-doxygen/html/html/functions_a.html +16 -14
  340. package/SVF-doxygen/html/html/functions_b.html +16 -5
  341. package/SVF-doxygen/html/html/functions_c.html +69 -26
  342. package/SVF-doxygen/html/html/functions_d.html +3 -1
  343. package/SVF-doxygen/html/html/functions_e.html +19 -4
  344. package/SVF-doxygen/html/html/functions_eval.html +0 -6
  345. package/SVF-doxygen/html/html/functions_eval_c.html +9 -0
  346. package/SVF-doxygen/html/html/functions_eval_f.html +0 -3
  347. package/SVF-doxygen/html/html/functions_f.html +28 -21
  348. package/SVF-doxygen/html/html/functions_func.html +18 -10
  349. package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
  350. package/SVF-doxygen/html/html/functions_func_b.html +19 -8
  351. package/SVF-doxygen/html/html/functions_func_c.html +42 -18
  352. package/SVF-doxygen/html/html/functions_func_d.html +4 -2
  353. package/SVF-doxygen/html/html/functions_func_e.html +10 -1
  354. package/SVF-doxygen/html/html/functions_func_f.html +6 -3
  355. package/SVF-doxygen/html/html/functions_func_g.html +56 -10
  356. package/SVF-doxygen/html/html/functions_func_h.html +12 -2
  357. package/SVF-doxygen/html/html/functions_func_i.html +19 -9
  358. package/SVF-doxygen/html/html/functions_func_n.html +7 -1
  359. package/SVF-doxygen/html/html/functions_func_p.html +8 -4
  360. package/SVF-doxygen/html/html/functions_func_s.html +20 -6
  361. package/SVF-doxygen/html/html/functions_func_v.html +3 -2
  362. package/SVF-doxygen/html/html/functions_g.html +86 -21
  363. package/SVF-doxygen/html/html/functions_h.html +15 -5
  364. package/SVF-doxygen/html/html/functions_i.html +27 -12
  365. package/SVF-doxygen/html/html/functions_l.html +5 -2
  366. package/SVF-doxygen/html/html/functions_n.html +22 -7
  367. package/SVF-doxygen/html/html/functions_o.html +6 -6
  368. package/SVF-doxygen/html/html/functions_p.html +23 -16
  369. package/SVF-doxygen/html/html/functions_r.html +11 -6
  370. package/SVF-doxygen/html/html/functions_s.html +53 -17
  371. package/SVF-doxygen/html/html/functions_t.html +11 -7
  372. package/SVF-doxygen/html/html/functions_type_c.html +5 -1
  373. package/SVF-doxygen/html/html/functions_type_g.html +6 -3
  374. package/SVF-doxygen/html/html/functions_type_i.html +4 -2
  375. package/SVF-doxygen/html/html/functions_type_n.html +6 -3
  376. package/SVF-doxygen/html/html/functions_type_p.html +9 -0
  377. package/SVF-doxygen/html/html/functions_type_s.html +6 -0
  378. package/SVF-doxygen/html/html/functions_type_w.html +3 -1
  379. package/SVF-doxygen/html/html/functions_v.html +2 -1
  380. package/SVF-doxygen/html/html/functions_vars.html +2 -1
  381. package/SVF-doxygen/html/html/functions_vars_c.html +6 -0
  382. package/SVF-doxygen/html/html/functions_vars_e.html +6 -0
  383. package/SVF-doxygen/html/html/functions_vars_f.html +9 -0
  384. package/SVF-doxygen/html/html/functions_vars_g.html +17 -1
  385. package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
  386. package/SVF-doxygen/html/html/functions_vars_l.html +3 -0
  387. package/SVF-doxygen/html/html/functions_vars_n.html +6 -0
  388. package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
  389. package/SVF-doxygen/html/html/functions_vars_s.html +16 -0
  390. package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
  391. package/SVF-doxygen/html/html/functions_vars_w.html +3 -1
  392. package/SVF-doxygen/html/html/functions_w.html +15 -1
  393. package/SVF-doxygen/html/html/globals_func_i.html +3 -10
  394. package/SVF-doxygen/html/html/globals_func_m.html +12 -11
  395. package/SVF-doxygen/html/html/globals_func_s.html +1 -0
  396. package/SVF-doxygen/html/html/globals_i.html +3 -10
  397. package/SVF-doxygen/html/html/globals_m.html +14 -13
  398. package/SVF-doxygen/html/html/globals_s.html +8 -7
  399. package/SVF-doxygen/html/html/hierarchy.html +433 -417
  400. package/SVF-doxygen/html/html/mta_8cpp.html +2 -46
  401. package/SVF-doxygen/html/html/mta_8cpp_source.html +3 -4
  402. package/SVF-doxygen/html/html/namespaceSVF.html +83 -6
  403. package/SVF-doxygen/html/html/namespacellvm.html +9 -0
  404. package/SVF-doxygen/html/html/namespacemembers_c.html +1 -1
  405. package/SVF-doxygen/html/html/namespacemembers_g.html +11 -2
  406. package/SVF-doxygen/html/html/namespacemembers_type.html +10 -1
  407. package/SVF-doxygen/html/html/saber_8cpp.html +2 -46
  408. package/SVF-doxygen/html/html/saber_8cpp_source.html +4 -5
  409. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  410. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  411. package/SVF-doxygen/html/html/search/all_10.js +8 -6
  412. package/SVF-doxygen/html/html/search/all_12.js +2 -1
  413. package/SVF-doxygen/html/html/search/all_13.js +20 -11
  414. package/SVF-doxygen/html/html/search/all_14.js +5 -3
  415. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  416. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  417. package/SVF-doxygen/html/html/search/all_1b.js +6 -0
  418. package/SVF-doxygen/html/html/search/all_2.js +6 -4
  419. package/SVF-doxygen/html/html/search/all_3.js +27 -4
  420. package/SVF-doxygen/html/html/search/all_4.js +3 -2
  421. package/SVF-doxygen/html/html/search/all_5.js +5 -0
  422. package/SVF-doxygen/html/html/search/all_6.js +8 -5
  423. package/SVF-doxygen/html/html/search/all_7.js +40 -13
  424. package/SVF-doxygen/html/html/search/all_8.js +4 -1
  425. package/SVF-doxygen/html/html/search/all_9.js +9 -7
  426. package/SVF-doxygen/html/html/search/all_c.js +2 -1
  427. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  428. package/SVF-doxygen/html/html/search/all_e.js +9 -5
  429. package/SVF-doxygen/html/html/search/all_f.js +4 -4
  430. package/SVF-doxygen/html/html/search/classes_2.js +7 -0
  431. package/SVF-doxygen/html/html/search/classes_3.js +1 -0
  432. package/SVF-doxygen/html/html/search/classes_5.js +1 -0
  433. package/SVF-doxygen/html/html/search/classes_6.js +7 -0
  434. package/SVF-doxygen/html/html/search/enumvalues_0.js +0 -2
  435. package/SVF-doxygen/html/html/search/enumvalues_2.js +3 -0
  436. package/SVF-doxygen/html/html/search/enumvalues_5.js +0 -1
  437. package/SVF-doxygen/html/html/search/files_2.js +11 -1
  438. package/SVF-doxygen/html/html/search/files_6.js +4 -1
  439. package/SVF-doxygen/html/html/search/functions_0.js +4 -2
  440. package/SVF-doxygen/html/html/search/functions_1.js +6 -4
  441. package/SVF-doxygen/html/html/search/functions_10.js +7 -3
  442. package/SVF-doxygen/html/html/search/functions_13.js +1 -1
  443. package/SVF-doxygen/html/html/search/functions_16.js +6 -0
  444. package/SVF-doxygen/html/html/search/functions_2.js +8 -0
  445. package/SVF-doxygen/html/html/search/functions_3.js +2 -2
  446. package/SVF-doxygen/html/html/search/functions_4.js +3 -0
  447. package/SVF-doxygen/html/html/search/functions_5.js +3 -3
  448. package/SVF-doxygen/html/html/search/functions_6.js +22 -10
  449. package/SVF-doxygen/html/html/search/functions_7.js +4 -1
  450. package/SVF-doxygen/html/html/search/functions_8.js +5 -4
  451. package/SVF-doxygen/html/html/search/functions_b.js +1 -1
  452. package/SVF-doxygen/html/html/search/functions_c.js +2 -0
  453. package/SVF-doxygen/html/html/search/functions_e.js +2 -2
  454. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -0
  455. package/SVF-doxygen/html/html/search/typedefs_15.js +1 -1
  456. package/SVF-doxygen/html/html/search/typedefs_2.js +3 -2
  457. package/SVF-doxygen/html/html/search/typedefs_6.js +6 -3
  458. package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
  459. package/SVF-doxygen/html/html/search/typedefs_d.js +3 -3
  460. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -0
  461. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  462. package/SVF-doxygen/html/html/search/variables_12.js +1 -0
  463. package/SVF-doxygen/html/html/search/variables_13.js +5 -0
  464. package/SVF-doxygen/html/html/search/variables_14.js +3 -1
  465. package/SVF-doxygen/html/html/search/variables_17.js +1 -1
  466. package/SVF-doxygen/html/html/search/variables_3.js +2 -0
  467. package/SVF-doxygen/html/html/search/variables_5.js +3 -1
  468. package/SVF-doxygen/html/html/search/variables_6.js +3 -0
  469. package/SVF-doxygen/html/html/search/variables_7.js +5 -1
  470. package/SVF-doxygen/html/html/search/variables_9.js +1 -0
  471. package/SVF-doxygen/html/html/search/variables_c.js +1 -0
  472. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  473. package/SVF-doxygen/html/html/search/variables_e.js +2 -0
  474. package/SVF-doxygen/html/html/st_8c.html +4 -4
  475. package/SVF-doxygen/html/html/st_8c_source.html +2 -2
  476. package/SVF-doxygen/html/html/st_8h.html +4 -4
  477. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +87 -0
  478. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +381 -0
  479. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
  480. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +100 -0
  481. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
  482. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
  483. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +122 -0
  484. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
  485. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +96 -0
  486. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
  487. package/SVF-doxygen/html/html/svf-ex_8cpp.html +10 -54
  488. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -9
  489. package/SVF-doxygen/html/html/tools_2CFL_2CMakeLists_8txt.html +102 -0
  490. package/SVF-doxygen/html/html/wpa_8cpp.html +2 -46
  491. package/SVF-doxygen/html/html/wpa_8cpp_source.html +3 -4
  492. package/include/CFL/CFGNormalizer.h +70 -0
  493. package/include/CFL/CFLAlias.h +124 -0
  494. package/include/CFL/CFLGrammar.h +127 -0
  495. package/include/CFL/CFLSolver.h +94 -0
  496. package/include/CFL/GrammarBuilder.h +65 -0
  497. package/include/Graphs/CFLGraph.h +175 -0
  498. package/include/Graphs/IRGraph.h +1 -1
  499. package/include/MemoryModel/PointerAnalysis.h +3 -3
  500. package/include/SABER/SrcSnkDDA.h +3 -2
  501. package/include/Util/GraphReachSolver.h +186 -0
  502. package/include/Util/Options.h +6 -0
  503. package/lib/CFL/CFGNormalizer.cpp +329 -0
  504. package/lib/CFL/CFLGrammar.cpp +101 -0
  505. package/lib/CFL/CFLSolver.cpp +106 -0
  506. package/lib/CFL/GrammarBuilder.cpp +155 -0
  507. package/lib/CMakeLists.txt +1 -0
  508. package/lib/Graphs/CFLGraph.cpp +225 -0
  509. package/lib/Util/Options.cpp +31 -0
  510. package/package.json +1 -1
  511. package/tools/CFL/CMakeLists.txt +12 -0
  512. package/tools/CFL/cfl.cpp +80 -0
  513. package/tools/CMakeLists.txt +1 -0
  514. package/tools/DDA/dda.cpp +0 -3
  515. package/tools/Example/svf-ex.cpp +0 -3
  516. package/tools/MTA/mta.cpp +0 -4
  517. package/tools/SABER/saber.cpp +0 -3
  518. package/tools/WPA/wpa.cpp +0 -4
@@ -66,105 +66,105 @@ $(function() {
66
66
  <div class="title">SrcSnkDDA.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SrcSnkDDA_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">//===- SrcSnkDDA.h -- Source-sink analyzer-----------------------------------//</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"> * SrcSnkDDA.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: Apr 1, 2014</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 SRCSNKANALYSIS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define SRCSNKANALYSIS_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="SrcSnkSolver_8h.html">SrcSnkSolver.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="SVFGOPT_8h.html">Graphs/SVFGOPT.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="ProgSlice_8h.html">SABER/ProgSlice.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="SaberSVFGBuilder_8h.html">SABER/SaberSVFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a60a528875b7fdc441fb9d348f07a57f8"> 41</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SrcSnkSolver.html">SrcSnkSolver&lt;SVFG*,CxtDPItem&gt;</a> <a class="code" href="namespaceSVF.html#a60a528875b7fdc441fb9d348f07a57f8">CFLSrcSnkSolver</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html"> 46</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SrcSnkDDA.html">SrcSnkDDA</a> : <span class="keyword">public</span> CFLSrcSnkSolver</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;{</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a19f02a14ee669fadc37fde3816fa2f84"> 50</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a">ProgSlice::SVFGNodeSet</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19f02a14ee669fadc37fde3816fa2f84">SVFGNodeSet</a>;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ac96c2f09dee260b4378eae7eb67b21e4"> 51</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFGNode*,ProgSlice*&gt;</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac96c2f09dee260b4378eae7eb67b21e4">SVFGNodeToSliceMap</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58"> 52</a></span>&#160; <span class="keyword">typedef</span> SVFGNodeSet::const_iterator <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a83d5ccf0836f8f751aff078f88328cca"> 53</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CxtDPItem.html">CxtDPItem</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a83d5ccf0836f8f751aff078f88328cca">DPIm</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab3cc8f13ea8de2db4ba874280802667a"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;DPIm&gt;</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab3cc8f13ea8de2db4ba874280802667a">DPImSet</a>; </div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a4f9de61860db86668606f0c276ce8117"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFGNode*, DPImSet&gt;</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4f9de61860db86668606f0c276ce8117">SVFGNodeToDPItemsMap</a>; </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">CallSiteSet</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6">SVFGNodeBS</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a3c0d8850c4dae49a760ce5f80fb8822a"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">ProgSlice::VFWorkList</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3c0d8850c4dae49a760ce5f80fb8822a">WorkList</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;<span class="keyword">private</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d"> 61</a></span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d">_curSlice</a>; </div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a96c41d03d2615f952b58dca327a2866c"> 62</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1SrcSnkDDA.html#a96c41d03d2615f952b58dca327a2866c">sources</a>; </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#aaffd4b48be1f99e0450b23f20f034b1e"> 63</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1SrcSnkDDA.html#aaffd4b48be1f99e0450b23f20f034b1e">sinks</a>; </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a3008dc334d4500516507544a86ec6d9c"> 64</a></span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3008dc334d4500516507544a86ec6d9c">pathCondAllocator</a>;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a5f4f97bc480e899004b0432a78fd94a4"> 65</a></span>&#160; SVFGNodeToDPItemsMap <a class="code" href="classSVF_1_1SrcSnkDDA.html#a5f4f97bc480e899004b0432a78fd94a4">nodeToDPItemsMap</a>; </div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a2349db6c540e418600e2fdbe2e665628"> 66</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1SrcSnkDDA.html#a2349db6c540e418600e2fdbe2e665628">visitedSet</a>; </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab6803f0a2b3507213ad2979b9b12f700"> 69</a></span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html">SaberSVFGBuilder</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab6803f0a2b3507213ad2979b9b12f700">memSSA</a>;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4"> 70</a></span>&#160; <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4">svfg</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a"> 71</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a">ptaCallGraph</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a73f6ddd4ba868e203109c52e4f3600bd"> 76</a></span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a73f6ddd4ba868e203109c52e4f3600bd">SrcSnkDDA</a>() : _curSlice(nullptr), svfg(nullptr), ptaCallGraph(nullptr)</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; pathCondAllocator = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>();</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a0181630a05f915eb35a88540af6919df"> 81</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0181630a05f915eb35a88540af6919df">~SrcSnkDDA</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">if</span> (svfg != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4">svfg</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; svfg = <span class="keyword">nullptr</span>;</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">if</span> (_curSlice != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d">_curSlice</a>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; _curSlice = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">//if (ptaCallGraph != nullptr)</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">// delete ptaCallGraph;</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">//ptaCallGraph = nullptr;</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="comment">//if(pathCondAllocator)</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">// delete pathCondAllocator;</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">//pathCondAllocator = nullptr;</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</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"> 102</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">analyze</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8883b9a42106ed8c55835d2ba9a579cd">initialize</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</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_1SrcSnkDDA.html#af6ee1f79b67c736ceeb591d0cdba4b06"> 108</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#af6ee1f79b67c736ceeb591d0cdba4b06">finalize</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_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">dumpSlices</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="l00114"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1"> 114</a></span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">getPAG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161"> 120</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkSolver.html#ae66ed69eb3412c2eef14ef2f86a34c6c">graph</a>();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8"> 126</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8">getCallgraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a">ptaCallGraph</a>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00132"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a391bb031b2f244e930b266a29cda0af7"> 132</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a391bb031b2f244e930b266a29cda0af7">isGlobalSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> memSSA.<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#afbcd75844af51ff51c09c377f80a49cf">isGlobalSVFGNode</a>(node);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">setCurSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad50e479db8f0733326974709d6ffe653"> 140</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad50e479db8f0733326974709d6ffe653">getCurSlice</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d">_curSlice</a>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; }</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a6caea43079963b13e9a7a017074bdbb7"> 144</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a6caea43079963b13e9a7a017074bdbb7">addSinkToCurSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; {</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed">addToSinks</a>(node);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f">addToCurForwardSlice</a>(node);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; }</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a4bde70a5d9dbf5a9234a93aaeaaacb94"> 149</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4bde70a5d9dbf5a9234a93aaeaaacb94">isInCurForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">return</span> _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6">inForwardSlice</a>(node);</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"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a4cb2c14431fc432e84d382f8eeb24fe2"> 153</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4cb2c14431fc432e84d382f8eeb24fe2">isInCurBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(node);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; }</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f"> 157</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f">addToCurForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd">addToForwardSlice</a>(node);</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"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad28ffe435790d36ad872cddc213ea799"> 161</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad28ffe435790d36ad872cddc213ea799">addToCurBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; {</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1">addToBackwardSlice</a>(node);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1c8f91ffa0b9f01d51c8cd5e14f076d5">initSrcs</a>() = 0;</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_1SrcSnkDDA.html#a0f6cfa30c346aab1fb03a44e47c32559">initSnks</a>() = 0;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#af5a96bfc0f214a14dd2b3e1a46177d3c"> 171</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#af5a96bfc0f214a14dd2b3e1a46177d3c">isSourceLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun) {</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab392142d8b4610635aef32c2f7ea8f91"> 175</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab392142d8b4610635aef32c2f7ea8f91">isSinkLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun) {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; }</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a815e39e7c65ed9a250cafe40f74a4ba1"> 179</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a815e39e7c65ed9a250cafe40f74a4ba1">isSource</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef">getSources</a>().find(node)!=<a class="code" href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef">getSources</a>().end();</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a703bfc5c825d66fdb0d74eb89d181581"> 183</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a703bfc5c825d66fdb0d74eb89d181581">isSink</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const </span>{</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96">getSinks</a>().find(node)!=<a class="code" href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96">getSinks</a>().end();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">isInAWrapper</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, CallSiteSet&amp; csIdSet);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#aa87e9ca3c9a9dc6ae5cc88a0182a8154">reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice) = 0;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef"> 196</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNodeSet&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef">getSources</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a96c41d03d2615f952b58dca327a2866c">sources</a>;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a0515c9079f28f8c5d4f0f9a2fc39a137"> 200</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0515c9079f28f8c5d4f0f9a2fc39a137">sourcesBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> sources.begin();</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad0cb9de24cbc99d148f63b694dc3908e"> 204</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad0cb9de24cbc99d148f63b694dc3908e">sourcesEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> sources.end();</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; }</div><div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79"> 208</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79">addToSources</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; sources.insert(node);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96"> 212</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNodeSet&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96">getSinks</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#aaffd4b48be1f99e0450b23f20f034b1e">sinks</a>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd"> 216</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd">sinksBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> sinks.begin();</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_1SrcSnkDDA.html#aaabc8d3aed17c8a35ef37d878f141412"> 220</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1SrcSnkDDA.html#aaabc8d3aed17c8a35ef37d878f141412">sinksEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> sinks.end();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; }</div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8"> 224</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8">addToSinks</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; sinks.insert(node);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e"> 231</a></span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e">getPathAllocator</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3008dc334d4500516507544a86ec6d9c">pathCondAllocator</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"> 235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#abf20d02932b7ca983b9bd790812b1f40"> 238</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#abf20d02932b7ca983b9bd790812b1f40">FWProcessCurNode</a>(<span class="keyword">const</span> DPIm&amp; item)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = <a class="code" href="classSVF_1_1SrcSnkSolver.html#a18008d5496010aa5f54aade230bd64ff">getNode</a>(item.<a class="code" href="classSVF_1_1DPItem.html#a03a90eca842c0e83d874902103f6fdb2">getCurNodeID</a>());</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a703bfc5c825d66fdb0d74eb89d181581">isSink</a>(node))</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; {</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a6caea43079963b13e9a7a017074bdbb7">addSinkToCurSlice</a>(node);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d">setPartialReachable</a>();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; }</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f">addToCurForwardSlice</a>(node);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#adc2ac209e2d5e561bcb594db4c77051b"> 250</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#adc2ac209e2d5e561bcb594db4c77051b">BWProcessCurNode</a>(<span class="keyword">const</span> DPIm&amp; item)</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; {</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = <a class="code" href="classSVF_1_1SrcSnkSolver.html#a18008d5496010aa5f54aade230bd64ff">getNode</a>(item.<a class="code" href="classSVF_1_1DPItem.html#a03a90eca842c0e83d874902103f6fdb2">getCurNodeID</a>());</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a4bde70a5d9dbf5a9234a93aaeaaacb94">isInCurForwardSlice</a>(node))</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; {</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad28ffe435790d36ad872cddc213ea799">addToCurBackwardSlice</a>(node);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; }</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad2203ca5bd08c6fbebd31a8a010edebb">FWProcessOutgoingEdge</a>(<span class="keyword">const</span> DPIm&amp; item, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1ea0d4c4e53ff6986dd50d624ba2bff5">BWProcessIncomingEdge</a>(<span class="keyword">const</span> DPIm&amp; item, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge);</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_1SrcSnkDDA.html#a8c86d30498e86745883fbaea4f530eae"> 264</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8c86d30498e86745883fbaea4f530eae">forwardVisited</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <span class="keyword">const</span> DPIm&amp; item)</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; {</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; SVFGNodeToDPItemsMap::const_iterator it = nodeToDPItemsMap.find(node);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <span class="keywordflow">if</span>(it!=nodeToDPItemsMap.end())</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> it-&gt;second.find(item)!=it-&gt;second.end();</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a51c65cb4b8ea107161e112a8fd3fb7d4"> 272</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a51c65cb4b8ea107161e112a8fd3fb7d4">addForwardVisited</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <span class="keyword">const</span> DPIm&amp; item)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; nodeToDPItemsMap[node].insert(item);</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_1SrcSnkDDA.html#a32cc8a131b2448b5e8e1fe65d99fd286"> 276</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a32cc8a131b2448b5e8e1fe65d99fd286">backwardVisited</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> visitedSet.find(node)!=visitedSet.end();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#aa061e2d72d3045c9712512c6df002544"> 280</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#aa061e2d72d3045c9712512c6df002544">addBackwardVisited</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; visitedSet.insert(node);</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"><a class="line" href="classSVF_1_1SrcSnkDDA.html#af048c70d7e68da22835570a3381eb14d"> 284</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#af048c70d7e68da22835570a3381eb14d">clearVisitedMap</a>()</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; {</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; nodeToDPItemsMap.clear();</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; visitedSet.clear();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0"> 292</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>()</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"> 294</span>&#160; <span class="keywordflow">return</span> _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e">isAllReachable</a>();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; }</div><div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7"> 297</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>()</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2">isPartialReachable</a>();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</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"> 303</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">dumpSlices</a>();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">annotateSlice</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice);</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ae3d665ff1e796348131e797eb0283bfb">printBDDStat</a>();</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;};</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SRCSNKDDA_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_afbcd75844af51ff51c09c377f80a49cf"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#afbcd75844af51ff51c09c377f80a49cf">SVF::SaberSVFGBuilder::isGlobalSVFGNode</a></div><div class="ttdeci">bool isGlobalSVFGNode(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00054">SaberSVFGBuilder.h:54</a></div></div>
70
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4cb2c14431fc432e84d382f8eeb24fe2"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4cb2c14431fc432e84d382f8eeb24fe2">SVF::SrcSnkDDA::isInCurBackwardSlice</a></div><div class="ttdeci">bool isInCurBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00153">SrcSnkDDA.h:153</a></div></div>
71
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a51c65cb4b8ea107161e112a8fd3fb7d4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a51c65cb4b8ea107161e112a8fd3fb7d4">SVF::SrcSnkDDA::addForwardVisited</a></div><div class="ttdeci">void addForwardVisited(const SVFGNode *node, const DPIm &amp;item)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00272">SrcSnkDDA.h:272</a></div></div>
72
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a2349db6c540e418600e2fdbe2e665628"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a2349db6c540e418600e2fdbe2e665628">SVF::SrcSnkDDA::visitedSet</a></div><div class="ttdeci">SVFGNodeSet visitedSet</div><div class="ttdoc">record backward visited nodes </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00066">SrcSnkDDA.h:66</a></div></div>
73
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_acdffb63fd5ae67306640bfe2fcfc3a79"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79">SVF::SrcSnkDDA::addToSources</a></div><div class="ttdeci">void addToSources(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00208">SrcSnkDDA.h:208</a></div></div>
74
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a6caea43079963b13e9a7a017074bdbb7"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a6caea43079963b13e9a7a017074bdbb7">SVF::SrcSnkDDA::addSinkToCurSlice</a></div><div class="ttdeci">void addSinkToCurSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00144">SrcSnkDDA.h:144</a></div></div>
69
+ <a href="SrcSnkDDA_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">//===- SrcSnkDDA.h -- Source-sink analyzer-----------------------------------//</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"> * SrcSnkDDA.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: Apr 1, 2014</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 SRCSNKANALYSIS_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define SRCSNKANALYSIS_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;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="GraphReachSolver_8h.html">Util/GraphReachSolver.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="SVFGOPT_8h.html">Graphs/SVFGOPT.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="ProgSlice_8h.html">SABER/ProgSlice.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="SaberSVFGBuilder_8h.html">SABER/SaberSVFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="namespaceSVF.html#a6bdd04381cb268e6c957a5cc528ebf67"> 42</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GraphReachSolver.html">GraphReachSolver&lt;SVFG*,CxtDPItem&gt;</a> <a class="code" href="namespaceSVF.html#a6bdd04381cb268e6c957a5cc528ebf67">CFLSrcSnkSolver</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html"> 47</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1SrcSnkDDA.html">SrcSnkDDA</a> : <span class="keyword">public</span> CFLSrcSnkSolver</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;{</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a19f02a14ee669fadc37fde3816fa2f84"> 51</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a">ProgSlice::SVFGNodeSet</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19f02a14ee669fadc37fde3816fa2f84">SVFGNodeSet</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ac96c2f09dee260b4378eae7eb67b21e4"> 52</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFGNode*,ProgSlice*&gt;</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac96c2f09dee260b4378eae7eb67b21e4">SVFGNodeToSliceMap</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58"> 53</a></span>&#160; <span class="keyword">typedef</span> SVFGNodeSet::const_iterator <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVFGNodeSetIter</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a83d5ccf0836f8f751aff078f88328cca"> 54</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1CxtDPItem.html">CxtDPItem</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a83d5ccf0836f8f751aff078f88328cca">DPIm</a>;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab3cc8f13ea8de2db4ba874280802667a"> 55</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;DPIm&gt;</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab3cc8f13ea8de2db4ba874280802667a">DPImSet</a>; </div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a4f9de61860db86668606f0c276ce8117"> 56</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFGNode*, DPImSet&gt;</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4f9de61860db86668606f0c276ce8117">SVFGNodeToDPItemsMap</a>; </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165"> 57</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">CallSiteSet</a>;</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6"> 58</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6">SVFGNodeBS</a>;</div><div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a3c0d8850c4dae49a760ce5f80fb8822a"> 59</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">ProgSlice::VFWorkList</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3c0d8850c4dae49a760ce5f80fb8822a">WorkList</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d"> 62</a></span>&#160; <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d">_curSlice</a>; </div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a96c41d03d2615f952b58dca327a2866c"> 63</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1SrcSnkDDA.html#a96c41d03d2615f952b58dca327a2866c">sources</a>; </div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#aaffd4b48be1f99e0450b23f20f034b1e"> 64</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1SrcSnkDDA.html#aaffd4b48be1f99e0450b23f20f034b1e">sinks</a>; </div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a3008dc334d4500516507544a86ec6d9c"> 65</a></span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3008dc334d4500516507544a86ec6d9c">pathCondAllocator</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a5f4f97bc480e899004b0432a78fd94a4"> 66</a></span>&#160; SVFGNodeToDPItemsMap <a class="code" href="classSVF_1_1SrcSnkDDA.html#a5f4f97bc480e899004b0432a78fd94a4">nodeToDPItemsMap</a>; </div><div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a2349db6c540e418600e2fdbe2e665628"> 67</a></span>&#160; SVFGNodeSet <a class="code" href="classSVF_1_1SrcSnkDDA.html#a2349db6c540e418600e2fdbe2e665628">visitedSet</a>; </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab6803f0a2b3507213ad2979b9b12f700"> 70</a></span>&#160; <a class="code" href="classSVF_1_1SaberSVFGBuilder.html">SaberSVFGBuilder</a> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab6803f0a2b3507213ad2979b9b12f700">memSSA</a>;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4"> 71</a></span>&#160; <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4">svfg</a>;</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a"> 72</a></span>&#160; <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a">ptaCallGraph</a>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a73f6ddd4ba868e203109c52e4f3600bd"> 77</a></span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a73f6ddd4ba868e203109c52e4f3600bd">SrcSnkDDA</a>() : _curSlice(nullptr), svfg(nullptr), ptaCallGraph(nullptr)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; pathCondAllocator = <span class="keyword">new</span> <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a0181630a05f915eb35a88540af6919df"> 82</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0181630a05f915eb35a88540af6919df">~SrcSnkDDA</a>()</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">if</span> (svfg != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4">svfg</a>;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; svfg = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span> (_curSlice != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d">_curSlice</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; _curSlice = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="comment">//if (ptaCallGraph != nullptr)</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="comment">// delete ptaCallGraph;</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="comment">//ptaCallGraph = nullptr;</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="comment">//if(pathCondAllocator)</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="comment">// delete pathCondAllocator;</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="comment">//pathCondAllocator = nullptr;</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; }</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">analyze</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8883b9a42106ed8c55835d2ba9a579cd">initialize</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#af6ee1f79b67c736ceeb591d0cdba4b06"> 109</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#af6ee1f79b67c736ceeb591d0cdba4b06">finalize</a>()</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">dumpSlices</a>();</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;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1"> 115</a></span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">getPAG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>();</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161"> 121</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFG.html">SVFG</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">getSVFG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GraphReachSolver.html#a88775eedbbc3039caac1e350b48aa838">graph</a>();</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8"> 127</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1PTACallGraph.html">PTACallGraph</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8">getCallgraph</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a">ptaCallGraph</a>;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;</div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a391bb031b2f244e930b266a29cda0af7"> 133</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a391bb031b2f244e930b266a29cda0af7">isGlobalSVFGNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const</span></div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> memSSA.<a class="code" href="classSVF_1_1SaberSVFGBuilder.html#afbcd75844af51ff51c09c377f80a49cf">isGlobalSVFGNode</a>(node);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">setCurSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src);</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"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad50e479db8f0733326974709d6ffe653"> 141</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad50e479db8f0733326974709d6ffe653">getCurSlice</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d">_curSlice</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"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a6caea43079963b13e9a7a017074bdbb7"> 145</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a6caea43079963b13e9a7a017074bdbb7">addSinkToCurSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed">addToSinks</a>(node);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f">addToCurForwardSlice</a>(node);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a4bde70a5d9dbf5a9234a93aaeaaacb94"> 150</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4bde70a5d9dbf5a9234a93aaeaaacb94">isInCurForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</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; <span class="keywordflow">return</span> _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6">inForwardSlice</a>(node);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a4cb2c14431fc432e84d382f8eeb24fe2"> 154</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a4cb2c14431fc432e84d382f8eeb24fe2">isInCurBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordflow">return</span> _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">inBackwardSlice</a>(node);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; }</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f"> 158</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f">addToCurForwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd">addToForwardSlice</a>(node);</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"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ad28ffe435790d36ad872cddc213ea799"> 162</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad28ffe435790d36ad872cddc213ea799">addToCurBackwardSlice</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; {</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1">addToBackwardSlice</a>(node);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</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_1SrcSnkDDA.html#a1c8f91ffa0b9f01d51c8cd5e14f076d5">initSrcs</a>() = 0;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0f6cfa30c346aab1fb03a44e47c32559">initSnks</a>() = 0;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#af5a96bfc0f214a14dd2b3e1a46177d3c"> 172</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#af5a96bfc0f214a14dd2b3e1a46177d3c">isSourceLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun) {</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#ab392142d8b4610635aef32c2f7ea8f91"> 176</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ab392142d8b4610635aef32c2f7ea8f91">isSinkLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun) {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a815e39e7c65ed9a250cafe40f74a4ba1"> 180</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a815e39e7c65ed9a250cafe40f74a4ba1">isSource</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const </span>{</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef">getSources</a>().find(node)!=<a class="code" href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef">getSources</a>().end();</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a703bfc5c825d66fdb0d74eb89d181581"> 184</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a703bfc5c825d66fdb0d74eb89d181581">isSink</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)<span class="keyword"> const </span>{</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96">getSinks</a>().find(node)!=<a class="code" href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96">getSinks</a>().end();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">isInAWrapper</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, CallSiteSet&amp; csIdSet);</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#aa87e9ca3c9a9dc6ae5cc88a0182a8154">reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice) = 0;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef"> 197</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNodeSet&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef">getSources</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a96c41d03d2615f952b58dca327a2866c">sources</a>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; }</div><div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a0515c9079f28f8c5d4f0f9a2fc39a137"> 201</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1SrcSnkDDA.html#a0515c9079f28f8c5d4f0f9a2fc39a137">sourcesBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">return</span> sources.begin();</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_1SrcSnkDDA.html#ad0cb9de24cbc99d148f63b694dc3908e"> 205</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad0cb9de24cbc99d148f63b694dc3908e">sourcesEnd</a>()<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> sources.end();</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_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79"> 209</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79">addToSources</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</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; sources.insert(node);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96"> 213</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> SVFGNodeSet&amp; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96">getSinks</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#aaffd4b48be1f99e0450b23f20f034b1e">sinks</a>;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; }</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd"> 217</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd">sinksBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">return</span> sinks.begin();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#aaabc8d3aed17c8a35ef37d878f141412"> 221</a></span>&#160; <span class="keyword">inline</span> SVFGNodeSetIter <a class="code" href="classSVF_1_1SrcSnkDDA.html#aaabc8d3aed17c8a35ef37d878f141412">sinksEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keywordflow">return</span> sinks.end();</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_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8"> 225</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8">addToSinks</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</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; sinks.insert(node);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e"> 232</a></span>&#160; <a class="code" href="classSVF_1_1PathCondAllocator.html">PathCondAllocator</a>* <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e">getPathAllocator</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a3008dc334d4500516507544a86ec6d9c">pathCondAllocator</a>;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; }</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;<span class="keyword">protected</span>:</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#abf20d02932b7ca983b9bd790812b1f40"> 239</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#abf20d02932b7ca983b9bd790812b1f40">FWProcessCurNode</a>(<span class="keyword">const</span> DPIm&amp; item)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; {</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = <a class="code" href="classSVF_1_1GraphReachSolver.html#a0b7f0923105dfb198a2a8428d6c1ca98">getNode</a>(item.<a class="code" href="classSVF_1_1DPItem.html#a03a90eca842c0e83d874902103f6fdb2">getCurNodeID</a>());</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a703bfc5c825d66fdb0d74eb89d181581">isSink</a>(node))</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; {</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a6caea43079963b13e9a7a017074bdbb7">addSinkToCurSlice</a>(node);</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d">setPartialReachable</a>();</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f">addToCurForwardSlice</a>(node);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#adc2ac209e2d5e561bcb594db4c77051b"> 251</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#adc2ac209e2d5e561bcb594db4c77051b">BWProcessCurNode</a>(<span class="keyword">const</span> DPIm&amp; item)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node = <a class="code" href="classSVF_1_1GraphReachSolver.html#a0b7f0923105dfb198a2a8428d6c1ca98">getNode</a>(item.<a class="code" href="classSVF_1_1DPItem.html#a03a90eca842c0e83d874902103f6fdb2">getCurNodeID</a>());</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1SrcSnkDDA.html#a4bde70a5d9dbf5a9234a93aaeaaacb94">isInCurForwardSlice</a>(node))</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad28ffe435790d36ad872cddc213ea799">addToCurBackwardSlice</a>(node);</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="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ad2203ca5bd08c6fbebd31a8a010edebb">FWProcessOutgoingEdge</a>(<span class="keyword">const</span> DPIm&amp; item, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a1ea0d4c4e53ff6986dd50d624ba2bff5">BWProcessIncomingEdge</a>(<span class="keyword">const</span> DPIm&amp; item, <a class="code" href="classSVF_1_1VFGEdge.html">SVFGEdge</a>* edge);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a8c86d30498e86745883fbaea4f530eae"> 265</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8c86d30498e86745883fbaea4f530eae">forwardVisited</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <span class="keyword">const</span> DPIm&amp; item)</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; SVFGNodeToDPItemsMap::const_iterator it = nodeToDPItemsMap.find(node);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">if</span>(it!=nodeToDPItemsMap.end())</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <span class="keywordflow">return</span> it-&gt;second.find(item)!=it-&gt;second.end();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; }</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a51c65cb4b8ea107161e112a8fd3fb7d4"> 273</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a51c65cb4b8ea107161e112a8fd3fb7d4">addForwardVisited</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node, <span class="keyword">const</span> DPIm&amp; item)</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; nodeToDPItemsMap[node].insert(item);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a32cc8a131b2448b5e8e1fe65d99fd286"> 277</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a32cc8a131b2448b5e8e1fe65d99fd286">backwardVisited</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; {</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">return</span> visitedSet.find(node)!=visitedSet.end();</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; }</div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#aa061e2d72d3045c9712512c6df002544"> 281</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#aa061e2d72d3045c9712512c6df002544">addBackwardVisited</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* node)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; {</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; visitedSet.insert(node);</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#af048c70d7e68da22835570a3381eb14d"> 285</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#af048c70d7e68da22835570a3381eb14d">clearVisitedMap</a>()</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; {</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; nodeToDPItemsMap.clear();</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; visitedSet.clear();</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;</div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0"> 293</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">isAllPathReachable</a>()</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">return</span> _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e">isAllReachable</a>();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7"> 298</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">isSomePathReachable</a>()</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">return</span> _curSlice-&gt;<a class="code" href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2">isPartialReachable</a>();</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">dumpSlices</a>();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">annotateSlice</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html#ae3d665ff1e796348131e797eb0283bfb">printBDDStat</a>();</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;};</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* SRCSNKDDA_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html_afbcd75844af51ff51c09c377f80a49cf"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html#afbcd75844af51ff51c09c377f80a49cf">SVF::SaberSVFGBuilder::isGlobalSVFGNode</a></div><div class="ttdeci">bool isGlobalSVFGNode(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00054">SaberSVFGBuilder.h:54</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4cb2c14431fc432e84d382f8eeb24fe2"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4cb2c14431fc432e84d382f8eeb24fe2">SVF::SrcSnkDDA::isInCurBackwardSlice</a></div><div class="ttdeci">bool isInCurBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00154">SrcSnkDDA.h:154</a></div></div>
71
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a51c65cb4b8ea107161e112a8fd3fb7d4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a51c65cb4b8ea107161e112a8fd3fb7d4">SVF::SrcSnkDDA::addForwardVisited</a></div><div class="ttdeci">void addForwardVisited(const SVFGNode *node, const DPIm &amp;item)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00273">SrcSnkDDA.h:273</a></div></div>
72
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a2349db6c540e418600e2fdbe2e665628"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a2349db6c540e418600e2fdbe2e665628">SVF::SrcSnkDDA::visitedSet</a></div><div class="ttdeci">SVFGNodeSet visitedSet</div><div class="ttdoc">record backward visited nodes </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00067">SrcSnkDDA.h:67</a></div></div>
73
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_acdffb63fd5ae67306640bfe2fcfc3a79"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acdffb63fd5ae67306640bfe2fcfc3a79">SVF::SrcSnkDDA::addToSources</a></div><div class="ttdeci">void addToSources(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00209">SrcSnkDDA.h:209</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a6caea43079963b13e9a7a017074bdbb7"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a6caea43079963b13e9a7a017074bdbb7">SVF::SrcSnkDDA::addSinkToCurSlice</a></div><div class="ttdeci">void addSinkToCurSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00145">SrcSnkDDA.h:145</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a8817604b20724703121e9466e5cdb4cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8817604b20724703121e9466e5cdb4cd">SVF::SrcSnkDDA::annotateSlice</a></div><div class="ttdeci">void annotateSlice(ProgSlice *slice)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00284">SrcSnkDDA.cpp:284</a></div></div>
76
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a1a6ae6b1f6864057067d0e5533ea801e"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e">SVF::SrcSnkDDA::getPathAllocator</a></div><div class="ttdeci">PathCondAllocator * getPathAllocator() const</div><div class="ttdoc">Get path condition allocator. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00231">SrcSnkDDA.h:231</a></div></div>
77
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a32cc8a131b2448b5e8e1fe65d99fd286"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a32cc8a131b2448b5e8e1fe65d99fd286">SVF::SrcSnkDDA::backwardVisited</a></div><div class="ttdeci">bool backwardVisited(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00276">SrcSnkDDA.h:276</a></div></div>
78
- <div class="ttc" id="classSVF_1_1SrcSnkSolver_html_ae66ed69eb3412c2eef14ef2f86a34c6c"><div class="ttname"><a href="classSVF_1_1SrcSnkSolver.html#ae66ed69eb3412c2eef14ef2f86a34c6c">SVF::SrcSnkSolver::graph</a></div><div class="ttdeci">const GraphType graph() const</div><div class="ttdoc">Get/Set graph methods. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkSolver_8h_source.html#l00074">SrcSnkSolver.h:74</a></div></div>
79
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a391bb031b2f244e930b266a29cda0af7"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a391bb031b2f244e930b266a29cda0af7">SVF::SrcSnkDDA::isGlobalSVFGNode</a></div><div class="ttdeci">bool isGlobalSVFGNode(const SVFGNode *node) const</div><div class="ttdoc">Whether this svfg node may access global variable. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00132">SrcSnkDDA.h:132</a></div></div>
76
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a1a6ae6b1f6864057067d0e5533ea801e"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a1a6ae6b1f6864057067d0e5533ea801e">SVF::SrcSnkDDA::getPathAllocator</a></div><div class="ttdeci">PathCondAllocator * getPathAllocator() const</div><div class="ttdoc">Get path condition allocator. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00232">SrcSnkDDA.h:232</a></div></div>
77
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a32cc8a131b2448b5e8e1fe65d99fd286"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a32cc8a131b2448b5e8e1fe65d99fd286">SVF::SrcSnkDDA::backwardVisited</a></div><div class="ttdeci">bool backwardVisited(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00277">SrcSnkDDA.h:277</a></div></div>
78
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a391bb031b2f244e930b266a29cda0af7"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a391bb031b2f244e930b266a29cda0af7">SVF::SrcSnkDDA::isGlobalSVFGNode</a></div><div class="ttdeci">bool isGlobalSVFGNode(const SVFGNode *node) const</div><div class="ttdoc">Whether this svfg node may access global variable. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00133">SrcSnkDDA.h:133</a></div></div>
80
79
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_aa87e9ca3c9a9dc6ae5cc88a0182a8154"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#aa87e9ca3c9a9dc6ae5cc88a0182a8154">SVF::SrcSnkDDA::reportBug</a></div><div class="ttdeci">virtual void reportBug(ProgSlice *slice)=0</div><div class="ttdoc">report bug on the current analyzed slice </div></div>
81
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a79833c0cf1916d63e1dd32c2220056dd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd">SVF::SrcSnkDDA::sinksBegin</a></div><div class="ttdeci">SVFGNodeSetIter sinksBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00216">SrcSnkDDA.h:216</a></div></div>
80
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a79833c0cf1916d63e1dd32c2220056dd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a79833c0cf1916d63e1dd32c2220056dd">SVF::SrcSnkDDA::sinksBegin</a></div><div class="ttdeci">SVFGNodeSetIter sinksBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00217">SrcSnkDDA.h:217</a></div></div>
82
81
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0f6cfa30c346aab1fb03a44e47c32559"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0f6cfa30c346aab1fb03a44e47c32559">SVF::SrcSnkDDA::initSnks</a></div><div class="ttdeci">virtual void initSnks()=0</div></div>
83
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00046">SrcSnkDDA.h:46</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html">SVF::SrcSnkDDA</a></div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00047">SrcSnkDDA.h:47</a></div></div>
84
83
  <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="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
85
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a83d5ccf0836f8f751aff078f88328cca"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a83d5ccf0836f8f751aff078f88328cca">SVF::SrcSnkDDA::DPIm</a></div><div class="ttdeci">CxtDPItem DPIm</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00053">SrcSnkDDA.h:53</a></div></div>
84
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a83d5ccf0836f8f751aff078f88328cca"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a83d5ccf0836f8f751aff078f88328cca">SVF::SrcSnkDDA::DPIm</a></div><div class="ttdeci">CxtDPItem DPIm</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00054">SrcSnkDDA.h:54</a></div></div>
86
85
  <div class="ttc" id="classSVF_1_1ProgSlice_html_af6f137be08ca0e743424ff07d679777d"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#af6f137be08ca0e743424ff07d679777d">SVF::ProgSlice::setPartialReachable</a></div><div class="ttdeci">void setPartialReachable()</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00132">ProgSlice.h:132</a></div></div>
87
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a60dcf333cb36230d5f3070e8d238ad6d"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d">SVF::SrcSnkDDA::_curSlice</a></div><div class="ttdeci">ProgSlice * _curSlice</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00061">SrcSnkDDA.h:61</a></div></div>
88
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a19f02a14ee669fadc37fde3816fa2f84"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a19f02a14ee669fadc37fde3816fa2f84">SVF::SrcSnkDDA::SVFGNodeSet</a></div><div class="ttdeci">ProgSlice::SVFGNodeSet SVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00050">SrcSnkDDA.h:50</a></div></div>
89
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ab392142d8b4610635aef32c2f7ea8f91"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab392142d8b4610635aef32c2f7ea8f91">SVF::SrcSnkDDA::isSinkLikeFun</a></div><div class="ttdeci">virtual bool isSinkLikeFun(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00175">SrcSnkDDA.h:175</a></div></div>
86
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a60dcf333cb36230d5f3070e8d238ad6d"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a60dcf333cb36230d5f3070e8d238ad6d">SVF::SrcSnkDDA::_curSlice</a></div><div class="ttdeci">ProgSlice * _curSlice</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00062">SrcSnkDDA.h:62</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a19f02a14ee669fadc37fde3816fa2f84"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a19f02a14ee669fadc37fde3816fa2f84">SVF::SrcSnkDDA::SVFGNodeSet</a></div><div class="ttdeci">ProgSlice::SVFGNodeSet SVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00051">SrcSnkDDA.h:51</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ab392142d8b4610635aef32c2f7ea8f91"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab392142d8b4610635aef32c2f7ea8f91">SVF::SrcSnkDDA::isSinkLikeFun</a></div><div class="ttdeci">virtual bool isSinkLikeFun(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00176">SrcSnkDDA.h:176</a></div></div>
90
89
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a0017e160c2a5412947c170f944e593bd"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a0017e160c2a5412947c170f944e593bd">SVF::ProgSlice::addToForwardSlice</a></div><div class="ttdeci">void addToForwardSlice(const SVFGNode *node)</div><div class="ttdoc">Forward and backward slice operations. </div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00076">ProgSlice.h:76</a></div></div>
91
90
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a3822badbbe9ac808296d5248f2dbf8e2"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a3822badbbe9ac808296d5248f2dbf8e2">SVF::ProgSlice::isPartialReachable</a></div><div class="ttdeci">bool isPartialReachable() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00144">ProgSlice.h:144</a></div></div>
92
91
  <div class="ttc" id="classSVF_1_1ProgSlice_html_ac98eccef9fc2521b833a8c14b43e49e1"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#ac98eccef9fc2521b833a8c14b43e49e1">SVF::ProgSlice::addToBackwardSlice</a></div><div class="ttdeci">void addToBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00080">ProgSlice.h:80</a></div></div>
93
92
  <div class="ttc" id="classSVF_1_1SVFIR_html_a37cfa2aa4e7b98ef9dc8179f581a2362"><div class="ttname"><a href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVF::SVFIR::getPAG</a></div><div class="ttdeci">static SVFIR * getPAG(bool buildFromFile=false)</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00106">SVFIR.h:106</a></div></div>
93
+ <div class="ttc" id="namespaceSVF_html_a6bdd04381cb268e6c957a5cc528ebf67"><div class="ttname"><a href="namespaceSVF.html#a6bdd04381cb268e6c957a5cc528ebf67">SVF::CFLSrcSnkSolver</a></div><div class="ttdeci">GraphReachSolver&lt; SVFG *, CxtDPItem &gt; CFLSrcSnkSolver</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00042">SrcSnkDDA.h:42</a></div></div>
94
94
  <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>
95
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_adc2ac209e2d5e561bcb594db4c77051b"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#adc2ac209e2d5e561bcb594db4c77051b">SVF::SrcSnkDDA::BWProcessCurNode</a></div><div class="ttdeci">virtual void BWProcessCurNode(const DPIm &amp;item)</div><div class="ttdoc">Backward traverse. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00250">SrcSnkDDA.h:250</a></div></div>
95
+ <div class="ttc" id="classSVF_1_1GraphReachSolver_html_a88775eedbbc3039caac1e350b48aa838"><div class="ttname"><a href="classSVF_1_1GraphReachSolver.html#a88775eedbbc3039caac1e350b48aa838">SVF::GraphReachSolver::graph</a></div><div class="ttdeci">const GraphType graph() const</div><div class="ttdoc">Get/Set graph methods. </div><div class="ttdef"><b>Definition:</b> <a href="GraphReachSolver_8h_source.html#l00074">GraphReachSolver.h:74</a></div></div>
96
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_adc2ac209e2d5e561bcb594db4c77051b"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#adc2ac209e2d5e561bcb594db4c77051b">SVF::SrcSnkDDA::BWProcessCurNode</a></div><div class="ttdeci">virtual void BWProcessCurNode(const DPIm &amp;item)</div><div class="ttdoc">Backward traverse. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00251">SrcSnkDDA.h:251</a></div></div>
96
97
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a8883b9a42106ed8c55835d2ba9a579cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8883b9a42106ed8c55835d2ba9a579cd">SVF::SrcSnkDDA::initialize</a></div><div class="ttdeci">virtual void initialize(SVFModule *module)</div><div class="ttdoc">Initialize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00042">SrcSnkDDA.cpp:42</a></div></div>
97
98
  <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00106">SVFBasicTypes.h:106</a></div></div>
98
99
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a066430ffa98a3fa0a5ad48d26e0450f7"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a066430ffa98a3fa0a5ad48d26e0450f7">SVF::ProgSlice::inBackwardSlice</a></div><div class="ttdeci">bool inBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00088">ProgSlice.h:88</a></div></div>
99
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0c3d3b5ac74aa933178fa46b949d8bef"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef">SVF::SrcSnkDDA::getSources</a></div><div class="ttdeci">const SVFGNodeSet &amp; getSources() const</div><div class="ttdoc">Get sources/sinks. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00196">SrcSnkDDA.h:196</a></div></div>
100
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ab6803f0a2b3507213ad2979b9b12f700"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab6803f0a2b3507213ad2979b9b12f700">SVF::SrcSnkDDA::memSSA</a></div><div class="ttdeci">SaberSVFGBuilder memSSA</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00069">SrcSnkDDA.h:69</a></div></div>
101
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad6935e27bbd95d26a01b22b879efed58"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVF::SrcSnkDDA::SVFGNodeSetIter</a></div><div class="ttdeci">SVFGNodeSet::const_iterator SVFGNodeSetIter</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00052">SrcSnkDDA.h:52</a></div></div>
102
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a5f4f97bc480e899004b0432a78fd94a4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a5f4f97bc480e899004b0432a78fd94a4">SVF::SrcSnkDDA::nodeToDPItemsMap</a></div><div class="ttdeci">SVFGNodeToDPItemsMap nodeToDPItemsMap</div><div class="ttdoc">record forward visited dpitems </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00065">SrcSnkDDA.h:65</a></div></div>
103
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a703bfc5c825d66fdb0d74eb89d181581"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a703bfc5c825d66fdb0d74eb89d181581">SVF::SrcSnkDDA::isSink</a></div><div class="ttdeci">bool isSink(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00183">SrcSnkDDA.h:183</a></div></div>
100
+ <div class="ttc" id="classSVF_1_1GraphReachSolver_html_a0b7f0923105dfb198a2a8428d6c1ca98"><div class="ttname"><a href="classSVF_1_1GraphReachSolver.html#a0b7f0923105dfb198a2a8428d6c1ca98">SVF::GraphReachSolver::getNode</a></div><div class="ttdeci">GNODE * getNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="GraphReachSolver_8h_source.html#l00084">GraphReachSolver.h:84</a></div></div>
101
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0c3d3b5ac74aa933178fa46b949d8bef"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0c3d3b5ac74aa933178fa46b949d8bef">SVF::SrcSnkDDA::getSources</a></div><div class="ttdeci">const SVFGNodeSet &amp; getSources() const</div><div class="ttdoc">Get sources/sinks. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00197">SrcSnkDDA.h:197</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ab6803f0a2b3507213ad2979b9b12f700"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab6803f0a2b3507213ad2979b9b12f700">SVF::SrcSnkDDA::memSSA</a></div><div class="ttdeci">SaberSVFGBuilder memSSA</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00070">SrcSnkDDA.h:70</a></div></div>
103
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad6935e27bbd95d26a01b22b879efed58"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad6935e27bbd95d26a01b22b879efed58">SVF::SrcSnkDDA::SVFGNodeSetIter</a></div><div class="ttdeci">SVFGNodeSet::const_iterator SVFGNodeSetIter</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00053">SrcSnkDDA.h:53</a></div></div>
104
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a5f4f97bc480e899004b0432a78fd94a4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a5f4f97bc480e899004b0432a78fd94a4">SVF::SrcSnkDDA::nodeToDPItemsMap</a></div><div class="ttdeci">SVFGNodeToDPItemsMap nodeToDPItemsMap</div><div class="ttdoc">record forward visited dpitems </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00066">SrcSnkDDA.h:66</a></div></div>
105
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a703bfc5c825d66fdb0d74eb89d181581"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a703bfc5c825d66fdb0d74eb89d181581">SVF::SrcSnkDDA::isSink</a></div><div class="ttdeci">bool isSink(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00184">SrcSnkDDA.h:184</a></div></div>
104
106
  <div class="ttc" id="classSVF_1_1VFGEdge_html"><div class="ttname"><a href="classSVF_1_1VFGEdge.html">SVF::VFGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGEdge_8h_source.html#l00044">VFGEdge.h:44</a></div></div>
105
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a19ab6f6df2a67b294268cfe7f4287fd7"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">SVF::SrcSnkDDA::isSomePathReachable</a></div><div class="ttdeci">virtual bool isSomePathReachable()</div><div class="ttdoc">Whether it is some path reachable from a source. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00297">SrcSnkDDA.h:297</a></div></div>
106
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a97be553370acf305f86e903bc3f0bb1a"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a">SVF::SrcSnkDDA::ptaCallGraph</a></div><div class="ttdeci">PTACallGraph * ptaCallGraph</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00071">SrcSnkDDA.h:71</a></div></div>
107
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a19ab6f6df2a67b294268cfe7f4287fd7"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a19ab6f6df2a67b294268cfe7f4287fd7">SVF::SrcSnkDDA::isSomePathReachable</a></div><div class="ttdeci">virtual bool isSomePathReachable()</div><div class="ttdoc">Whether it is some path reachable from a source. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00298">SrcSnkDDA.h:298</a></div></div>
108
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a97be553370acf305f86e903bc3f0bb1a"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a97be553370acf305f86e903bc3f0bb1a">SVF::SrcSnkDDA::ptaCallGraph</a></div><div class="ttdeci">PTACallGraph * ptaCallGraph</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00072">SrcSnkDDA.h:72</a></div></div>
107
109
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_acae985068ff1c20fb81c4c9ba730aaba"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#acae985068ff1c20fb81c4c9ba730aaba">SVF::SrcSnkDDA::dumpSlices</a></div><div class="ttdeci">void dumpSlices()</div><div class="ttdoc">Dump SVFG with annotated slice informaiton. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00295">SrcSnkDDA.cpp:295</a></div></div>
108
110
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a2f96f034b7236791fe1d4d351174722e"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a2f96f034b7236791fe1d4d351174722e">SVF::ProgSlice::isAllReachable</a></div><div class="ttdeci">bool isAllReachable() const</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00148">ProgSlice.h:148</a></div></div>
109
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a3c0d8850c4dae49a760ce5f80fb8822a"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a3c0d8850c4dae49a760ce5f80fb8822a">SVF::SrcSnkDDA::WorkList</a></div><div class="ttdeci">ProgSlice::VFWorkList WorkList</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00058">SrcSnkDDA.h:58</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a3c0d8850c4dae49a760ce5f80fb8822a"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a3c0d8850c4dae49a760ce5f80fb8822a">SVF::SrcSnkDDA::WorkList</a></div><div class="ttdeci">ProgSlice::VFWorkList WorkList</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00059">SrcSnkDDA.h:59</a></div></div>
110
112
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ae3d665ff1e796348131e797eb0283bfb"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ae3d665ff1e796348131e797eb0283bfb">SVF::SrcSnkDDA::printBDDStat</a></div><div class="ttdeci">void printBDDStat()</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00302">SrcSnkDDA.cpp:302</a></div></div>
111
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ab3cc8f13ea8de2db4ba874280802667a"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab3cc8f13ea8de2db4ba874280802667a">SVF::SrcSnkDDA::DPImSet</a></div><div class="ttdeci">Set&lt; DPIm &gt; DPImSet</div><div class="ttdoc">dpitem set </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00054">SrcSnkDDA.h:54</a></div></div>
112
- <div class="ttc" id="namespaceSVF_html_a60a528875b7fdc441fb9d348f07a57f8"><div class="ttname"><a href="namespaceSVF.html#a60a528875b7fdc441fb9d348f07a57f8">SVF::CFLSrcSnkSolver</a></div><div class="ttdeci">SrcSnkSolver&lt; SVFG *, CxtDPItem &gt; CFLSrcSnkSolver</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00041">SrcSnkDDA.h:41</a></div></div>
113
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a8c86d30498e86745883fbaea4f530eae"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8c86d30498e86745883fbaea4f530eae">SVF::SrcSnkDDA::forwardVisited</a></div><div class="ttdeci">bool forwardVisited(const SVFGNode *node, const DPIm &amp;item)</div><div class="ttdoc">Whether has been visited or not, in order to avoid recursion on SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00264">SrcSnkDDA.h:264</a></div></div>
114
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4f9de61860db86668606f0c276ce8117"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4f9de61860db86668606f0c276ce8117">SVF::SrcSnkDDA::SVFGNodeToDPItemsMap</a></div><div class="ttdeci">Map&lt; const SVFGNode *, DPImSet &gt; SVFGNodeToDPItemsMap</div><div class="ttdoc">map a SVFGNode to its visited dpitems </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00055">SrcSnkDDA.h:55</a></div></div>
113
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ab3cc8f13ea8de2db4ba874280802667a"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab3cc8f13ea8de2db4ba874280802667a">SVF::SrcSnkDDA::DPImSet</a></div><div class="ttdeci">Set&lt; DPIm &gt; DPImSet</div><div class="ttdoc">dpitem set </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00055">SrcSnkDDA.h:55</a></div></div>
114
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a8c86d30498e86745883fbaea4f530eae"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a8c86d30498e86745883fbaea4f530eae">SVF::SrcSnkDDA::forwardVisited</a></div><div class="ttdeci">bool forwardVisited(const SVFGNode *node, const DPIm &amp;item)</div><div class="ttdoc">Whether has been visited or not, in order to avoid recursion on SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00265">SrcSnkDDA.h:265</a></div></div>
115
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4f9de61860db86668606f0c276ce8117"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4f9de61860db86668606f0c276ce8117">SVF::SrcSnkDDA::SVFGNodeToDPItemsMap</a></div><div class="ttdeci">Map&lt; const SVFGNode *, DPImSet &gt; SVFGNodeToDPItemsMap</div><div class="ttdoc">map a SVFGNode to its visited dpitems </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00056">SrcSnkDDA.h:56</a></div></div>
115
116
  <div class="ttc" id="classSVF_1_1PathCondAllocator_html"><div class="ttname"><a href="classSVF_1_1PathCondAllocator.html">SVF::PathCondAllocator</a></div><div class="ttdef"><b>Definition:</b> <a href="PathCondAllocator_8h_source.html#l00047">PathCondAllocator.h:47</a></div></div>
116
117
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a5a4b7f34001cc90f9b60222caee1bde6"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a5a4b7f34001cc90f9b60222caee1bde6">SVF::ProgSlice::inForwardSlice</a></div><div class="ttdeci">bool inForwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00084">ProgSlice.h:84</a></div></div>
117
118
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ac12d813bcba4ec70de5e9048bbe16afc"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">SVF::SrcSnkDDA::analyze</a></div><div class="ttdeci">virtual void analyze(SVFModule *module)</div><div class="ttdoc">Start analysis here. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00062">SrcSnkDDA.cpp:62</a></div></div>
118
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_af048c70d7e68da22835570a3381eb14d"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#af048c70d7e68da22835570a3381eb14d">SVF::SrcSnkDDA::clearVisitedMap</a></div><div class="ttdeci">void clearVisitedMap()</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00284">SrcSnkDDA.h:284</a></div></div>
119
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a9c276e24d13cd1e8e5fbad10b46047f8"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8">SVF::SrcSnkDDA::addToSinks</a></div><div class="ttdeci">void addToSinks(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00224">SrcSnkDDA.h:224</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_af048c70d7e68da22835570a3381eb14d"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#af048c70d7e68da22835570a3381eb14d">SVF::SrcSnkDDA::clearVisitedMap</a></div><div class="ttdeci">void clearVisitedMap()</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00285">SrcSnkDDA.h:285</a></div></div>
120
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a9c276e24d13cd1e8e5fbad10b46047f8"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a9c276e24d13cd1e8e5fbad10b46047f8">SVF::SrcSnkDDA::addToSinks</a></div><div class="ttdeci">void addToSinks(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00225">SrcSnkDDA.h:225</a></div></div>
120
121
  <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00101">SVFBasicTypes.h:101</a></div></div>
121
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a70cff8ea7c033c01400935c9e446f2c6"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6">SVF::SrcSnkDDA::SVFGNodeBS</a></div><div class="ttdeci">NodeBS SVFGNodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00057">SrcSnkDDA.h:57</a></div></div>
122
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a529b40c870c74309440f025e490bb161"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">SVF::SrcSnkDDA::getSVFG</a></div><div class="ttdeci">const SVFG * getSVFG() const</div><div class="ttdoc">Get SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00120">SrcSnkDDA.h:120</a></div></div>
122
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a70cff8ea7c033c01400935c9e446f2c6"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a70cff8ea7c033c01400935c9e446f2c6">SVF::SrcSnkDDA::SVFGNodeBS</a></div><div class="ttdeci">NodeBS SVFGNodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00058">SrcSnkDDA.h:58</a></div></div>
123
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a529b40c870c74309440f025e490bb161"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a529b40c870c74309440f025e490bb161">SVF::SrcSnkDDA::getSVFG</a></div><div class="ttdeci">const SVFG * getSVFG() const</div><div class="ttdoc">Get SVFG. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00121">SrcSnkDDA.h:121</a></div></div>
123
124
  <div class="ttc" id="classSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
124
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0515c9079f28f8c5d4f0f9a2fc39a137"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0515c9079f28f8c5d4f0f9a2fc39a137">SVF::SrcSnkDDA::sourcesBegin</a></div><div class="ttdeci">SVFGNodeSetIter sourcesBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00200">SrcSnkDDA.h:200</a></div></div>
125
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad50e479db8f0733326974709d6ffe653"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad50e479db8f0733326974709d6ffe653">SVF::SrcSnkDDA::getCurSlice</a></div><div class="ttdeci">ProgSlice * getCurSlice() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00140">SrcSnkDDA.h:140</a></div></div>
126
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_aaffd4b48be1f99e0450b23f20f034b1e"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#aaffd4b48be1f99e0450b23f20f034b1e">SVF::SrcSnkDDA::sinks</a></div><div class="ttdeci">SVFGNodeSet sinks</div><div class="ttdoc">source nodes </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00063">SrcSnkDDA.h:63</a></div></div>
127
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a3008dc334d4500516507544a86ec6d9c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a3008dc334d4500516507544a86ec6d9c">SVF::SrcSnkDDA::pathCondAllocator</a></div><div class="ttdeci">PathCondAllocator * pathCondAllocator</div><div class="ttdoc">source nodes </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00064">SrcSnkDDA.h:64</a></div></div>
128
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ae657ebdeae8a083cfec210859a0023e4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4">SVF::SrcSnkDDA::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00070">SrcSnkDDA.h:70</a></div></div>
129
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a47a4be28c625bf4d079a04ac24132165"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">SVF::SrcSnkDDA::CallSiteSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00056">SrcSnkDDA.h:56</a></div></div>
130
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4bde70a5d9dbf5a9234a93aaeaaacb94"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4bde70a5d9dbf5a9234a93aaeaaacb94">SVF::SrcSnkDDA::isInCurForwardSlice</a></div><div class="ttdeci">bool isInCurForwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00149">SrcSnkDDA.h:149</a></div></div>
131
- <div class="ttc" id="classSVF_1_1SrcSnkSolver_html_a18008d5496010aa5f54aade230bd64ff"><div class="ttname"><a href="classSVF_1_1SrcSnkSolver.html#a18008d5496010aa5f54aade230bd64ff">SVF::SrcSnkSolver::getNode</a></div><div class="ttdeci">GNODE * getNode(NodeID id) const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkSolver_8h_source.html#l00084">SrcSnkSolver.h:84</a></div></div>
125
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0515c9079f28f8c5d4f0f9a2fc39a137"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0515c9079f28f8c5d4f0f9a2fc39a137">SVF::SrcSnkDDA::sourcesBegin</a></div><div class="ttdeci">SVFGNodeSetIter sourcesBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00201">SrcSnkDDA.h:201</a></div></div>
126
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad50e479db8f0733326974709d6ffe653"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad50e479db8f0733326974709d6ffe653">SVF::SrcSnkDDA::getCurSlice</a></div><div class="ttdeci">ProgSlice * getCurSlice() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00141">SrcSnkDDA.h:141</a></div></div>
127
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_aaffd4b48be1f99e0450b23f20f034b1e"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#aaffd4b48be1f99e0450b23f20f034b1e">SVF::SrcSnkDDA::sinks</a></div><div class="ttdeci">SVFGNodeSet sinks</div><div class="ttdoc">source nodes </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00064">SrcSnkDDA.h:64</a></div></div>
128
+ <div class="ttc" id="classSVF_1_1GraphReachSolver_html"><div class="ttname"><a href="classSVF_1_1GraphReachSolver.html">SVF::GraphReachSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="GraphReachSolver_8h_source.html#l00044">GraphReachSolver.h:44</a></div></div>
129
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a3008dc334d4500516507544a86ec6d9c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a3008dc334d4500516507544a86ec6d9c">SVF::SrcSnkDDA::pathCondAllocator</a></div><div class="ttdeci">PathCondAllocator * pathCondAllocator</div><div class="ttdoc">source nodes </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00065">SrcSnkDDA.h:65</a></div></div>
130
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ae657ebdeae8a083cfec210859a0023e4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ae657ebdeae8a083cfec210859a0023e4">SVF::SrcSnkDDA::svfg</a></div><div class="ttdeci">SVFG * svfg</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00071">SrcSnkDDA.h:71</a></div></div>
131
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a47a4be28c625bf4d079a04ac24132165"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a47a4be28c625bf4d079a04ac24132165">SVF::SrcSnkDDA::CallSiteSet</a></div><div class="ttdeci">Set&lt; const CallICFGNode * &gt; CallSiteSet</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00057">SrcSnkDDA.h:57</a></div></div>
132
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4bde70a5d9dbf5a9234a93aaeaaacb94"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4bde70a5d9dbf5a9234a93aaeaaacb94">SVF::SrcSnkDDA::isInCurForwardSlice</a></div><div class="ttdeci">bool isInCurForwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00150">SrcSnkDDA.h:150</a></div></div>
132
133
  <div class="ttc" id="classSVF_1_1CxtDPItem_html"><div class="ttname"><a href="classSVF_1_1CxtDPItem.html">SVF::CxtDPItem</a></div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00452">DPItem.h:452</a></div></div>
133
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a815e39e7c65ed9a250cafe40f74a4ba1"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a815e39e7c65ed9a250cafe40f74a4ba1">SVF::SrcSnkDDA::isSource</a></div><div class="ttdeci">bool isSource(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00179">SrcSnkDDA.h:179</a></div></div>
134
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a815e39e7c65ed9a250cafe40f74a4ba1"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a815e39e7c65ed9a250cafe40f74a4ba1">SVF::SrcSnkDDA::isSource</a></div><div class="ttdeci">bool isSource(const SVFGNode *node) const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00180">SrcSnkDDA.h:180</a></div></div>
134
135
  <div class="ttc" id="classSVF_1_1ProgSlice_html_a4864972e12f3e95f06bcf2bf8c847b3a"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#a4864972e12f3e95f06bcf2bf8c847b3a">SVF::ProgSlice::SVFGNodeSet</a></div><div class="ttdeci">Set&lt; const SVFGNode * &gt; SVFGNodeSet</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00045">ProgSlice.h:45</a></div></div>
135
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0181630a05f915eb35a88540af6919df"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0181630a05f915eb35a88540af6919df">SVF::SrcSnkDDA::~SrcSnkDDA</a></div><div class="ttdeci">virtual ~SrcSnkDDA()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00081">SrcSnkDDA.h:81</a></div></div>
136
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_abf20d02932b7ca983b9bd790812b1f40"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#abf20d02932b7ca983b9bd790812b1f40">SVF::SrcSnkDDA::FWProcessCurNode</a></div><div class="ttdeci">virtual void FWProcessCurNode(const DPIm &amp;item)</div><div class="ttdoc">Forward traverse. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00238">SrcSnkDDA.h:238</a></div></div>
136
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a0181630a05f915eb35a88540af6919df"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a0181630a05f915eb35a88540af6919df">SVF::SrcSnkDDA::~SrcSnkDDA</a></div><div class="ttdeci">virtual ~SrcSnkDDA()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00082">SrcSnkDDA.h:82</a></div></div>
137
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_abf20d02932b7ca983b9bd790812b1f40"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#abf20d02932b7ca983b9bd790812b1f40">SVF::SrcSnkDDA::FWProcessCurNode</a></div><div class="ttdeci">virtual void FWProcessCurNode(const DPIm &amp;item)</div><div class="ttdoc">Forward traverse. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00239">SrcSnkDDA.h:239</a></div></div>
137
138
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_afc75e55af839ef535d80555fd422342c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#afc75e55af839ef535d80555fd422342c">SVF::SrcSnkDDA::isInAWrapper</a></div><div class="ttdeci">bool isInAWrapper(const SVFGNode *src, CallSiteSet &amp;csIdSet)</div><div class="ttdoc">Identify allocation wrappers. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00119">SrcSnkDDA.cpp:119</a></div></div>
138
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ac96c2f09dee260b4378eae7eb67b21e4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ac96c2f09dee260b4378eae7eb67b21e4">SVF::SrcSnkDDA::SVFGNodeToSliceMap</a></div><div class="ttdeci">Map&lt; const SVFGNode *, ProgSlice * &gt; SVFGNodeToSliceMap</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00051">SrcSnkDDA.h:51</a></div></div>
139
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ac96c2f09dee260b4378eae7eb67b21e4"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ac96c2f09dee260b4378eae7eb67b21e4">SVF::SrcSnkDDA::SVFGNodeToSliceMap</a></div><div class="ttdeci">Map&lt; const SVFGNode *, ProgSlice * &gt; SVFGNodeToSliceMap</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00052">SrcSnkDDA.h:52</a></div></div>
139
140
  <div class="ttc" id="SaberSVFGBuilder_8h_html"><div class="ttname"><a href="SaberSVFGBuilder_8h.html">SaberSVFGBuilder.h</a></div></div>
140
141
  <div class="ttc" id="classSVF_1_1DPItem_html_a03a90eca842c0e83d874902103f6fdb2"><div class="ttname"><a href="classSVF_1_1DPItem.html#a03a90eca842c0e83d874902103f6fdb2">SVF::DPItem::getCurNodeID</a></div><div class="ttdeci">NodeID getCurNodeID() const</div><div class="ttdef"><b>Definition:</b> <a href="DPItem_8h_source.html#l00064">DPItem.h:64</a></div></div>
141
142
  <div class="ttc" id="SVFGOPT_8h_html"><div class="ttname"><a href="SVFGOPT_8h.html">SVFGOPT.h</a></div></div>
142
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_aaabc8d3aed17c8a35ef37d878f141412"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#aaabc8d3aed17c8a35ef37d878f141412">SVF::SrcSnkDDA::sinksEnd</a></div><div class="ttdeci">SVFGNodeSetIter sinksEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00220">SrcSnkDDA.h:220</a></div></div>
143
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_aaabc8d3aed17c8a35ef37d878f141412"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#aaabc8d3aed17c8a35ef37d878f141412">SVF::SrcSnkDDA::sinksEnd</a></div><div class="ttdeci">SVFGNodeSetIter sinksEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00221">SrcSnkDDA.h:221</a></div></div>
143
144
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad2203ca5bd08c6fbebd31a8a010edebb"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad2203ca5bd08c6fbebd31a8a010edebb">SVF::SrcSnkDDA::FWProcessOutgoingEdge</a></div><div class="ttdeci">virtual void FWProcessOutgoingEdge(const DPIm &amp;item, SVFGEdge *edge)</div><div class="ttdoc">Propagate information forward by matching context. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00192">SrcSnkDDA.cpp:192</a></div></div>
144
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_af5a96bfc0f214a14dd2b3e1a46177d3c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#af5a96bfc0f214a14dd2b3e1a46177d3c">SVF::SrcSnkDDA::isSourceLikeFun</a></div><div class="ttdeci">virtual bool isSourceLikeFun(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00171">SrcSnkDDA.h:171</a></div></div>
145
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_af5a96bfc0f214a14dd2b3e1a46177d3c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#af5a96bfc0f214a14dd2b3e1a46177d3c">SVF::SrcSnkDDA::isSourceLikeFun</a></div><div class="ttdeci">virtual bool isSourceLikeFun(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00172">SrcSnkDDA.h:172</a></div></div>
145
146
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
146
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad28ffe435790d36ad872cddc213ea799"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad28ffe435790d36ad872cddc213ea799">SVF::SrcSnkDDA::addToCurBackwardSlice</a></div><div class="ttdeci">void addToCurBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00161">SrcSnkDDA.h:161</a></div></div>
147
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad28ffe435790d36ad872cddc213ea799"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad28ffe435790d36ad872cddc213ea799">SVF::SrcSnkDDA::addToCurBackwardSlice</a></div><div class="ttdeci">void addToCurBackwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00162">SrcSnkDDA.h:162</a></div></div>
147
148
  <div class="ttc" id="classSVF_1_1SVFG_html"><div class="ttname"><a href="classSVF_1_1SVFG.html">SVF::SVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00065">SVFG.h:65</a></div></div>
148
- <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>
149
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4f37c66db2588cd691353a9ad1a4d5b1"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">SVF::SrcSnkDDA::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdoc">Get SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00114">SrcSnkDDA.h:114</a></div></div>
150
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad0cb9de24cbc99d148f63b694dc3908e"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad0cb9de24cbc99d148f63b694dc3908e">SVF::SrcSnkDDA::sourcesEnd</a></div><div class="ttdeci">SVFGNodeSetIter sourcesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00204">SrcSnkDDA.h:204</a></div></div>
149
+ <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
150
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a4f37c66db2588cd691353a9ad1a4d5b1"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a4f37c66db2588cd691353a9ad1a4d5b1">SVF::SrcSnkDDA::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdoc">Get SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00115">SrcSnkDDA.h:115</a></div></div>
151
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad0cb9de24cbc99d148f63b694dc3908e"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad0cb9de24cbc99d148f63b694dc3908e">SVF::SrcSnkDDA::sourcesEnd</a></div><div class="ttdeci">SVFGNodeSetIter sourcesEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00205">SrcSnkDDA.h:205</a></div></div>
151
152
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00092">SVFBasicTypes.h:92</a></div></div>
152
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a1145c601df2e3dec1e32e43613447b96"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96">SVF::SrcSnkDDA::getSinks</a></div><div class="ttdeci">const SVFGNodeSet &amp; getSinks() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00212">SrcSnkDDA.h:212</a></div></div>
153
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a1145c601df2e3dec1e32e43613447b96"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a1145c601df2e3dec1e32e43613447b96">SVF::SrcSnkDDA::getSinks</a></div><div class="ttdeci">const SVFGNodeSet &amp; getSinks() const</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00213">SrcSnkDDA.h:213</a></div></div>
153
154
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a1c8f91ffa0b9f01d51c8cd5e14f076d5"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a1c8f91ffa0b9f01d51c8cd5e14f076d5">SVF::SrcSnkDDA::initSrcs</a></div><div class="ttdeci">virtual void initSrcs()=0</div></div>
154
155
  <div class="ttc" id="classSVF_1_1ProgSlice_html_acee5145fb261280a1f8187184e393aed"><div class="ttname"><a href="classSVF_1_1ProgSlice.html#acee5145fb261280a1f8187184e393aed">SVF::ProgSlice::addToSinks</a></div><div class="ttdeci">void addToSinks(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00116">ProgSlice.h:116</a></div></div>
155
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_af6ee1f79b67c736ceeb591d0cdba4b06"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#af6ee1f79b67c736ceeb591d0cdba4b06">SVF::SrcSnkDDA::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00108">SrcSnkDDA.h:108</a></div></div>
156
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a96c41d03d2615f952b58dca327a2866c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a96c41d03d2615f952b58dca327a2866c">SVF::SrcSnkDDA::sources</a></div><div class="ttdeci">SVFGNodeSet sources</div><div class="ttdoc">current program slice </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00062">SrcSnkDDA.h:62</a></div></div>
156
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_af6ee1f79b67c736ceeb591d0cdba4b06"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#af6ee1f79b67c736ceeb591d0cdba4b06">SVF::SrcSnkDDA::finalize</a></div><div class="ttdeci">virtual void finalize()</div><div class="ttdoc">Finalize analysis. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00109">SrcSnkDDA.h:109</a></div></div>
157
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a96c41d03d2615f952b58dca327a2866c"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a96c41d03d2615f952b58dca327a2866c">SVF::SrcSnkDDA::sources</a></div><div class="ttdeci">SVFGNodeSet sources</div><div class="ttdoc">current program slice </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00063">SrcSnkDDA.h:63</a></div></div>
157
158
  <div class="ttc" id="classSVF_1_1SaberSVFGBuilder_html"><div class="ttname"><a href="classSVF_1_1SaberSVFGBuilder.html">SVF::SaberSVFGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SaberSVFGBuilder_8h_source.html#l00040">SaberSVFGBuilder.h:40</a></div></div>
158
159
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a1ea0d4c4e53ff6986dd50d624ba2bff5"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a1ea0d4c4e53ff6986dd50d624ba2bff5">SVF::SrcSnkDDA::BWProcessIncomingEdge</a></div><div class="ttdeci">virtual void BWProcessIncomingEdge(const DPIm &amp;item, SVFGEdge *edge)</div><div class="ttdoc">Propagate information backward without matching context, as forward analysis already did it...</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00257">SrcSnkDDA.cpp:257</a></div></div>
159
- <div class="ttc" id="SrcSnkSolver_8h_html"><div class="ttname"><a href="SrcSnkSolver_8h.html">SrcSnkSolver.h</a></div></div>
160
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a57262e29e81cf71a40d4feb87b92925f"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f">SVF::SrcSnkDDA::addToCurForwardSlice</a></div><div class="ttdeci">void addToCurForwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00157">SrcSnkDDA.h:157</a></div></div>
161
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a73f6ddd4ba868e203109c52e4f3600bd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a73f6ddd4ba868e203109c52e4f3600bd">SVF::SrcSnkDDA::SrcSnkDDA</a></div><div class="ttdeci">SrcSnkDDA()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00076">SrcSnkDDA.h:76</a></div></div>
160
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a57262e29e81cf71a40d4feb87b92925f"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a57262e29e81cf71a40d4feb87b92925f">SVF::SrcSnkDDA::addToCurForwardSlice</a></div><div class="ttdeci">void addToCurForwardSlice(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00158">SrcSnkDDA.h:158</a></div></div>
161
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a73f6ddd4ba868e203109c52e4f3600bd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a73f6ddd4ba868e203109c52e4f3600bd">SVF::SrcSnkDDA::SrcSnkDDA</a></div><div class="ttdeci">SrcSnkDDA()</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00077">SrcSnkDDA.h:77</a></div></div>
162
162
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
163
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_aa061e2d72d3045c9712512c6df002544"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#aa061e2d72d3045c9712512c6df002544">SVF::SrcSnkDDA::addBackwardVisited</a></div><div class="ttdeci">void addBackwardVisited(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00280">SrcSnkDDA.h:280</a></div></div>
163
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_aa061e2d72d3045c9712512c6df002544"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#aa061e2d72d3045c9712512c6df002544">SVF::SrcSnkDDA::addBackwardVisited</a></div><div class="ttdeci">void addBackwardVisited(const SVFGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00281">SrcSnkDDA.h:281</a></div></div>
164
+ <div class="ttc" id="GraphReachSolver_8h_html"><div class="ttname"><a href="GraphReachSolver_8h.html">GraphReachSolver.h</a></div></div>
164
165
  <div class="ttc" id="classSVF_1_1ProgSlice_html"><div class="ttname"><a href="classSVF_1_1ProgSlice.html">SVF::ProgSlice</a></div><div class="ttdef"><b>Definition:</b> <a href="ProgSlice_8h_source.html#l00041">ProgSlice.h:41</a></div></div>
165
- <div class="ttc" id="classSVF_1_1SrcSnkSolver_html"><div class="ttname"><a href="classSVF_1_1SrcSnkSolver.html">SVF::SrcSnkSolver</a></div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkSolver_8h_source.html#l00044">SrcSnkSolver.h:44</a></div></div>
166
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a6ae0d47bac09163e90b8b2e773ad69f0"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">SVF::SrcSnkDDA::isAllPathReachable</a></div><div class="ttdeci">virtual bool isAllPathReachable()</div><div class="ttdoc">Whether it is all path reachable from a source. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00292">SrcSnkDDA.h:292</a></div></div>
167
- <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad445032e9b2027b3c990ce2a250257f8"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8">SVF::SrcSnkDDA::getCallgraph</a></div><div class="ttdeci">PTACallGraph * getCallgraph() const</div><div class="ttdoc">Get Callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00126">SrcSnkDDA.h:126</a></div></div>
166
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_a6ae0d47bac09163e90b8b2e773ad69f0"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#a6ae0d47bac09163e90b8b2e773ad69f0">SVF::SrcSnkDDA::isAllPathReachable</a></div><div class="ttdeci">virtual bool isAllPathReachable()</div><div class="ttdoc">Whether it is all path reachable from a source. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00293">SrcSnkDDA.h:293</a></div></div>
167
+ <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ad445032e9b2027b3c990ce2a250257f8"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ad445032e9b2027b3c990ce2a250257f8">SVF::SrcSnkDDA::getCallgraph</a></div><div class="ttdeci">PTACallGraph * getCallgraph() const</div><div class="ttdoc">Get Callgraph. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8h_source.html#l00127">SrcSnkDDA.h:127</a></div></div>
168
168
  <div class="ttc" id="classSVF_1_1SrcSnkDDA_html_ab35c0d1f02c83a2c10717905f1abf5cd"><div class="ttname"><a href="classSVF_1_1SrcSnkDDA.html#ab35c0d1f02c83a2c10717905f1abf5cd">SVF::SrcSnkDDA::setCurSlice</a></div><div class="ttdeci">virtual void setCurSlice(const SVFGNode *src)</div><div class="ttdoc">Slice operations. </div><div class="ttdef"><b>Definition:</b> <a href="SrcSnkDDA_8cpp_source.html#l00272">SrcSnkDDA.cpp:272</a></div></div>
169
169
  <div class="ttc" id="ProgSlice_8h_html"><div class="ttname"><a href="ProgSlice_8h.html">ProgSlice.h</a></div></div>
170
170
  <div class="ttc" id="classSVF_1_1VFGNode_html"><div class="ttname"><a href="classSVF_1_1VFGNode.html">SVF::VFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00046">VFGNode.h:46</a></div></div>