svf-tools 1.0.596 → 1.0.597

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 (801) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +4 -4
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +2 -2
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -7
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +5 -5
  6. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -7
  7. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +5 -5
  8. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +8 -8
  9. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +4 -4
  10. package/SVF-doxygen/html/html/CFLGraph_8cpp.html +3 -2
  11. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +15 -16
  12. package/SVF-doxygen/html/html/CFLGraph_8h.html +4 -6
  13. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +19 -20
  14. package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +4 -4
  15. package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +1 -1
  16. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +8 -8
  17. package/SVF-doxygen/html/html/CHG_8cpp.html +6 -5
  18. package/SVF-doxygen/html/html/CHG_8cpp_source.html +26 -27
  19. package/SVF-doxygen/html/html/CHG_8h.html +4 -6
  20. package/SVF-doxygen/html/html/CHG_8h_source.html +13 -14
  21. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +3 -3
  22. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +3 -3
  23. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +7 -7
  24. package/SVF-doxygen/html/html/ConsG_8cpp.html +3 -2
  25. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +27 -28
  26. package/SVF-doxygen/html/html/ConsG_8h.html +4 -6
  27. package/SVF-doxygen/html/html/ConsG_8h_source.html +10 -11
  28. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  29. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +3 -3
  30. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +4 -4
  31. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +21 -21
  32. package/SVF-doxygen/html/html/DCHG_8h.html +4 -6
  33. package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -16
  34. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  35. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  36. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +9 -9
  37. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  38. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  39. package/SVF-doxygen/html/html/DOTGraphTraits_8h.html +4 -3
  40. package/SVF-doxygen/html/html/DOTGraphTraits_8h_source.html +24 -24
  41. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +5 -5
  44. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
  45. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +12 -12
  46. package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
  47. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +3 -3
  49. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  50. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  51. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +6 -6
  52. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
  53. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +2 -2
  54. package/SVF-doxygen/html/html/GenericGraph_8h.html +8 -9
  55. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +125 -125
  56. package/SVF-doxygen/html/html/GraphPrinter_8h.html +3 -2
  57. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +7 -7
  58. package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +4 -4
  59. package/SVF-doxygen/html/html/GraphTraits_8h.html +20 -19
  60. package/SVF-doxygen/html/html/GraphTraits_8h_source.html +13 -13
  61. package/SVF-doxygen/html/html/GraphWriter_8cpp_source.html +1 -1
  62. package/SVF-doxygen/html/html/GraphWriter_8h.html +23 -22
  63. package/SVF-doxygen/html/html/GraphWriter_8h_source.html +48 -48
  64. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +7 -7
  65. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
  66. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +7 -7
  67. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +7 -7
  68. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  69. package/SVF-doxygen/html/html/ICFG_8cpp.html +3 -2
  70. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +27 -28
  71. package/SVF-doxygen/html/html/ICFG_8h.html +4 -6
  72. package/SVF-doxygen/html/html/ICFG_8h_source.html +14 -15
  73. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +2 -2
  74. package/SVF-doxygen/html/html/IRGraph_8cpp.html +3 -2
  75. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +20 -21
  76. package/SVF-doxygen/html/html/IRGraph_8h.html +4 -6
  77. package/SVF-doxygen/html/html/IRGraph_8h_source.html +9 -10
  78. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +7 -7
  79. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +38 -39
  80. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +19 -19
  81. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +16 -9
  82. package/SVF-doxygen/html/html/LLVMUtil_8h.html +6 -0
  83. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +6 -4
  84. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +6 -6
  85. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  86. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +3 -3
  87. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +23 -23
  88. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  89. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +6 -6
  90. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
  91. package/SVF-doxygen/html/html/MHP_8cpp_source.html +23 -23
  92. package/SVF-doxygen/html/html/MHP_8h_source.html +4 -4
  93. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +3 -3
  94. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
  95. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  96. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +3 -3
  97. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +8 -8
  98. package/SVF-doxygen/html/html/MTA_8cpp_source.html +3 -3
  99. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  100. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +18 -18
  102. package/SVF-doxygen/html/html/MemRegion_8h_source.html +2 -2
  103. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +21 -21
  104. package/SVF-doxygen/html/html/MemSSA_8h_source.html +2 -2
  105. package/SVF-doxygen/html/html/PCG_8cpp_source.html +18 -18
  106. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  107. package/SVF-doxygen/html/html/PTACallGraph_8cpp.html +3 -2
  108. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +27 -28
  109. package/SVF-doxygen/html/html/PTACallGraph_8h.html +4 -6
  110. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +17 -18
  111. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +6 -6
  112. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +6 -6
  113. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +3 -3
  114. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +18 -18
  115. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +3 -3
  116. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +7 -7
  117. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
  118. package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
  119. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
  120. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
  121. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +14 -14
  123. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +9 -9
  124. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +3 -3
  125. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +7 -7
  126. package/SVF-doxygen/html/html/SVFG_8cpp.html +3 -2
  127. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +23 -24
  128. package/SVF-doxygen/html/html/SVFG_8h.html +1 -3
  129. package/SVF-doxygen/html/html/SVFG_8h_source.html +13 -14
  130. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +15 -14
  131. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +4 -4
  132. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +8 -8
  133. package/SVF-doxygen/html/html/SVFIR_8h_source.html +4 -4
  134. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  135. package/SVF-doxygen/html/html/SVFModule_8h_source.html +4 -4
  136. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +9 -9
  137. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +9 -9
  138. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +12 -12
  139. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +4 -4
  140. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +9 -9
  141. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +16 -19
  142. package/SVF-doxygen/html/html/SVFValue_8h.html +3 -3
  143. package/SVF-doxygen/html/html/SVFValue_8h_source.html +210 -213
  144. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +7 -7
  145. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +13 -14
  146. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +3 -3
  147. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +17 -17
  148. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +6 -6
  149. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  150. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +7 -7
  151. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  152. package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +3 -4
  153. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +3 -3
  154. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -10
  155. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -4
  156. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +4 -4
  157. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
  158. package/SVF-doxygen/html/html/TCT_8cpp.html +3 -2
  159. package/SVF-doxygen/html/html/TCT_8cpp_source.html +38 -39
  160. package/SVF-doxygen/html/html/TCT_8h.html +4 -6
  161. package/SVF-doxygen/html/html/TCT_8h_source.html +27 -28
  162. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +10 -10
  163. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +6 -6
  164. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +2 -2
  165. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +7 -7
  166. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +8 -8
  167. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +6 -6
  168. package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
  169. package/SVF-doxygen/html/html/VFG_8cpp.html +3 -2
  170. package/SVF-doxygen/html/html/VFG_8cpp_source.html +20 -21
  171. package/SVF-doxygen/html/html/VFG_8h.html +4 -6
  172. package/SVF-doxygen/html/html/VFG_8h_source.html +14 -15
  173. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  174. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +10 -10
  175. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +3 -3
  176. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +8 -8
  177. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  178. package/SVF-doxygen/html/html/WPASolver_8h_source.html +4 -4
  179. package/SVF-doxygen/html/html/annotated.html +291 -291
  180. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +4 -4
  182. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -4
  183. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +3 -3
  184. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +3 -3
  185. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  186. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  188. package/SVF-doxygen/html/html/classSVF_1_1AliasCFLGraphBuilder.html +1 -1
  189. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +3 -3
  190. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +33 -33
  192. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +7 -7
  194. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
  196. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +7 -7
  198. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
  199. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +4 -4
  201. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  202. package/SVF-doxygen/html/html/classSVF_1_1AssignStmt.html +4 -4
  203. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +12 -12
  204. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  205. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  206. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +4 -4
  207. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +11 -11
  209. package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +4 -4
  210. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +4 -4
  211. package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +45 -44
  212. package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +29 -29
  213. package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +4 -4
  214. package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +1 -1
  215. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +16 -16
  216. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +17 -17
  217. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +3 -3
  218. package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +2 -2
  220. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  221. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +7 -7
  222. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  223. package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +56 -56
  226. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  228. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +30 -30
  230. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
  231. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +12 -12
  232. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  233. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  234. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +2 -2
  236. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +2 -2
  237. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +2 -2
  239. package/SVF-doxygen/html/html/classSVF_1_1DCHEdge.html +2 -2
  240. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +35 -35
  241. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  242. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +16 -16
  243. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  244. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +3 -3
  245. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +2 -2
  246. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +2 -2
  248. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  249. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +6 -6
  252. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +3 -4
  253. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +4 -4
  255. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +2 -2
  256. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +8 -8
  257. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  258. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +21 -21
  260. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +17 -17
  261. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +29 -29
  262. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +3 -3
  265. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +6 -6
  267. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +8 -8
  268. package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +31 -31
  269. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +44 -44
  270. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +98 -97
  271. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
  272. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +3 -4
  273. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  274. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  275. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +3 -4
  276. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter-members.html +83 -0
  278. package/SVF-doxygen/html/html/classSVF_1_1GraphPrinter.html +236 -0
  279. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +2 -2
  280. package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +12 -12
  281. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter-members.html +100 -0
  282. package/SVF-doxygen/html/html/classSVF_1_1GraphWriter.html +882 -0
  283. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +19 -19
  284. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +12 -12
  285. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +7 -7
  286. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  287. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  288. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +11 -11
  289. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +2 -2
  290. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +3 -3
  292. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +2 -2
  293. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +3 -3
  294. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +2 -2
  295. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  296. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +6 -6
  297. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  299. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +7 -7
  301. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +69 -69
  302. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +2 -2
  303. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +22 -22
  304. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +3 -3
  307. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +50 -50
  308. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +7 -7
  309. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +55 -55
  310. package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +22 -22
  312. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  313. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +4 -4
  314. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +3 -3
  315. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +6 -6
  316. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +8 -8
  317. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +37 -37
  318. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +9 -9
  319. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +36 -36
  321. package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +3 -3
  322. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +4 -4
  323. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +3 -4
  324. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +3 -3
  325. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +28 -28
  326. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +3 -3
  327. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +25 -25
  328. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +3 -3
  329. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +7 -7
  330. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
  331. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  332. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +40 -40
  333. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +7 -7
  334. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
  335. package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +1 -1
  336. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +3 -3
  337. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +2 -2
  338. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +5 -5
  339. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  340. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  341. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  342. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection-members.html +1 -1
  343. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +8 -8
  344. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +7 -9
  345. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +16 -20
  346. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +8 -10
  347. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +56 -63
  348. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +6 -8
  349. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +7 -11
  350. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +12 -14
  351. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +34 -38
  352. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +6 -8
  353. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +5 -9
  354. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +6 -8
  355. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +7 -11
  356. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +6 -8
  357. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +10 -14
  358. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +6 -8
  359. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +14 -18
  360. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +6 -8
  361. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +7 -11
  362. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +23 -25
  363. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +115 -119
  364. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +16 -16
  365. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
  366. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +43 -43
  367. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +9 -9
  368. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +9 -11
  369. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +14 -18
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +35 -35
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +48 -47
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +11 -13
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +31 -35
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +2 -2
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +6 -8
  376. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +7 -11
  377. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
  378. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +6 -8
  379. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +5 -9
  380. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +9 -9
  381. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +9 -9
  382. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +3 -3
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +25 -28
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +38 -128
  385. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +12 -12
  386. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +14 -16
  387. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +29 -33
  388. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +46 -46
  389. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +13 -13
  390. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +2 -2
  391. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +2 -2
  392. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +16 -16
  393. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver-members.html +2 -2
  394. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +12 -12
  395. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +1 -1
  396. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +9 -9
  397. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +5 -5
  398. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  399. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
  400. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder-members.html +2 -3
  401. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +21 -54
  402. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +5 -5
  403. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +72 -72
  404. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  405. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  406. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  407. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +11 -11
  408. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +5 -5
  409. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  410. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +4 -4
  411. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +4 -4
  412. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  413. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +1 -1
  414. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +12 -12
  415. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +5 -5
  416. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +3 -3
  417. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +21 -21
  418. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +13 -13
  419. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  420. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +3 -4
  421. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  422. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +1 -1
  423. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +35 -35
  424. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +6 -6
  425. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +4 -4
  426. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +1 -1
  427. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +4 -4
  428. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +7 -7
  429. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +9 -9
  430. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +4 -4
  431. package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +1 -1
  432. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +8 -8
  433. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base-members.html +112 -0
  434. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +633 -0
  435. package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.png +0 -0
  436. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base-members.html +102 -0
  437. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.html +787 -0
  438. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base.png +0 -0
  439. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy-members.html +84 -0
  440. package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +229 -0
  441. package/SVF-doxygen/html/html/classSVF_1_1iter__range-members.html +87 -0
  442. package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +342 -0
  443. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter-members.html +112 -0
  444. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +322 -0
  445. package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.png +0 -0
  446. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator-members.html +113 -0
  447. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +343 -0
  448. package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.png +0 -0
  449. package/SVF-doxygen/html/html/classes.html +59 -59
  450. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  451. package/SVF-doxygen/html/html/fastcluster__R__dm_8cpp_8inc_source.html +2 -2
  452. package/SVF-doxygen/html/html/functions_a.html +1 -1
  453. package/SVF-doxygen/html/html/functions_b.html +4 -4
  454. package/SVF-doxygen/html/html/functions_c.html +20 -18
  455. package/SVF-doxygen/html/html/functions_d.html +20 -20
  456. package/SVF-doxygen/html/html/functions_e.html +14 -16
  457. package/SVF-doxygen/html/html/functions_eval_i.html +2 -2
  458. package/SVF-doxygen/html/html/functions_f.html +1 -1
  459. package/SVF-doxygen/html/html/functions_func.html +1 -1
  460. package/SVF-doxygen/html/html/functions_func_b.html +2 -2
  461. package/SVF-doxygen/html/html/functions_func_c.html +4 -4
  462. package/SVF-doxygen/html/html/functions_func_d.html +14 -14
  463. package/SVF-doxygen/html/html/functions_func_e.html +8 -8
  464. package/SVF-doxygen/html/html/functions_func_g.html +72 -72
  465. package/SVF-doxygen/html/html/functions_func_h.html +4 -7
  466. package/SVF-doxygen/html/html/functions_func_i.html +17 -20
  467. package/SVF-doxygen/html/html/functions_func_m.html +1 -1
  468. package/SVF-doxygen/html/html/functions_func_n.html +3 -3
  469. package/SVF-doxygen/html/html/functions_func_o.html +24 -24
  470. package/SVF-doxygen/html/html/functions_func_p.html +4 -4
  471. package/SVF-doxygen/html/html/functions_func_r.html +2 -2
  472. package/SVF-doxygen/html/html/functions_func_s.html +15 -18
  473. package/SVF-doxygen/html/html/functions_func_w.html +8 -8
  474. package/SVF-doxygen/html/html/functions_g.html +84 -82
  475. package/SVF-doxygen/html/html/functions_h.html +6 -12
  476. package/SVF-doxygen/html/html/functions_i.html +40 -43
  477. package/SVF-doxygen/html/html/functions_l.html +3 -3
  478. package/SVF-doxygen/html/html/functions_m.html +1 -1
  479. package/SVF-doxygen/html/html/functions_n.html +30 -30
  480. package/SVF-doxygen/html/html/functions_o.html +39 -43
  481. package/SVF-doxygen/html/html/functions_p.html +16 -16
  482. package/SVF-doxygen/html/html/functions_r.html +8 -6
  483. package/SVF-doxygen/html/html/functions_rela.html +3 -3
  484. package/SVF-doxygen/html/html/functions_s.html +22 -25
  485. package/SVF-doxygen/html/html/functions_t.html +3 -3
  486. package/SVF-doxygen/html/html/functions_type_b.html +1 -1
  487. package/SVF-doxygen/html/html/functions_type_c.html +7 -7
  488. package/SVF-doxygen/html/html/functions_type_d.html +4 -4
  489. package/SVF-doxygen/html/html/functions_type_e.html +4 -4
  490. package/SVF-doxygen/html/html/functions_type_g.html +6 -6
  491. package/SVF-doxygen/html/html/functions_type_i.html +4 -4
  492. package/SVF-doxygen/html/html/functions_type_n.html +27 -27
  493. package/SVF-doxygen/html/html/functions_type_p.html +3 -3
  494. package/SVF-doxygen/html/html/functions_type_r.html +2 -2
  495. package/SVF-doxygen/html/html/functions_type_v.html +2 -2
  496. package/SVF-doxygen/html/html/functions_v.html +5 -5
  497. package/SVF-doxygen/html/html/functions_vars_b.html +1 -1
  498. package/SVF-doxygen/html/html/functions_vars_d.html +1 -1
  499. package/SVF-doxygen/html/html/functions_vars_e.html +1 -1
  500. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  501. package/SVF-doxygen/html/html/functions_vars_g.html +7 -5
  502. package/SVF-doxygen/html/html/functions_vars_h.html +0 -3
  503. package/SVF-doxygen/html/html/functions_vars_i.html +6 -6
  504. package/SVF-doxygen/html/html/functions_vars_o.html +1 -1
  505. package/SVF-doxygen/html/html/functions_vars_p.html +1 -1
  506. package/SVF-doxygen/html/html/functions_w.html +17 -17
  507. package/SVF-doxygen/html/html/hierarchy.html +159 -159
  508. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +4 -4
  509. package/SVF-doxygen/html/html/iterator_8h.html +16 -15
  510. package/SVF-doxygen/html/html/iterator_8h_source.html +53 -53
  511. package/SVF-doxygen/html/html/iterator__range_8h.html +9 -8
  512. package/SVF-doxygen/html/html/iterator__range_8h_source.html +11 -11
  513. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  514. package/SVF-doxygen/html/html/namespaceSVF.html +575 -9
  515. package/SVF-doxygen/html/html/namespaceSVF_1_1DOT.html +107 -0
  516. package/SVF-doxygen/html/html/namespaceSVF_1_1GraphProgram.html +122 -0
  517. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +65 -7
  518. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +3 -3
  519. package/SVF-doxygen/html/html/namespacellvm.html +1 -572
  520. package/SVF-doxygen/html/html/namespacemembers_c.html +3 -3
  521. package/SVF-doxygen/html/html/namespacemembers_d.html +1 -1
  522. package/SVF-doxygen/html/html/namespacemembers_e.html +1 -1
  523. package/SVF-doxygen/html/html/namespacemembers_enum.html +1 -1
  524. package/SVF-doxygen/html/html/namespacemembers_eval.html +5 -5
  525. package/SVF-doxygen/html/html/namespacemembers_f.html +1 -1
  526. package/SVF-doxygen/html/html/namespacemembers_func_c.html +2 -2
  527. package/SVF-doxygen/html/html/namespacemembers_func_e.html +1 -1
  528. package/SVF-doxygen/html/html/namespacemembers_func_i.html +8 -5
  529. package/SVF-doxygen/html/html/namespacemembers_func_m.html +4 -4
  530. package/SVF-doxygen/html/html/namespacemembers_func_n.html +1 -1
  531. package/SVF-doxygen/html/html/namespacemembers_func_v.html +1 -1
  532. package/SVF-doxygen/html/html/namespacemembers_func_w.html +1 -1
  533. package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
  534. package/SVF-doxygen/html/html/namespacemembers_i.html +6 -3
  535. package/SVF-doxygen/html/html/namespacemembers_m.html +4 -4
  536. package/SVF-doxygen/html/html/namespacemembers_n.html +3 -3
  537. package/SVF-doxygen/html/html/namespacemembers_r.html +1 -1
  538. package/SVF-doxygen/html/html/namespacemembers_t.html +1 -1
  539. package/SVF-doxygen/html/html/namespacemembers_type_g.html +1 -1
  540. package/SVF-doxygen/html/html/namespacemembers_type_r.html +1 -1
  541. package/SVF-doxygen/html/html/namespacemembers_v.html +1 -1
  542. package/SVF-doxygen/html/html/namespacemembers_w.html +1 -1
  543. package/SVF-doxygen/html/html/namespaces.html +5 -5
  544. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  545. package/SVF-doxygen/html/html/search/all_1.js +1 -1
  546. package/SVF-doxygen/html/html/search/all_10.js +12 -12
  547. package/SVF-doxygen/html/html/search/all_11.js +7 -7
  548. package/SVF-doxygen/html/html/search/all_12.js +7 -6
  549. package/SVF-doxygen/html/html/search/all_13.js +7 -7
  550. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  551. package/SVF-doxygen/html/html/search/all_16.js +10 -10
  552. package/SVF-doxygen/html/html/search/all_2.js +3 -3
  553. package/SVF-doxygen/html/html/search/all_3.js +7 -7
  554. package/SVF-doxygen/html/html/search/all_4.js +20 -20
  555. package/SVF-doxygen/html/html/search/all_5.js +9 -9
  556. package/SVF-doxygen/html/html/search/all_6.js +2 -2
  557. package/SVF-doxygen/html/html/search/all_7.js +87 -87
  558. package/SVF-doxygen/html/html/search/all_8.js +1 -3
  559. package/SVF-doxygen/html/html/search/all_9.js +23 -23
  560. package/SVF-doxygen/html/html/search/all_c.js +2 -4
  561. package/SVF-doxygen/html/html/search/all_d.js +5 -5
  562. package/SVF-doxygen/html/html/search/all_e.js +11 -11
  563. package/SVF-doxygen/html/html/search/all_f.js +19 -19
  564. package/SVF-doxygen/html/html/search/classes_3.js +13 -13
  565. package/SVF-doxygen/html/html/search/classes_6.js +64 -64
  566. package/SVF-doxygen/html/html/search/classes_8.js +10 -10
  567. package/SVF-doxygen/html/html/search/classes_a.js +1 -1
  568. package/SVF-doxygen/html/html/search/classes_d.js +2 -2
  569. package/SVF-doxygen/html/html/search/classes_e.js +1 -1
  570. package/SVF-doxygen/html/html/search/enums_8.js +1 -1
  571. package/SVF-doxygen/html/html/search/enumvalues_10.js +1 -1
  572. package/SVF-doxygen/html/html/search/enumvalues_2.js +1 -1
  573. package/SVF-doxygen/html/html/search/enumvalues_3.js +1 -1
  574. package/SVF-doxygen/html/html/search/enumvalues_5.js +1 -1
  575. package/SVF-doxygen/html/html/search/enumvalues_8.js +2 -2
  576. package/SVF-doxygen/html/html/search/enumvalues_b.js +1 -1
  577. package/SVF-doxygen/html/html/search/functions_0.js +1 -1
  578. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  579. package/SVF-doxygen/html/html/search/functions_10.js +2 -2
  580. package/SVF-doxygen/html/html/search/functions_11.js +1 -2
  581. package/SVF-doxygen/html/html/search/functions_14.js +1 -1
  582. package/SVF-doxygen/html/html/search/functions_15.js +8 -8
  583. package/SVF-doxygen/html/html/search/functions_2.js +4 -4
  584. package/SVF-doxygen/html/html/search/functions_3.js +5 -5
  585. package/SVF-doxygen/html/html/search/functions_4.js +7 -7
  586. package/SVF-doxygen/html/html/search/functions_6.js +21 -21
  587. package/SVF-doxygen/html/html/search/functions_7.js +1 -2
  588. package/SVF-doxygen/html/html/search/functions_8.js +8 -8
  589. package/SVF-doxygen/html/html/search/functions_c.js +5 -5
  590. package/SVF-doxygen/html/html/search/functions_d.js +4 -4
  591. package/SVF-doxygen/html/html/search/functions_e.js +14 -14
  592. package/SVF-doxygen/html/html/search/functions_f.js +4 -4
  593. package/SVF-doxygen/html/html/search/namespaces_0.js +0 -2
  594. package/SVF-doxygen/html/html/search/namespaces_1.js +2 -0
  595. package/SVF-doxygen/html/html/search/related_9.js +3 -3
  596. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -1
  597. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  598. package/SVF-doxygen/html/html/search/typedefs_2.js +2 -2
  599. package/SVF-doxygen/html/html/search/typedefs_3.js +2 -2
  600. package/SVF-doxygen/html/html/search/typedefs_4.js +1 -1
  601. package/SVF-doxygen/html/html/search/typedefs_6.js +3 -3
  602. package/SVF-doxygen/html/html/search/typedefs_7.js +2 -2
  603. package/SVF-doxygen/html/html/search/typedefs_c.js +4 -4
  604. package/SVF-doxygen/html/html/search/typedefs_e.js +2 -2
  605. package/SVF-doxygen/html/html/search/typedefs_f.js +2 -2
  606. package/SVF-doxygen/html/html/search/variables_10.js +1 -1
  607. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  608. package/SVF-doxygen/html/html/search/variables_2.js +1 -1
  609. package/SVF-doxygen/html/html/search/variables_4.js +1 -1
  610. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  611. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  612. package/SVF-doxygen/html/html/search/variables_7.js +2 -2
  613. package/SVF-doxygen/html/html/search/variables_8.js +0 -1
  614. package/SVF-doxygen/html/html/search/variables_9.js +5 -5
  615. package/SVF-doxygen/html/html/search/variables_c.js +1 -1
  616. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  617. package/SVF-doxygen/html/html/search/variables_f.js +1 -1
  618. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits-members.html +99 -0
  619. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.html +193 -0
  620. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits.png +0 -0
  621. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +105 -0
  622. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +443 -0
  623. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
  624. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4-members.html +104 -0
  625. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.html +388 -0
  626. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CHGraph_01_5_01_4.png +0 -0
  627. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4-members.html +106 -0
  628. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +481 -0
  629. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.png +0 -0
  630. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4-members.html +106 -0
  631. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +475 -0
  632. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.png +0 -0
  633. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4-members.html +107 -0
  634. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +486 -0
  635. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.png +0 -0
  636. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4-members.html +106 -0
  637. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +457 -0
  638. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.png +0 -0
  639. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4-members.html +108 -0
  640. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +595 -0
  641. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.png +0 -0
  642. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4-members.html +105 -0
  643. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +409 -0
  644. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01TCT_01_5_01_4.png +0 -0
  645. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4-members.html +107 -0
  646. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +543 -0
  647. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01VFG_01_5_01_4.png +0 -0
  648. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits-members.html +99 -0
  649. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.html +855 -0
  650. package/SVF-doxygen/html/html/structSVF_1_1DefaultDOTGraphTraits.png +0 -0
  651. package/SVF-doxygen/html/html/structSVF_1_1GenericEdge_1_1equalGEdge.html +3 -3
  652. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits-members.html +81 -0
  653. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits.html +116 -0
  654. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4-members.html +81 -0
  655. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.html +106 -0
  656. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01Inverse_3_01T_01_4_01_4_01_4.png +0 -0
  657. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4-members.html +81 -0
  658. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +110 -0
  659. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
  660. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4-members.html +81 -0
  661. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.html +110 -0
  662. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1CHNode_01_5_01_4_01_4.png +0 -0
  663. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4-members.html +81 -0
  664. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.html +110 -0
  665. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ConstraintNode_01_5_01_4_01_4.png +0 -0
  666. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4-members.html +81 -0
  667. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.html +110 -0
  668. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1DCHNode_01_5_01_4_01_4.png +0 -0
  669. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4-members.html +88 -0
  670. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +324 -0
  671. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4-members.html +81 -0
  672. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.html +110 -0
  673. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1ICFGNode_01_5_01_4_01_4.png +0 -0
  674. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4-members.html +81 -0
  675. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.html +110 -0
  676. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1PTACallGraphNode_01_5_01_4_01_4.png +0 -0
  677. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4-members.html +81 -0
  678. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.html +110 -0
  679. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1SVFVar_01_5_01_4_01_4.png +0 -0
  680. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4-members.html +81 -0
  681. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.html +110 -0
  682. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1TCTNode_01_5_01_4_01_4.png +0 -0
  683. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4-members.html +81 -0
  684. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.html +110 -0
  685. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01Inverse_3_01SVF_1_1VFGNode_01_5_01_4_01_4.png +0 -0
  686. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
  687. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +126 -0
  688. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
  689. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4-members.html +81 -0
  690. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +106 -0
  691. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
  692. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4-members.html +81 -0
  693. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.html +126 -0
  694. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHGraph_01_5_01_4.png +0 -0
  695. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4-members.html +81 -0
  696. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.html +106 -0
  697. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1CHNode_01_5_01_4.png +0 -0
  698. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4-members.html +81 -0
  699. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.html +126 -0
  700. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintGraph_01_5_01_4.png +0 -0
  701. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4-members.html +81 -0
  702. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.html +106 -0
  703. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ConstraintNode_01_5_01_4.png +0 -0
  704. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4-members.html +81 -0
  705. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.html +126 -0
  706. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHGraph_01_5_01_4.png +0 -0
  707. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4-members.html +81 -0
  708. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.html +106 -0
  709. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1DCHNode_01_5_01_4.png +0 -0
  710. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4-members.html +99 -0
  711. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +467 -0
  712. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.png +0 -0
  713. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4-members.html +89 -0
  714. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +367 -0
  715. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.png +0 -0
  716. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4-members.html +81 -0
  717. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.html +106 -0
  718. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFGNode_01_5_01_4.png +0 -0
  719. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4-members.html +81 -0
  720. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.html +126 -0
  721. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1ICFG_01_5_01_4.png +0 -0
  722. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4-members.html +81 -0
  723. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.html +126 -0
  724. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1IRGraph_01_5_01_4.png +0 -0
  725. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4-members.html +81 -0
  726. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.html +106 -0
  727. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraphNode_01_5_01_4.png +0 -0
  728. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4-members.html +81 -0
  729. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.html +126 -0
  730. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1PTACallGraph_01_5_01_4.png +0 -0
  731. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4-members.html +81 -0
  732. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +126 -0
  733. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.png +0 -0
  734. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4-members.html +81 -0
  735. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.html +106 -0
  736. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFVar_01_5_01_4.png +0 -0
  737. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4-members.html +81 -0
  738. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.html +106 -0
  739. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCTNode_01_5_01_4.png +0 -0
  740. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4-members.html +81 -0
  741. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.html +126 -0
  742. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1TCT_01_5_01_4.png +0 -0
  743. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4-members.html +81 -0
  744. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.html +106 -0
  745. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFGNode_01_5_01_4.png +0 -0
  746. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4-members.html +81 -0
  747. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.html +126 -0
  748. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1VFG_01_5_01_4.png +0 -0
  749. package/SVF-doxygen/html/html/structSVF_1_1Inverse-members.html +82 -0
  750. package/SVF-doxygen/html/html/structSVF_1_1Inverse.html +154 -0
  751. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter-members.html +111 -0
  752. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.html +279 -0
  753. package/SVF-doxygen/html/html/structSVF_1_1pointee__iter.png +0 -0
  754. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  755. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  756. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  757. package/SVF-doxygen/html/html/svf-ex_8cpp.html +9 -9
  758. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  759. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +4 -4
  760. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  761. package/include/Graphs/CFLGraph.h +6 -6
  762. package/include/Graphs/CHG.h +6 -6
  763. package/include/Graphs/ConsG.h +6 -6
  764. package/include/Graphs/DOTGraphTraits.h +3 -3
  765. package/include/Graphs/GenericGraph.h +10 -9
  766. package/include/Graphs/GraphPrinter.h +2 -2
  767. package/include/Graphs/GraphTraits.h +29 -29
  768. package/include/Graphs/GraphWriter.h +6 -6
  769. package/include/Graphs/ICFG.h +6 -6
  770. package/include/Graphs/IRGraph.h +6 -7
  771. package/include/Graphs/PTACallGraph.h +6 -6
  772. package/include/Graphs/SVFG.h +6 -6
  773. package/include/Graphs/VFG.h +6 -6
  774. package/include/MTA/TCT.h +6 -6
  775. package/include/SABER/SrcSnkSolver.h +2 -2
  776. package/include/SVF-LLVM/DCHG.h +6 -6
  777. package/include/SVF-LLVM/LLVMUtil.h +5 -0
  778. package/include/SVF-LLVM/SymbolTableBuilder.h +0 -3
  779. package/include/SVFIR/SVFValue.h +2 -11
  780. package/include/SVFIR/SVFVariables.h +5 -5
  781. package/include/Util/GraphReachSolver.h +2 -2
  782. package/include/Util/SCC.h +1 -1
  783. package/include/Util/iterator.h +32 -32
  784. package/include/Util/iterator_range.h +11 -11
  785. package/include/WPA/WPASolver.h +1 -1
  786. package/lib/Graphs/CFLGraph.cpp +2 -2
  787. package/lib/Graphs/CHG.cpp +2 -2
  788. package/lib/Graphs/ConsG.cpp +2 -2
  789. package/lib/Graphs/GraphWriter.cpp +1 -1
  790. package/lib/Graphs/ICFG.cpp +2 -2
  791. package/lib/Graphs/IRGraph.cpp +2 -2
  792. package/lib/Graphs/PTACallGraph.cpp +2 -2
  793. package/lib/Graphs/SVFG.cpp +1 -1
  794. package/lib/Graphs/VFG.cpp +2 -2
  795. package/lib/MTA/TCT.cpp +1 -1
  796. package/lib/SVF-LLVM/LLVMModule.cpp +0 -2
  797. package/lib/SVF-LLVM/LLVMUtil.cpp +40 -0
  798. package/lib/SVF-LLVM/SVFIRBuilder.cpp +1 -1
  799. package/lib/SVF-LLVM/SymbolTableBuilder.cpp +0 -34
  800. package/lib/SVFIR/SVFValue.cpp +0 -1
  801. package/package.json +1 -1
@@ -66,38 +66,38 @@ $(function() {
66
66
  <div class="title">ConsG.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="ConsG_8cpp.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">//===- ConsG.cpp -- Constraint graph representation-----------------------------//</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"> * ConstraintGraph.cpp</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: Oct 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ConsG_8h.html">Graphs/ConsG.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</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="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a1973126243ff619033a78a3782944278"> 40</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a1973126243ff619033a78a3782944278">ConstraintGraph::buildCG</a>()</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// initialize nodes</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = pag-&gt;begin(), eit = pag-&gt;end(); it!=eit; ++it)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; addConstraintNode(<span class="keyword">new</span> <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>(it-&gt;first), it-&gt;first);</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="comment">// initialize edges</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; addrs = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>* edge = SVFUtil::cast&lt;AddrStmt&gt;(*iter);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; addAddrCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; copys = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = copys.begin(), eiter =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; copys.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>* edge = SVFUtil::cast&lt;CopyStmt&gt;(*iter);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; phis = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = phis.begin(), eiter =</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; phis.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* edge = SVFUtil::cast&lt;PhiStmt&gt;(*iter);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> opVar : edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; addCopyCGEdge(opVar-&gt;getId(),edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</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;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; selects = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = selects.begin(), eiter =</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; selects.end(); iter != eiter; ++iter)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>* edge = SVFUtil::cast&lt;SelectStmt&gt;(*iter);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> opVar : edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; addCopyCGEdge(opVar-&gt;getId(),edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</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;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; calls = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; calls.end(); iter != eiter; ++iter)</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="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* edge = SVFUtil::cast&lt;CallPE&gt;(*iter);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; rets = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; rets.end(); iter != eiter; ++iter)</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="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* edge = SVFUtil::cast&lt;RetPE&gt;(*iter);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdfks = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; tdfks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* edge = SVFUtil::cast&lt;TDForkPE&gt;(*iter);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdjns = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; tdjns.end(); iter != eiter; ++iter)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* edge = SVFUtil::cast&lt;TDJoinPE&gt;(*iter);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; ngeps = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; ngeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* edge = SVFUtil::cast&lt;GepStmt&gt;(*iter);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; addVariantGepCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; addNormalGepCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>());</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; loads.end(); iter != eiter; ++iter)</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; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* edge = SVFUtil::cast&lt;LoadStmt&gt;(*iter);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; addLoadCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; stores.end(); iter != eiter; ++iter)</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; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* edge = SVFUtil::cast&lt;StoreStmt&gt;(*iter);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; addStoreCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44"> 148</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">ConstraintGraph::destroy</a>()</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrCGEdge.html#a131779667553499b85423e1932664252"> 155</a></span>&#160;<a class="code" href="classSVF_1_1AddrCGEdge.html#a9c8da69a469e51d83c5009ba2685bcf6">AddrCGEdge::AddrCGEdge</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* s, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* d, <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; : <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>(s,d,Addr,id)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;{</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// Retarget addr edges may lead s to be a dummy node</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(s-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; (void)node; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</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; assert(!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;a dummy node??&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266"> 170</a></span>&#160;<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266">ConstraintGraph::addAddrCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrCGEdge.html#a9c8da69a469e51d83c5009ba2685bcf6">AddrCGEdge</a>(srcNode, dstNode, edgeIndex++);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">bool</span> inserted = AddrCGEdgeSet.insert(edge).second;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new AddrCGEdge not added??&quot;</span>);</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; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#af129941c522dbc1b0fe94f84eea0d97a">addOutgoingAddrEdge</a>(edge);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aeff08dd512d0a97fb14069b37386e9fe">addIncomingAddrEdge</a>(edge);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758"> 190</a></span>&#160;<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">ConstraintGraph::addCopyCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>) || srcNode == dstNode)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>(srcNode, dstNode, edgeIndex++);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">bool</span> inserted = directEdgeSet.insert(edge).second;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new CopyCGEdge not added??&quot;</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a2395948518a1befb7a3762bbad6adf9f">addOutgoingCopyEdge</a>(edge);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#ad54cc825bb7f5642671e75b90b2633a2">addIncomingCopyEdge</a>(edge);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a5aac453464955185ca0d47e91db9df7b"> 213</a></span>&#160;<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a5aac453464955185ca0d47e91db9df7b">ConstraintGraph::addNormalGepCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a>))</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>(srcNode, dstNode,ls, edgeIndex++);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">bool</span> inserted = directEdgeSet.insert(edge).second;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new NormalGepCGEdge not added??&quot;</span>);</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; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</a>(edge);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</a>(edge);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f"> 234</a></span>&#160;<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">ConstraintGraph::addVariantGepCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</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; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>))</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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; <a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>(srcNode, dstNode, edgeIndex++);</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; <span class="keywordtype">bool</span> inserted = directEdgeSet.insert(edge).second;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new VariantGepCGEdge not added??&quot;</span>);</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; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</a>(edge);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</a>(edge);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934"> 255</a></span>&#160;<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">ConstraintGraph::addLoadCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>)</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; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>(srcNode, dstNode, edgeIndex++);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">bool</span> inserted = LoadCGEdgeSet.insert(edge).second;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new LoadCGEdge not added??&quot;</span>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aa95df9972daaf3a2f92480a5fdc5b3a1">addOutgoingLoadEdge</a>(edge);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a9d1bb95ad5549d7e6030fe07f8e070a2">addIncomingLoadEdge</a>(edge);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0"> 276</a></span>&#160;<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">ConstraintGraph::addStoreCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>))</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>(srcNode, dstNode, edgeIndex++);</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"> 285</span>&#160; <span class="keywordtype">bool</span> inserted = StoreCGEdgeSet.insert(edge).second;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new StoreCGEdge not added??&quot;</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a18a52c763aa946f06798dc5592f5c1e0">addOutgoingStoreEdge</a>(edge);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a202193059dd3122d969561080b82c504">addIncomingStoreEdge</a>(edge);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;}</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722"> 302</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">ConstraintGraph::reTargetDstOfEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* newDstNode)</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; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> newDstNodeID = newDstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* load = SVFUtil::dyn_cast&lt;LoadCGEdge&gt;(edge))</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; removeLoadEdge(load);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; addLoadCGEdge(srcId,newDstNodeID);</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="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</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; removeStoreEdge(store);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; addStoreCGEdge(srcId,newDstNodeID);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(edge))</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; removeDirectEdge(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; addCopyCGEdge(srcId,newDstNodeID);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(edge))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls = gep-&gt;getLocationSet();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; removeDirectEdge(gep);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; addNormalGepCGEdge(srcId,newDstNodeID,ls);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(edge))</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; removeDirectEdge(gep);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; addVariantGepCGEdge(srcId,newDstNodeID);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; removeAddrEdge(addr);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214"> 346</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">ConstraintGraph::reTargetSrcOfEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* newSrcNode)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> newSrcNodeID = newSrcNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* load = SVFUtil::dyn_cast&lt;LoadCGEdge&gt;(edge))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; removeLoadEdge(load);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; addLoadCGEdge(newSrcNodeID,dstId);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; removeStoreEdge(store);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; addStoreCGEdge(newSrcNodeID,dstId);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(edge))</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; removeDirectEdge(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; addCopyCGEdge(newSrcNodeID,dstId);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(edge))</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls = gep-&gt;getLocationSet();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; removeDirectEdge(gep);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; addNormalGepCGEdge(newSrcNodeID,dstId,ls);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(edge))</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; removeDirectEdge(gep);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; addVariantGepCGEdge(newSrcNodeID,dstId);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; removeAddrEdge(addr);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee"> 387</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">ConstraintGraph::removeAddrEdge</a>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* edge)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;{</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;removeOutgoingAddrEdge(edge);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;removeIncomingAddrEdge(edge);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = AddrCGEdgeSet.erase(edge);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;}</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28"> 400</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">ConstraintGraph::removeLoadEdge</a>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* edge)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;removeOutgoingLoadEdge(edge);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;removeIncomingLoadEdge(edge);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = LoadCGEdgeSet.erase(edge);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;}</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2"> 413</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">ConstraintGraph::removeStoreEdge</a>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* edge)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;removeOutgoingStoreEdge(edge);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;removeIncomingStoreEdge(edge);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = StoreCGEdgeSet.erase(edge);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;}</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244"> 426</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">ConstraintGraph::removeDirectEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge)</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;{</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;removeOutgoingDirectEdge(edge);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;removeIncomingDirectEdge(edge);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = directEdgeSet.erase(edge);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;}</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd"> 441</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd">ConstraintGraph::moveInEdgesToRepNode</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* rep )</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;{</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; ++it)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subInEdge = *it;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span>(sccRepNode(subInEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) != rep-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; nonSccEdges.push_back(subInEdge);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; sccEdges.push_back(subInEdge);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge dst to rep</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; nonSccEdges.pop_back();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; reTargetDstOfEdge(edge,rep);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; sccEdges.pop_back();</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; removeDirectEdge(edge);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (!isZeroOffsettedGepCGEdge(edge))</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; removeDirectEdge(edge);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge&gt;(edge) || SVFUtil::isa&lt;StoreCGEdge&gt;(edge))</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; reTargetDstOfEdge(edge,rep);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; removeAddrEdge(addr);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;}</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59"> 499</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59">ConstraintGraph::moveOutEdgesToRepNode</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>*node, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* rep )</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; ++it)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subOutEdge = *it;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span>(sccRepNode(subOutEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()) != rep-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; nonSccEdges.push_back(subOutEdge);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; sccEdges.push_back(subOutEdge);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge src to rep</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; nonSccEdges.pop_back();</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; reTargetSrcOfEdge(edge,rep);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; sccEdges.pop_back();</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; removeDirectEdge(edge);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (!isZeroOffsettedGepCGEdge(edge))</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; removeDirectEdge(edge);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge&gt;(edge) || SVFUtil::isa&lt;StoreCGEdge&gt;(edge))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; reTargetSrcOfEdge(edge,rep);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; removeAddrEdge(addr);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;}</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462"> 558</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">ConstraintGraph::dump</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;{</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), name, <span class="keyword">this</span>);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce"> 566</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">ConstraintGraph::print</a>()</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----------------ConstraintGraph--------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; addrs = this-&gt;getAddrCGEdges();</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = addrs.begin(),</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; eiter = addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Addr --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; directs = this-&gt;getDirectCGEdges();</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = directs.begin(),</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; eiter = directs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(*iter))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getDstID()</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* ngep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(*iter))</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; ngep-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- NormalGep (&quot;</span> &lt;&lt; ngep-&gt;getConstantFieldIdx()</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; ngep-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* <a class="code" href="CFLGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a> = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(*iter))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="CFLGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a>-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VarintGep --&gt; &quot;</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; &lt;&lt; <a class="code" href="CFLGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a>-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;wrong constraint edge kind!&quot;</span>);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; loads = this-&gt;getLoadCGEdges();</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = loads.begin(),</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; eiter = loads.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Load --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; stores = this-&gt;getStoreCGEdges();</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = stores.begin(),</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; eiter = stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Store --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; &lt;&lt; <span class="stringliteral">&quot;--------------------------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;}</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c"> 626</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c">ConstraintGraph::view</a>()</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;{</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="namespacellvm.html#a470c5592e4cd36a22901d15832b9c41b">llvm::ViewGraph</a>(<span class="keyword">this</span>, <span class="stringliteral">&quot;Constraint Graph&quot;</span>);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;}</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ae42c4a86f8c588e348ce4b0d7d919393"> 633</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#ae42c4a86f8c588e348ce4b0d7d919393">ConstraintNode::directOutEdgeBegin</a>()</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;{</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> directOutEdges.begin();</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> copyOutEdges.begin();</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;}</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;</div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#aa77fb67a62abe4c28cecc73d395d7b12"> 641</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#aa77fb67a62abe4c28cecc73d395d7b12">ConstraintNode::directOutEdgeEnd</a>()</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;{</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">return</span> directOutEdges.end();</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> copyOutEdges.end();</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;}</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00649"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a947fd86d30a4f0145280ab9a56fd8b10"> 649</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a947fd86d30a4f0145280ab9a56fd8b10">ConstraintNode::directInEdgeBegin</a>()</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;{</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">return</span> directInEdges.begin();</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">return</span> copyInEdges.begin();</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;}</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a1aeb6c40a8078d07dc6837114bddb213"> 657</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a1aeb6c40a8078d07dc6837114bddb213">ConstraintNode::directInEdgeEnd</a>()</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;{</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">return</span> directInEdges.end();</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> copyInEdges.end();</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;}</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a047851ec7866332ab422b48e261b5f75"> 665</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#ae42c4a86f8c588e348ce4b0d7d919393">ConstraintNode::directOutEdgeBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">return</span> directOutEdges.begin();</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> copyOutEdges.begin();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;}</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#aef70a5e58c9917ea3f7329df84e65e62"> 673</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#aa77fb67a62abe4c28cecc73d395d7b12">ConstraintNode::directOutEdgeEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">return</span> directOutEdges.end();</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> copyOutEdges.end();</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;}</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ae40976e622fdfe9c52b56ec386f1a53c"> 681</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a947fd86d30a4f0145280ab9a56fd8b10">ConstraintNode::directInEdgeBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> directInEdges.begin();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">return</span> copyInEdges.begin();</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;}</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ad59c356474cf6c496da12e827ec2dd98"> 689</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a1aeb6c40a8078d07dc6837114bddb213">ConstraintNode::directInEdgeEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> directInEdges.end();</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">return</span> copyInEdges.end();</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;}</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;{</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html"> 704</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*&gt; : <span class="keyword">public</span> <a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTGraphTraits&lt;SVFIR*&gt;</a></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;{</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div><div class="line"><a name="l00707"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ac3889bd563cdc21a55df0524df2ae4da"> 707</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ac3889bd563cdc21a55df0524df2ae4da">NodeType</a>;</div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a007736227bec42182208176006b7d83d"> 708</a></span>&#160; <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a007736227bec42182208176006b7d83d">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="structllvm_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>*&gt;(isSimple)</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9ed4562e3c1223c20e76e1372ba8b30d"> 714</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9ed4562e3c1223c20e76e1372ba8b30d">getGraphName</a>(<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstraintG&quot;</span>;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; }</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;<span class="preprocessor">#if LLVM_VERSION_MAJOR &gt;= 12</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> isNodeHidden(NodeType *<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *)</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a2a467ab9b0a9ef28f88099f8ed58bba6"> 723</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a2a467ab9b0a9ef28f88099f8ed58bba6">isNodeHidden</a>(NodeType *n)</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#adec2012e10130f664fe0ea3acf39f78b">Options::ShowHiddenNode</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> (n-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &amp;&amp; n-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty());</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa72b3ad953c6ea3309c83735512ff408"> 732</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa72b3ad953c6ea3309c83735512ff408">getNodeLabel</a>(NodeType *n, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(n-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordtype">bool</span> briefDisplay = <a class="code" href="classSVF_1_1Options.html#a82370c2b8c9cd62b5767ceeaeeaa7177">Options::BriefConsCGDotGraph</a>;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordtype">bool</span> nameDisplay = <span class="keyword">true</span>;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">if</span> (briefDisplay)</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">if</span> (nameDisplay)</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>();</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="comment">// print the whole value</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; !SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>();</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; }</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;</div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a0ce25ef874ffaa798ae7ad498274b2f7"> 765</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a0ce25ef874ffaa798ae7ad498274b2f7">getNodeAttributes</a>(NodeType *n, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(n-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepValVar&gt;(node))</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=hexagon&quot;</span>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValVar&gt;(node))</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=diamond&quot;</span>;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box&quot;</span>;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(node))</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepObjVar&gt;(node))</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=doubleoctagon&quot;</span>;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FIObjVar&gt;(node))</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box3d&quot;</span>;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=tab&quot;</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=component&quot;</span>;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(node))</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=Mrecord&quot;</span>;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;VarArgPN&gt;(node))</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; {</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=octagon&quot;</span>;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; {</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;no such kind!!&quot;</span>);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l00804"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad7d0a5d387c31c186b8527c7c6bd9791"> 804</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad7d0a5d387c31c186b8527c7c6bd9791">getEdgeAttributes</a>(NodeType*, EdgeIter EI, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>)</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; }</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; || edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>)</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>)</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; }</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>)</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; }</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a76e78cd94e56ca46ac7e1db7162e594b"> 837</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a76e78cd94e56ca46ac7e1db7162e594b">getEdgeSourceLabel</a>(NodeType*, EdgeIter)</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;};</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="ttc" id="classSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00276">SVFStatements.h:276</a></div></div>
70
- <div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00082">GenericGraph.h:82</a></div></div>
69
+ <a href="ConsG_8cpp.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">//===- ConsG.cpp -- Constraint graph representation-----------------------------//</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"> * ConstraintGraph.cpp</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: Oct 14, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ConsG_8h.html">Graphs/ConsG.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</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="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a1973126243ff619033a78a3782944278"> 40</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a1973126243ff619033a78a3782944278">ConstraintGraph::buildCG</a>()</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;{</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// initialize nodes</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">for</span>(<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> it = pag-&gt;begin(), eit = pag-&gt;end(); it!=eit; ++it)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; {</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; addConstraintNode(<span class="keyword">new</span> <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>(it-&gt;first), it-&gt;first);</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="comment">// initialize edges</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; addrs = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVFStmt::Addr</a>);</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = addrs.begin(), eiter =</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1AddrStmt.html">AddrStmt</a>* edge = SVFUtil::cast&lt;AddrStmt&gt;(*iter);</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; addAddrCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; copys = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad3469cdfb64f05163b5310b731b221da">SVFStmt::Copy</a>);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = copys.begin(), eiter =</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; copys.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CopyStmt.html">CopyStmt</a>* edge = SVFUtil::cast&lt;CopyStmt&gt;(*iter);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; phis = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVFStmt::Phi</a>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = phis.begin(), eiter =</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; phis.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PhiStmt.html">PhiStmt</a>* edge = SVFUtil::cast&lt;PhiStmt&gt;(*iter);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> opVar : edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; addCopyCGEdge(opVar-&gt;getId(),edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</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;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; selects = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9ad9397ec243a61992dc2b5681bea587fa">SVFStmt::Select</a>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = selects.begin(), eiter =</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; selects.end(); iter != eiter; ++iter)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SelectStmt.html">SelectStmt</a>* edge = SVFUtil::cast&lt;SelectStmt&gt;(*iter);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">const</span> <span class="keyword">auto</span> opVar : edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">getOpndVars</a>())</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; addCopyCGEdge(opVar-&gt;getId(),edge-&gt;<a class="code" href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">getResID</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;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; calls = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVFStmt::Call</a>);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = calls.begin(), eiter =</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; calls.end(); iter != eiter; ++iter)</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="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* edge = SVFUtil::cast&lt;CallPE&gt;(*iter);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; rets = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a8d269a45adf13e69468f0357222ab2af">SVFStmt::Ret</a>);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = rets.begin(), eiter =</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; rets.end(); iter != eiter; ++iter)</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="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* edge = SVFUtil::cast&lt;RetPE&gt;(*iter);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdfks = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a375b956af2119d7abca8f1995f7701fd">SVFStmt::ThreadFork</a>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdfks.begin(), eiter =</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; tdfks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; {</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* edge = SVFUtil::cast&lt;TDForkPE&gt;(*iter);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; }</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; tdjns = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVFStmt::ThreadJoin</a>);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = tdjns.begin(), eiter =</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; tdjns.end(); iter != eiter; ++iter)</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* edge = SVFUtil::cast&lt;TDJoinPE&gt;(*iter);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; addCopyCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; ngeps = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVFStmt::Gep</a>);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = ngeps.begin(), eiter =</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; ngeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1GepStmt.html">GepStmt</a>* edge = SVFUtil::cast&lt;GepStmt&gt;(*iter);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(edge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">isVariantFieldGep</a>())</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; addVariantGepCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; addNormalGepCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">getLocationSet</a>());</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; loads = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVFStmt::Load</a>);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = loads.begin(), eiter =</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; loads.end(); iter != eiter; ++iter)</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; <a class="code" href="classSVF_1_1LoadStmt.html">LoadStmt</a>* edge = SVFUtil::cast&lt;LoadStmt&gt;(*iter);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; addLoadCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVFStmt::SVFStmtSetTy</a>&amp; stores = getPAGEdgeSet(<a class="code" href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVFStmt::Store</a>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">for</span> (SVFStmt::SVFStmtSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; stores.end(); iter != eiter; ++iter)</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; <a class="code" href="classSVF_1_1StoreStmt.html">StoreStmt</a>* edge = SVFUtil::cast&lt;StoreStmt&gt;(*iter);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; addStoreCGEdge(edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">getRHSVarID</a>(),edge-&gt;<a class="code" href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">getLHSVarID</a>());</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;}</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44"> 148</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">ConstraintGraph::destroy</a>()</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;}</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrCGEdge.html#a131779667553499b85423e1932664252"> 155</a></span>&#160;<a class="code" href="classSVF_1_1AddrCGEdge.html#a9c8da69a469e51d83c5009ba2685bcf6">AddrCGEdge::AddrCGEdge</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* s, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* d, <a class="code" href="namespaceSVF.html#ae71551d6a1fc300e0403297aa25ddf94">EdgeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; : <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>(s,d,Addr,id)</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;{</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="comment">// Retarget addr edges may lead s to be a dummy node</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(s-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; (void)node; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVFModule::pagReadFromTXT</a>())</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; assert(!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; <span class="stringliteral">&quot;a dummy node??&quot;</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;}</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266"> 170</a></span>&#160;<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266">ConstraintGraph::addAddrCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;{</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>))</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrCGEdge.html#a9c8da69a469e51d83c5009ba2685bcf6">AddrCGEdge</a>(srcNode, dstNode, edgeIndex++);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keywordtype">bool</span> inserted = AddrCGEdgeSet.insert(edge).second;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new AddrCGEdge not added??&quot;</span>);</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; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#af129941c522dbc1b0fe94f84eea0d97a">addOutgoingAddrEdge</a>(edge);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aeff08dd512d0a97fb14069b37386e9fe">addIncomingAddrEdge</a>(edge);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;}</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758"> 190</a></span>&#160;<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">ConstraintGraph::addCopyCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>)</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>) || srcNode == dstNode)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>(srcNode, dstNode, edgeIndex++);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">bool</span> inserted = directEdgeSet.insert(edge).second;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new CopyCGEdge not added??&quot;</span>);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a2395948518a1befb7a3762bbad6adf9f">addOutgoingCopyEdge</a>(edge);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#ad54cc825bb7f5642671e75b90b2633a2">addIncomingCopyEdge</a>(edge);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a5aac453464955185ca0d47e91db9df7b"> 213</a></span>&#160;<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a5aac453464955185ca0d47e91db9df7b">ConstraintGraph::addNormalGepCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;{</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a>))</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>(srcNode, dstNode,ls, edgeIndex++);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordtype">bool</span> inserted = directEdgeSet.insert(edge).second;</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new NormalGepCGEdge not added??&quot;</span>);</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; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</a>(edge);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</a>(edge);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f"> 234</a></span>&#160;<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">ConstraintGraph::addVariantGepCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</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; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>))</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</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; <a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>(srcNode, dstNode, edgeIndex++);</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; <span class="keywordtype">bool</span> inserted = directEdgeSet.insert(edge).second;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new VariantGepCGEdge not added??&quot;</span>);</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; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">addOutgoingGepEdge</a>(edge);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">addIncomingGepEdge</a>(edge);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934"> 255</a></span>&#160;<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">ConstraintGraph::addLoadCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>)</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; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>(srcNode, dstNode, edgeIndex++);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">bool</span> inserted = LoadCGEdgeSet.insert(edge).second;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new LoadCGEdge not added??&quot;</span>);</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#aa95df9972daaf3a2f92480a5fdc5b3a1">addOutgoingLoadEdge</a>(edge);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a9d1bb95ad5549d7e6030fe07f8e070a2">addIncomingLoadEdge</a>(edge);</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0"> 276</a></span>&#160;<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* <a class="code" href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">ConstraintGraph::addStoreCGEdge</a>(<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">src</a>, <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">dst</a>)</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;{</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* srcNode = getConstraintNode(src);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* dstNode = getConstraintNode(dst);</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a>(srcNode, dstNode, <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>))</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* edge = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>(srcNode, dstNode, edgeIndex++);</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"> 285</span>&#160; <span class="keywordtype">bool</span> inserted = StoreCGEdgeSet.insert(edge).second;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; (void)inserted; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; assert(inserted &amp;&amp; <span class="stringliteral">&quot;new StoreCGEdge not added??&quot;</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; srcNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a18a52c763aa946f06798dc5592f5c1e0">addOutgoingStoreEdge</a>(edge);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; dstNode-&gt;<a class="code" href="classSVF_1_1ConstraintNode.html#a202193059dd3122d969561080b82c504">addIncomingStoreEdge</a>(edge);</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> edge;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;}</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722"> 302</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">ConstraintGraph::reTargetDstOfEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* newDstNode)</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; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> newDstNodeID = newDstNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> srcId = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>();</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* load = SVFUtil::dyn_cast&lt;LoadCGEdge&gt;(edge))</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; removeLoadEdge(load);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; addLoadCGEdge(srcId,newDstNodeID);</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="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</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; removeStoreEdge(store);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; addStoreCGEdge(srcId,newDstNodeID);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; }</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(edge))</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; {</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; removeDirectEdge(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; addCopyCGEdge(srcId,newDstNodeID);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(edge))</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; {</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls = gep-&gt;getLocationSet();</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; removeDirectEdge(gep);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; addNormalGepCGEdge(srcId,newDstNodeID,ls);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; }</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(edge))</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; {</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; removeDirectEdge(gep);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; addVariantGepCGEdge(srcId,newDstNodeID);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; {</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; removeAddrEdge(addr);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; }</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;}</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214"> 346</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">ConstraintGraph::reTargetSrcOfEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* newSrcNode)</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;{</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> newSrcNodeID = newSrcNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> dstId = edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>();</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* load = SVFUtil::dyn_cast&lt;LoadCGEdge&gt;(edge))</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; {</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; removeLoadEdge(load);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; addLoadCGEdge(newSrcNodeID,dstId);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; }</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* store = SVFUtil::dyn_cast&lt;StoreCGEdge&gt;(edge))</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; {</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; removeStoreEdge(store);</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; addStoreCGEdge(newSrcNodeID,dstId);</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(edge))</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; {</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; removeDirectEdge(<a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>);</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; addCopyCGEdge(newSrcNodeID,dstId);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(edge))</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; {</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls = gep-&gt;getLocationSet();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; removeDirectEdge(gep);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; addNormalGepCGEdge(newSrcNodeID,dstId,ls);</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* gep = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(edge))</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; {</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; removeDirectEdge(gep);</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; addVariantGepCGEdge(newSrcNodeID,dstId);</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; }</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; {</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; removeAddrEdge(addr);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; }</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no other edge type!!&quot;</span>);</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee"> 387</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">ConstraintGraph::removeAddrEdge</a>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* edge)</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;{</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;removeOutgoingAddrEdge(edge);</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;removeIncomingAddrEdge(edge);</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = AddrCGEdgeSet.erase(edge);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;}</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;</div><div class="line"><a name="l00400"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28"> 400</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">ConstraintGraph::removeLoadEdge</a>(<a class="code" href="classSVF_1_1LoadCGEdge.html">LoadCGEdge</a>* edge)</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;{</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;removeOutgoingLoadEdge(edge);</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;removeIncomingLoadEdge(edge);</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = LoadCGEdgeSet.erase(edge);</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;}</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2"> 413</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">ConstraintGraph::removeStoreEdge</a>(<a class="code" href="classSVF_1_1StoreCGEdge.html">StoreCGEdge</a>* edge)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;{</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;removeOutgoingStoreEdge(edge);</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;removeIncomingStoreEdge(edge);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = StoreCGEdgeSet.erase(edge);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;}</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244"> 426</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">ConstraintGraph::removeDirectEdge</a>(<a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge)</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;{</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>())-&gt;removeOutgoingDirectEdge(edge);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; getConstraintNode(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>())-&gt;removeIncomingDirectEdge(edge);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> num = directEdgeSet.erase(edge);</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; (void)num; <span class="comment">// Suppress warning of unused variable under release build</span></div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; assert(num &amp;&amp; <span class="stringliteral">&quot;edge not in the set, can not remove!!!&quot;</span>);</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keyword">delete</span> edge;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;}</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd"> 441</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd">ConstraintGraph::moveInEdgesToRepNode</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* node, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* rep )</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;{</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; ++it)</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; {</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subInEdge = *it;</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">if</span>(sccRepNode(subInEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>()) != rep-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; nonSccEdges.push_back(subInEdge);</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; {</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; sccEdges.push_back(subInEdge);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; }</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge dst to rep</span></div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; {</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; nonSccEdges.pop_back();</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; reTargetDstOfEdge(edge,rep);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; sccEdges.pop_back();</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; removeDirectEdge(edge);</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (!isZeroOffsettedGepCGEdge(edge))</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; {</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; }</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; removeDirectEdge(edge);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; }</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge&gt;(edge) || SVFUtil::isa&lt;StoreCGEdge&gt;(edge))</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; reTargetDstOfEdge(edge,rep);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; {</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; removeAddrEdge(addr);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; }</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160; }</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;}</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;</div><div class="line"><a name="l00499"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59"> 499</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59">ConstraintGraph::moveOutEdgesToRepNode</a>(<a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>*node, <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a>* rep )</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;{</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; std::vector&lt;ConstraintEdge*&gt; sccEdges;</div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; std::vector&lt;ConstraintEdge*&gt; nonSccEdges;</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> it = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; ++it)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* subOutEdge = *it;</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">if</span>(sccRepNode(subOutEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>()) != rep-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>())</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; nonSccEdges.push_back(subOutEdge);</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; {</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; sccEdges.push_back(subOutEdge);</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <span class="comment">// if this edge is outside scc, then re-target edge src to rep</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">while</span>(!nonSccEdges.empty())</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; {</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = nonSccEdges.back();</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; nonSccEdges.pop_back();</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; reTargetSrcOfEdge(edge,rep);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; }</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordtype">bool</span> criticalGepInsideSCC = <span class="keyword">false</span>;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; <span class="comment">// if this edge is inside scc, then remove this edge and two end nodes</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160; <span class="keywordflow">while</span>(!sccEdges.empty())</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160; {</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = sccEdges.back();</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; sccEdges.pop_back();</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;CopyCGEdge&gt;(edge))</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; removeDirectEdge(edge);</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepCGEdge&gt;(edge))</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; {</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="comment">// If the GEP is critical (i.e. may have a non-zero offset),</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="comment">// then it brings impact on field-sensitivity.</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; <span class="keywordflow">if</span> (!isZeroOffsettedGepCGEdge(edge))</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; {</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160; criticalGepInsideSCC = <span class="keyword">true</span>;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; }</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; removeDirectEdge(edge);</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160; }</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;LoadCGEdge&gt;(edge) || SVFUtil::isa&lt;StoreCGEdge&gt;(edge))</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; reTargetSrcOfEdge(edge,rep);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1AddrCGEdge.html">AddrCGEdge</a>* addr = SVFUtil::dyn_cast&lt;AddrCGEdge&gt;(edge))</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; {</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; removeAddrEdge(addr);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; }</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;no such edge&quot;</span>);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; }</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> criticalGepInsideSCC;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;}</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462"> 558</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">ConstraintGraph::dump</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>)</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;{</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; <a class="code" href="classSVF_1_1GraphPrinter.html#a014217fb0d05c8f2a2f1a6c5b19d3e10">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>(), name, <span class="keyword">this</span>);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;}</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce"> 566</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#aa87bf07fc538c2cf425138727e7acbce">ConstraintGraph::print</a>()</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;{</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-----------------ConstraintGraph--------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; addrs = this-&gt;getAddrCGEdges();</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = addrs.begin(),</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; eiter = addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; {</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Addr --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; }</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; directs = this-&gt;getDirectCGEdges();</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = directs.begin(),</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; eiter = directs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; {</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1CopyCGEdge.html">CopyCGEdge</a>* <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a> = SVFUtil::dyn_cast&lt;CopyCGEdge&gt;(*iter))</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; {</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; <a class="code" href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a>-&gt;getDstID()</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; }</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1NormalGepCGEdge.html">NormalGepCGEdge</a>* ngep = SVFUtil::dyn_cast&lt;NormalGepCGEdge&gt;(*iter))</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; {</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; ngep-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- NormalGep (&quot;</span> &lt;&lt; ngep-&gt;getConstantFieldIdx()</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; ngep-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; }</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1VariantGepCGEdge.html">VariantGepCGEdge</a>* <a class="code" href="CFLGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a> = SVFUtil::dyn_cast&lt;VariantGepCGEdge&gt;(*iter))</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; {</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="CFLGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a>-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VarintGep --&gt; &quot;</span></div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; &lt;&lt; <a class="code" href="CFLGrammar_8txt.html#a1181f56ceed612b4d77df931fa4dfaa9">vgep</a>-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;wrong constraint edge kind!&quot;</span>);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; }</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; loads = this-&gt;getLoadCGEdges();</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = loads.begin(),</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; eiter = loads.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; {</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Load --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; }</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">ConstraintEdge::ConstraintEdgeSetTy</a>&amp; stores = this-&gt;getStoreCGEdges();</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordflow">for</span> (ConstraintEdge::ConstraintEdgeSetTy::iterator iter = stores.begin(),</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; eiter = stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; {</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Store --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; }</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>()</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; &lt;&lt; <span class="stringliteral">&quot;--------------------------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;}</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c"> 626</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c">ConstraintGraph::view</a>()</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;{</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">SVF::ViewGraph</a>(<span class="keyword">this</span>, <span class="stringliteral">&quot;Constraint Graph&quot;</span>);</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;}</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div><div class="line"><a name="l00633"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ae42c4a86f8c588e348ce4b0d7d919393"> 633</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#ae42c4a86f8c588e348ce4b0d7d919393">ConstraintNode::directOutEdgeBegin</a>()</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;{</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">return</span> directOutEdges.begin();</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> copyOutEdges.begin();</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;}</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;</div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#aa77fb67a62abe4c28cecc73d395d7b12"> 641</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#aa77fb67a62abe4c28cecc73d395d7b12">ConstraintNode::directOutEdgeEnd</a>()</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;{</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="keywordflow">return</span> directOutEdges.end();</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; <span class="keywordflow">return</span> copyOutEdges.end();</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;}</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;</div><div class="line"><a name="l00649"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a947fd86d30a4f0145280ab9a56fd8b10"> 649</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a947fd86d30a4f0145280ab9a56fd8b10">ConstraintNode::directInEdgeBegin</a>()</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;{</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordflow">return</span> directInEdges.begin();</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">return</span> copyInEdges.begin();</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;}</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;</div><div class="line"><a name="l00657"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a1aeb6c40a8078d07dc6837114bddb213"> 657</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">ConstraintNode::iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a1aeb6c40a8078d07dc6837114bddb213">ConstraintNode::directInEdgeEnd</a>()</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;{</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">return</span> directInEdges.end();</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keywordflow">return</span> copyInEdges.end();</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;}</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#a047851ec7866332ab422b48e261b5f75"> 665</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#ae42c4a86f8c588e348ce4b0d7d919393">ConstraintNode::directOutEdgeBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="keywordflow">return</span> directOutEdges.begin();</div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; <span class="keywordflow">return</span> copyOutEdges.begin();</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;}</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#aef70a5e58c9917ea3f7329df84e65e62"> 673</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#aa77fb67a62abe4c28cecc73d395d7b12">ConstraintNode::directOutEdgeEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160; <span class="keywordflow">return</span> directOutEdges.end();</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">return</span> copyOutEdges.end();</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;}</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ae40976e622fdfe9c52b56ec386f1a53c"> 681</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a947fd86d30a4f0145280ab9a56fd8b10">ConstraintNode::directInEdgeBegin</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">return</span> directInEdges.begin();</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; <span class="keywordflow">return</span> copyInEdges.begin();</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;}</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;</div><div class="line"><a name="l00689"></a><span class="lineno"><a class="line" href="classSVF_1_1ConstraintNode.html#ad59c356474cf6c496da12e827ec2dd98"> 689</a></span>&#160;<a class="code" href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">ConstraintNode::const_iterator</a> <a class="code" href="classSVF_1_1ConstraintNode.html#a1aeb6c40a8078d07dc6837114bddb213">ConstraintNode::directInEdgeEnd</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">Options::DetectPWC</a>)</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">return</span> directInEdges.end();</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">return</span> copyInEdges.end();</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;}</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;{</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l00704"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html"> 704</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*&gt; : <span class="keyword">public</span> <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits&lt;SVFIR*&gt;</a></div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;{</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;</div><div class="line"><a name="l00707"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f"> 707</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ConstraintNode.html">ConstraintNode</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f">NodeType</a>;</div><div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3"> 708</a></span>&#160; <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="structSVF_1_1DOTGraphTraits.html">DOTGraphTraits</a>&lt;<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>*&gt;(isSimple)</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160; {</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160; }</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd"> 714</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd">getGraphName</a>(<a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; {</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;ConstraintG&quot;</span>;</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; }</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;<span class="preprocessor">#if LLVM_VERSION_MAJOR &gt;= 12</span></div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> isNodeHidden(NodeType *<a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a>, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a> *)</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160; {</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a0d5e3a98ba270d18a31ae5139c2fdadd"> 723</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a0d5e3a98ba270d18a31ae5139c2fdadd">isNodeHidden</a>(NodeType *n)</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160; {</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#adec2012e10130f664fe0ea3acf39f78b">Options::ShowHiddenNode</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">return</span> (n-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &amp;&amp; n-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty());</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; }</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;</div><div class="line"><a name="l00732"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f"> 732</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f">getNodeLabel</a>(NodeType *n, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; {</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(n-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordtype">bool</span> briefDisplay = <a class="code" href="classSVF_1_1Options.html#a82370c2b8c9cd62b5767ceeaeeaa7177">Options::BriefConsCGDotGraph</a>;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160; <span class="keywordtype">bool</span> nameDisplay = <span class="keyword">true</span>;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; std::stringstream rawstr(str);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <span class="keywordflow">if</span> (briefDisplay)</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; {</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; {</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; <span class="keywordflow">if</span> (nameDisplay)</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>();</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160; }</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>();</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160; }</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160; {</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="comment">// print the whole value</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">if</span> (!SVFUtil::isa&lt;DummyValVar&gt;(node) &amp;&amp; !SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1SVFVar.html#ac2db6304ea5526fb446ae882983beeb0">getValue</a>()-&gt;<a class="code" href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">toString</a>();</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span>;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; }</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; }</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;</div><div class="line"><a name="l00765"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc"> 765</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc">getNodeAttributes</a>(NodeType *n, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1SVFIR.html#a37cfa2aa4e7b98ef9dc8179f581a2362">SVFIR::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">getGNode</a>(n-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValVar&gt;(node))</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; {</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepValVar&gt;(node))</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=hexagon&quot;</span>;</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValVar&gt;(node))</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=diamond&quot;</span>;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box&quot;</span>;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; }</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjVar&gt;(node))</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; {</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepObjVar&gt;(node))</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=doubleoctagon&quot;</span>;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FIObjVar&gt;(node))</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box3d&quot;</span>;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjVar&gt;(node))</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=tab&quot;</span>;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=component&quot;</span>;</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(node))</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=Mrecord&quot;</span>;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; }</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;VarArgPN&gt;(node))</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; {</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=octagon&quot;</span>;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; }</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; {</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;no such kind!!&quot;</span>);</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; }</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l00804"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c"> 804</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c">getEdgeAttributes</a>(NodeType*, EdgeIter EI, <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>*)</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; {</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="classSVF_1_1ConstraintEdge.html">ConstraintEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; assert(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375aed68bc43e8aae49e8590e140eb0ffaf3">ConstraintEdge::Addr</a>)</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; {</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; }</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">ConstraintEdge::Copy</a>)</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; {</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; }</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375acfd0a194af0da66162545f0089eb4baa">ConstraintEdge::NormalGep</a></div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; || edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">ConstraintEdge::VariantGep</a>)</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; {</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; }</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">ConstraintEdge::Store</a>)</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; }</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>() == <a class="code" href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">ConstraintEdge::Load</a>)</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; {</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; assert(0 &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; }</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; }</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l00837"></a><span class="lineno"><a class="line" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2"> 837</a></span>&#160; <span class="keyword">static</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2">getEdgeSourceLabel</a>(NodeType*, EdgeIter)</div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; {</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; }</div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160;};</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="ttc" id="classSVF_1_1AddrStmt_html"><div class="ttname"><a href="classSVF_1_1AddrStmt.html">SVF::AddrStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00276">SVFStatements.h:276</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_abe8525c542def8162b094c169a01993b"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">SVF::GenericEdge::getEdgeKind</a></div><div class="ttdeci">GEdgeKind getEdgeKind() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00083">GenericGraph.h:83</a></div></div>
71
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a6948926922a5c5378d92c3c6aa0b3ccd"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a6948926922a5c5378d92c3c6aa0b3ccd">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(ConstraintGraph *)</div><div class="ttdoc">Return name of the graph. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00714">ConsG.cpp:714</a></div></div>
71
72
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a27d8078577d479c84f2a87b44f015d1c"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a27d8078577d479c84f2a87b44f015d1c">SVF::ConstraintGraph::view</a></div><div class="ttdeci">void view()</div><div class="ttdoc">View graph from the debugger. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00626">ConsG.cpp:626</a></div></div>
72
73
  <div class="ttc" id="CHG_8cpp_html_a4c6cbac96543cd55e4df050a33512ac5"><div class="ttname"><a href="CHG_8cpp.html#a4c6cbac96543cd55e4df050a33512ac5">hasEdge</a></div><div class="ttdeci">static bool hasEdge(const CHNode *src, const CHNode *dst, CHEdge::CHEDGETYPE et)</div><div class="ttdef"><b>Definition:</b> <a href="CHG_8cpp_source.html#l00037">CHG.cpp:37</a></div></div>
73
74
  <div class="ttc" id="classSVF_1_1RetPE_html"><div class="ttname"><a href="classSVF_1_1RetPE.html">SVF::RetPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00545">SVFStatements.h:545</a></div></div>
74
75
  <div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a0441f2646fed28830439c41a0704ed4b"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a0441f2646fed28830439c41a0704ed4b">SVF::MultiOpndStmt::getOpndVars</a></div><div class="ttdeci">const OPVars &amp; getOpndVars() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00662">SVFStatements.h:662</a></div></div>
75
76
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a97ca16eba4c5f92e16388f0cdbcfcc00">SVF::SVFStmt::Call</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
76
- <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00192">CFLGraph.h:192</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375ae5df3ce07dd670b48916f7b8ab33ae5a">SVF::ConstraintEdge::VariantGep</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
78
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a651568cd6c1f0771d8633a7ed7b1dfd2"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a651568cd6c1f0771d8633a7ed7b1dfd2">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(NodeType *, EdgeIter)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00837">ConsG.cpp:837</a></div></div>
78
79
  <div class="ttc" id="ConsG_8h_html"><div class="ttname"><a href="ConsG_8h.html">ConsG.h</a></div></div>
79
80
  <div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
80
81
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a1bdeb9a06641d16b43391120812b40b2">SVF::ConstraintEdge::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
81
- <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00187">GenericGraph.h:187</a></div></div>
82
+ <div class="ttc" id="classSVF_1_1GenericNode_html_afc8b5f86d7795b6a0dfc0687d942d79b"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">SVF::GenericNode::getInEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getInEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00188">GenericGraph.h:188</a></div></div>
82
83
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a20d960c19118d1ed319e0dbea94405e8">SVF::SVFStmt::Gep</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
83
84
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a6b3cd98eeb47c8475e7ee64480dcdee9">SVF::SVFStmt::Phi</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
84
85
  <div class="ttc" id="classSVF_1_1AddrCGEdge_html_a9c8da69a469e51d83c5009ba2685bcf6"><div class="ttname"><a href="classSVF_1_1AddrCGEdge.html#a9c8da69a469e51d83c5009ba2685bcf6">SVF::AddrCGEdge::AddrCGEdge</a></div><div class="ttdeci">AddrCGEdge()</div><div class="ttdoc">place holder </div></div>
85
86
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a62ac8480c43fcc657c631ec0003b15d5">SVF::SVFStmt::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
86
- <div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00078">GenericGraph.h:78</a></div></div>
87
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_ad9edb45e74ae675d9da82f5acf02d56e"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">SVF::GenericEdge::getDstID</a></div><div class="ttdeci">NodeID getDstID() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00079">GenericGraph.h:79</a></div></div>
87
88
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html">SVF::ConstraintGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00044">ConsG.h:44</a></div></div>
88
89
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_aad3d05c949c33a587b3ac6d627f5a0a2"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aad3d05c949c33a587b3ac6d627f5a0a2">SVF::ConstraintGraph::removeStoreEdge</a></div><div class="ttdeci">void removeStoreEdge(StoreCGEdge *edge)</div><div class="ttdoc">Remove store edge from their src and dst edge sets. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00413">ConsG.cpp:413</a></div></div>
89
- <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00207">GenericGraph.h:207</a></div></div>
90
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a646cb350726d62532cda229aaf6af9cc"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a646cb350726d62532cda229aaf6af9cc">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00765">ConsG.cpp:765</a></div></div>
91
+ <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00208">GenericGraph.h:208</a></div></div>
90
92
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a56cfcc39637cf5208f65297a63dde266"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a56cfcc39637cf5208f65297a63dde266">SVF::ConstraintGraph::addAddrCGEdge</a></div><div class="ttdeci">AddrCGEdge * addAddrCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add a SVFIR edge into Edge map. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00170">ConsG.cpp:170</a></div></div>
91
93
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_aeff08dd512d0a97fb14069b37386e9fe"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aeff08dd512d0a97fb14069b37386e9fe">SVF::ConstraintNode::addIncomingAddrEdge</a></div><div class="ttdeci">void addIncomingAddrEdge(AddrCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00247">ConsGNode.h:247</a></div></div>
92
94
  <div class="ttc" id="classSVF_1_1NormalGepCGEdge_html"><div class="ttname"><a href="classSVF_1_1NormalGepCGEdge.html">SVF::NormalGepCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00265">ConsGEdge.h:265</a></div></div>
93
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_ac3889bd563cdc21a55df0524df2ae4da"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ac3889bd563cdc21a55df0524df2ae4da">llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::NodeType</a></div><div class="ttdeci">ConstraintNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00707">ConsG.cpp:707</a></div></div>
94
95
  <div class="ttc" id="classSVF_1_1GepStmt_html"><div class="ttname"><a href="classSVF_1_1GepStmt.html">SVF::GepStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00419">SVFStatements.h:419</a></div></div>
95
96
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a0a9a0f650e864e89b7cbb3dc8c8aa197">SVF::SVFStmt::Addr</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
96
97
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_ab1868f04de44f6fe1e9ac14f3d4ee56b"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#ab1868f04de44f6fe1e9ac14f3d4ee56b">SVF::ConstraintNode::const_iterator</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00045">ConsGNode.h:45</a></div></div>
97
- <div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00074">GenericGraph.h:74</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_ae6792506a0150a9400d635eceab7f9e7"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">SVF::GenericEdge::getSrcID</a></div><div class="ttdeci">NodeID getSrcID() const</div><div class="ttdoc">get methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00075">GenericGraph.h:75</a></div></div>
98
99
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a947fd86d30a4f0145280ab9a56fd8b10"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a947fd86d30a4f0145280ab9a56fd8b10">SVF::ConstraintNode::directInEdgeBegin</a></div><div class="ttdeci">iterator directInEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00649">ConsG.cpp:649</a></div></div>
99
100
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a633666953f8d6675961981c4eab1adb0"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a633666953f8d6675961981c4eab1adb0">SVF::ConstraintGraph::addStoreCGEdge</a></div><div class="ttdeci">StoreCGEdge * addStoreCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00276">ConsG.cpp:276</a></div></div>
100
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a76e78cd94e56ca46ac7e1db7162e594b"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a76e78cd94e56ca46ac7e1db7162e594b">llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(NodeType *, EdgeIter)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00837">ConsG.cpp:837</a></div></div>
101
101
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a1e5a23fbd08cf4186775baffbd6a7934"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a1e5a23fbd08cf4186775baffbd6a7934">SVF::ConstraintGraph::addLoadCGEdge</a></div><div class="ttdeci">LoadCGEdge * addLoadCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00255">ConsG.cpp:255</a></div></div>
102
102
  <div class="ttc" id="classSVF_1_1AssignStmt_html_a4cec89489e82c60c287cae3327f3f01d"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a4cec89489e82c60c287cae3327f3f01d">SVF::AssignStmt::getRHSVarID</a></div><div class="ttdeci">NodeID getRHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00261">SVFStatements.h:261</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a8cd7b6c6fd8b030b1421d95a086359f4"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a8cd7b6c6fd8b030b1421d95a086359f4">SVF::SVFStmt::SVFStmtSetTy</a></div><div class="ttdeci">GenericNode&lt; SVFVar, SVFStmt &gt;::GEdgeSetTy SVFStmtSetTy</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00182">SVFStatements.h:182</a></div></div>
@@ -105,14 +105,11 @@ $(function() {
105
105
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_aa77fb67a62abe4c28cecc73d395d7b12"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aa77fb67a62abe4c28cecc73d395d7b12">SVF::ConstraintNode::directOutEdgeEnd</a></div><div class="ttdeci">iterator directOutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00641">ConsG.cpp:641</a></div></div>
106
106
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_aa436aac95be84d1946169f4984deae59"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa436aac95be84d1946169f4984deae59">SVF::ConstraintGraph::moveOutEdgesToRepNode</a></div><div class="ttdeci">bool moveOutEdgesToRepNode(ConstraintNode *node, ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00499">ConsG.cpp:499</a></div></div>
107
107
  <div class="ttc" id="cJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
108
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_aa72b3ad953c6ea3309c83735512ff408"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#aa72b3ad953c6ea3309c83735512ff408">llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::getNodeLabel</a></div><div class="ttdeci">static std::string getNodeLabel(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00732">ConsG.cpp:732</a></div></div>
109
108
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
110
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a007736227bec42182208176006b7d83d"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a007736227bec42182208176006b7d83d">llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00708">ConsG.cpp:708</a></div></div>
111
109
  <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#l00107">SVFIR.h:107</a></div></div>
112
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a9ed4562e3c1223c20e76e1372ba8b30d"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9ed4562e3c1223c20e76e1372ba8b30d">llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(ConstraintGraph *)</div><div class="ttdoc">Return name of the graph. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00714">ConsG.cpp:714</a></div></div>
113
110
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a18a52c763aa946f06798dc5592f5c1e0"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a18a52c763aa946f06798dc5592f5c1e0">SVF::ConstraintNode::addOutgoingStoreEdge</a></div><div class="ttdeci">bool addOutgoingStoreEdge(StoreCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00284">ConsGNode.h:284</a></div></div>
114
111
  <div class="ttc" id="classSVF_1_1VariantGepCGEdge_html"><div class="ttname"><a href="classSVF_1_1VariantGepCGEdge.html">SVF::VariantGepCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00317">ConsGEdge.h:317</a></div></div>
115
- <div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00215">GenericGraph.h:215</a></div></div>
112
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00216">GenericGraph.h:216</a></div></div>
116
113
  <div class="ttc" id="classSVF_1_1LoadCGEdge_html"><div class="ttname"><a href="classSVF_1_1LoadCGEdge.html">SVF::LoadCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00191">ConsGEdge.h:191</a></div></div>
117
114
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00050">SVFType.h:50</a></div></div>
118
115
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_aa95df9972daaf3a2f92480a5fdc5b3a1"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aa95df9972daaf3a2f92480a5fdc5b3a1">SVF::ConstraintNode::addOutgoingLoadEdge</a></div><div class="ttdeci">bool addOutgoingLoadEdge(LoadCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00276">ConsGNode.h:276</a></div></div>
@@ -130,38 +127,39 @@ $(function() {
130
127
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_aaf0b98573a980aea1151a837580a40a5"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#aaf0b98573a980aea1151a837580a40a5">SVF::ConstraintNode::addIncomingGepEdge</a></div><div class="ttdeci">void addIncomingGepEdge(GepCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00232">ConsGNode.h:232</a></div></div>
131
128
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a1aeb6c40a8078d07dc6837114bddb213"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a1aeb6c40a8078d07dc6837114bddb213">SVF::ConstraintNode::directInEdgeEnd</a></div><div class="ttdeci">iterator directInEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00657">ConsG.cpp:657</a></div></div>
132
129
  <div class="ttc" id="classSVF_1_1Options_html_a1d299e736ee653759d340508fd30c6ab"><div class="ttname"><a href="classSVF_1_1Options.html#a1d299e736ee653759d340508fd30c6ab">SVF::Options::DetectPWC</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; DetectPWC</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00239">Options.h:239</a></div></div>
133
- <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00345">GenericGraph.h:345</a></div></div>
130
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00346">GenericGraph.h:346</a></div></div>
134
131
  <div class="ttc" id="classSVF_1_1Options_html_a82370c2b8c9cd62b5767ceeaeeaa7177"><div class="ttname"><a href="classSVF_1_1Options.html#a82370c2b8c9cd62b5767ceeaeeaa7177">SVF::Options::BriefConsCGDotGraph</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; BriefConsCGDotGraph</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00232">Options.h:232</a></div></div>
135
132
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a19ebc316f4fa0246debb1ca61c2b2f3f"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a19ebc316f4fa0246debb1ca61c2b2f3f">SVF::ConstraintNode::iterator</a></div><div class="ttdeci">ConstraintEdge::ConstraintEdgeSetTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00044">ConsGNode.h:44</a></div></div>
136
- <div class="ttc" id="classSVF_1_1SVFValue_html_aa678ca4616a3e69b53726b33d0b9c5a2"><div class="ttname"><a href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">SVF::SVFValue::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00641">LLVMUtil.cpp:641</a></div></div>
133
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_html"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits.html">SVF::DOTGraphTraits</a></div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00181">DOTGraphTraits.h:181</a></div></div>
134
+ <div class="ttc" id="classSVF_1_1SVFValue_html_aa678ca4616a3e69b53726b33d0b9c5a2"><div class="ttname"><a href="classSVF_1_1SVFValue.html#aa678ca4616a3e69b53726b33d0b9c5a2">SVF::SVFValue::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdoc">Needs to be implemented by a specific SVF front end (e.g., the implementation in LLVMUtil) ...</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00681">LLVMUtil.cpp:681</a></div></div>
137
135
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a081bf1238121eb52a0c9ad60f77ecbcd"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a081bf1238121eb52a0c9ad60f77ecbcd">SVF::ConstraintGraph::moveInEdgesToRepNode</a></div><div class="ttdeci">bool moveInEdgesToRepNode(ConstraintNode *node, ConstraintNode *rep)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00441">ConsG.cpp:441</a></div></div>
138
136
  <div class="ttc" id="classSVF_1_1CopyCGEdge_html"><div class="ttname"><a href="classSVF_1_1CopyCGEdge.html">SVF::CopyCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00124">ConsGEdge.h:124</a></div></div>
139
137
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a29b0aa3353f866ef1655ab6d4716feb9">SVF::ConstraintEdge::Copy</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
140
138
  <div class="ttc" id="classSVF_1_1StoreCGEdge_html"><div class="ttname"><a href="classSVF_1_1StoreCGEdge.html">SVF::StoreCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00157">ConsGEdge.h:157</a></div></div>
141
139
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_acc23df2db1fa7b8e0270d8a04f08f2ee"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#acc23df2db1fa7b8e0270d8a04f08f2ee">SVF::ConstraintGraph::removeAddrEdge</a></div><div class="ttdeci">void removeAddrEdge(AddrCGEdge *edge)</div><div class="ttdoc">Remove addr edge from their src and dst edge sets. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00387">ConsG.cpp:387</a></div></div>
140
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_ad816997d240e758f7a2f1f6508048ef3"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad816997d240e758f7a2f1f6508048ef3">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00708">ConsG.cpp:708</a></div></div>
141
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a0d5e3a98ba270d18a31ae5139c2fdadd"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a0d5e3a98ba270d18a31ae5139c2fdadd">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::isNodeHidden</a></div><div class="ttdeci">static bool isNodeHidden(NodeType *n)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00723">ConsG.cpp:723</a></div></div>
142
142
  <div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
143
- <div class="ttc" id="classSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00183">GenericGraph.h:183</a></div></div>
143
+ <div class="ttc" id="classSVF_1_1GenericNode_html_a2d9cd758d6f8c5189d9b90b74f43e009"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">SVF::GenericNode::getOutEdges</a></div><div class="ttdeci">const GEdgeSetTy &amp; getOutEdges() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00184">GenericGraph.h:184</a></div></div>
144
144
  <div class="ttc" id="classSVF_1_1LoadStmt_html"><div class="ttname"><a href="classSVF_1_1LoadStmt.html">SVF::LoadStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00383">SVFStatements.h:383</a></div></div>
145
- <div class="ttc" id="classllvm_1_1GraphPrinter_html_af6ed328e74882d2b5e2b4039cb836928"><div class="ttname"><a href="classllvm_1_1GraphPrinter.html#af6ed328e74882d2b5e2b4039cb836928">llvm::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &amp;O, const std::string &amp;GraphName, const GraphType &amp;GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00056">GraphPrinter.h:56</a></div></div>
146
145
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_a9d1bb95ad5549d7e6030fe07f8e070a2"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#a9d1bb95ad5549d7e6030fe07f8e070a2">SVF::ConstraintNode::addIncomingLoadEdge</a></div><div class="ttdeci">void addIncomingLoadEdge(LoadCGEdge *inEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00252">ConsGNode.h:252</a></div></div>
147
146
  <div class="ttc" id="classSVF_1_1PhiStmt_html"><div class="ttname"><a href="classSVF_1_1PhiStmt.html">SVF::PhiStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00681">SVFStatements.h:681</a></div></div>
148
- <div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00219">GenericGraph.h:219</a></div></div>
149
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a0ce25ef874ffaa798ae7ad498274b2f7"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a0ce25ef874ffaa798ae7ad498274b2f7">llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00765">ConsG.cpp:765</a></div></div>
147
+ <div class="ttc" id="classSVF_1_1GenericNode_html_afe6a7b286d9af4992f41b59612fd2900"><div class="ttname"><a href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">SVF::GenericNode::InEdgeEnd</a></div><div class="ttdeci">iterator InEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00220">GenericGraph.h:220</a></div></div>
150
148
  <div class="ttc" id="classSVF_1_1AssignStmt_html_a98f731be7be9bc8e7fd09f5c2204c840"><div class="ttname"><a href="classSVF_1_1AssignStmt.html#a98f731be7be9bc8e7fd09f5c2204c840">SVF::AssignStmt::getLHSVarID</a></div><div class="ttdeci">NodeID getLHSVarID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00265">SVFStatements.h:265</a></div></div>
151
149
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a60bb27100e8c264be2add004069d1758"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a60bb27100e8c264be2add004069d1758">SVF::ConstraintGraph::addCopyCGEdge</a></div><div class="ttdeci">CopyCGEdge * addCopyCGEdge(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00190">ConsG.cpp:190</a></div></div>
150
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a94e74890f433758f3a38238f59400a3f"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a94e74890f433758f3a38238f59400a3f">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::NodeType</a></div><div class="ttdeci">ConstraintNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00707">ConsG.cpp:707</a></div></div>
152
151
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
153
152
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9a3c3f8883c2d3b50aef6331d5da97ffb0">SVF::SVFStmt::ThreadJoin</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
154
153
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a4db3484e3710c3f5cc86ec32dd643722"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a4db3484e3710c3f5cc86ec32dd643722">SVF::ConstraintGraph::reTargetDstOfEdge</a></div><div class="ttdeci">void reTargetDstOfEdge(ConstraintEdge *edge, ConstraintNode *newDstNode)</div><div class="ttdoc">Used for cycle elimination. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00302">ConsG.cpp:302</a></div></div>
155
- <div class="ttc" id="classSVF_1_1GenericEdge_html_aa41cb7482bdab1ba328f4b94f30f3ee4"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">SVF::GenericEdge::dst</a></div><div class="ttdeci">NodeTy * dst</div><div class="ttdoc">destination node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00057">GenericGraph.h:57</a></div></div>
156
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_html"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits.html">llvm::DOTGraphTraits</a></div><div class="ttdef"><b>Definition:</b> <a href="DOTGraphTraits_8h_source.html#l00181">DOTGraphTraits.h:181</a></div></div>
154
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_aa41cb7482bdab1ba328f4b94f30f3ee4"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aa41cb7482bdab1ba328f4b94f30f3ee4">SVF::GenericEdge::dst</a></div><div class="ttdeci">NodeTy * dst</div><div class="ttdoc">destination node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00058">GenericGraph.h:58</a></div></div>
157
155
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a77ba38543b1ee164f1ae95589d5dbc44"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a77ba38543b1ee164f1ae95589d5dbc44">SVF::ConstraintGraph::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00148">ConsG.cpp:148</a></div></div>
158
156
  <div class="ttc" id="classSVF_1_1ConstraintNode_html"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html">SVF::ConstraintNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00040">ConsGNode.h:40</a></div></div>
159
157
  <div class="ttc" id="classSVF_1_1GepStmt_html_abec33091e0dac0cdd5b95b6d7b0db3d8"><div class="ttname"><a href="classSVF_1_1GepStmt.html#abec33091e0dac0cdd5b95b6d7b0db3d8">SVF::GepStmt::getLocationSet</a></div><div class="ttdeci">const LocationSet &amp; getLocationSet() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00445">SVFStatements.h:445</a></div></div>
158
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a9e45113303655dd4b3951f975cc7790f"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a9e45113303655dd4b3951f975cc7790f">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getNodeLabel</a></div><div class="ttdeci">static std::string getNodeLabel(NodeType *n, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00732">ConsG.cpp:732</a></div></div>
160
159
  <div class="ttc" id="classSVF_1_1TDForkPE_html"><div class="ttname"><a href="classSVF_1_1TDForkPE.html">SVF::TDForkPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l01028">SVFStatements.h:1028</a></div></div>
161
160
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html_ad155e1ed2473cc4f5f57128d282ac541"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#ad155e1ed2473cc4f5f57128d282ac541">SVF::ConstraintEdge::ConstraintEdgeSetTy</a></div><div class="ttdeci">GenericNode&lt; ConstraintNode, ConstraintEdge &gt;::GEdgeSetTy ConstraintEdgeSetTy</div><div class="ttdoc">Constraint edge type. </div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00085">ConsGEdge.h:85</a></div></div>
162
161
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_abc56843c51c00a9018473f415f73e9f6"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#abc56843c51c00a9018473f415f73e9f6">SVF::ConstraintNode::addOutgoingGepEdge</a></div><div class="ttdeci">void addOutgoingGepEdge(GepCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00242">ConsGNode.h:242</a></div></div>
163
162
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
164
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a2a467ab9b0a9ef28f88099f8ed58bba6"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a2a467ab9b0a9ef28f88099f8ed58bba6">llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::isNodeHidden</a></div><div class="ttdeci">static bool isNodeHidden(NodeType *n)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00723">ConsG.cpp:723</a></div></div>
165
163
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a9fc73676ea133651604e2528fe1d8244"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a9fc73676ea133651604e2528fe1d8244">SVF::ConstraintGraph::removeDirectEdge</a></div><div class="ttdeci">void removeDirectEdge(ConstraintEdge *edge)</div><div class="ttdoc">Remove direct edge from their src and dst edge sets. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00426">ConsG.cpp:426</a></div></div>
166
164
  <div class="ttc" id="classSVF_1_1GepStmt_html_a0ddf180a0f7ba64fc8655687910e3788"><div class="ttname"><a href="classSVF_1_1GepStmt.html#a0ddf180a0f7ba64fc8655687910e3788">SVF::GepStmt::isVariantFieldGep</a></div><div class="ttdeci">bool isVariantFieldGep() const</div><div class="ttdoc">Gep statement with a variant field index (pointer arithmetic) for struct field access. </div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00470">SVFStatements.h:470</a></div></div>
167
165
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html_a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html#a663af27955ba0c545f34fa1f076b7375a20d6a102ddc06257a822ffffcc5a3b47">SVF::ConstraintEdge::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00056">ConsGEdge.h:56</a></div></div>
@@ -175,8 +173,7 @@ $(function() {
175
173
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a5aac453464955185ca0d47e91db9df7b"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a5aac453464955185ca0d47e91db9df7b">SVF::ConstraintGraph::addNormalGepCGEdge</a></div><div class="ttdeci">NormalGepCGEdge * addNormalGepCGEdge(NodeID src, NodeID dst, const LocationSet &amp;ls)</div><div class="ttdoc">Add Gep edge. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00213">ConsG.cpp:213</a></div></div>
176
174
  <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>
177
175
  <div class="ttc" id="classSVF_1_1SVFStmt_html_a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc"><div class="ttname"><a href="classSVF_1_1SVFStmt.html#a0ab8621e75e75f03425c323b3ed62ce9aa0f700b514c431ec5329aec49df56dcc">SVF::SVFStmt::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00056">SVFStatements.h:56</a></div></div>
178
- <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00170">GenericGraph.h:170</a></div></div>
179
- <div class="ttc" id="namespacellvm_html_a470c5592e4cd36a22901d15832b9c41b"><div class="ttname"><a href="namespacellvm.html#a470c5592e4cd36a22901d15832b9c41b">llvm::ViewGraph</a></div><div class="ttdeci">void ViewGraph(const GraphType &amp;G, const std::string &amp;name, bool ShortNames=false, GraphProgram::Name Program=GraphProgram::DOT)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00371">GraphWriter.h:371</a></div></div>
176
+ <div class="ttc" id="classSVF_1_1GenericNode_html_ac3e55ef37aefb411ea4c87b1aa3b1895"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">SVF::GenericNode::getId</a></div><div class="ttdeci">NodeID getId() const</div><div class="ttdoc">Get ID. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00171">GenericGraph.h:171</a></div></div>
180
177
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
181
178
  <div class="ttc" id="classSVF_1_1ConstraintNode_html_af129941c522dbc1b0fe94f84eea0d97a"><div class="ttname"><a href="classSVF_1_1ConstraintNode.html#af129941c522dbc1b0fe94f84eea0d97a">SVF::ConstraintNode::addOutgoingAddrEdge</a></div><div class="ttdeci">void addOutgoingAddrEdge(AddrCGEdge *outEdge)</div><div class="ttdef"><b>Definition:</b> <a href="ConsGNode_8h_source.html#l00271">ConsGNode.h:271</a></div></div>
182
179
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_aaae56afed424f7cd59fddb3fcb2f7214"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aaae56afed424f7cd59fddb3fcb2f7214">SVF::ConstraintGraph::reTargetSrcOfEdge</a></div><div class="ttdeci">void reTargetSrcOfEdge(ConstraintEdge *edge, ConstraintNode *newSrcNode)</div><div class="ttdoc">Remove edge from old src target, change edge dst id and add modifed edge into new src...</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00346">ConsG.cpp:346</a></div></div>
@@ -184,20 +181,22 @@ $(function() {
184
181
  <div class="ttc" id="cJSON_8cpp_html_a7669ee67a0563250c1efaa24d130e1ac"><div class="ttname"><a href="cJSON_8cpp.html#a7669ee67a0563250c1efaa24d130e1ac">copy</a></div><div class="ttdeci">copy</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l00414">cJSON.cpp:414</a></div></div>
185
182
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_aa4bca2422049413439cb0c3400f2ce28"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#aa4bca2422049413439cb0c3400f2ce28">SVF::ConstraintGraph::removeLoadEdge</a></div><div class="ttdeci">void removeLoadEdge(LoadCGEdge *edge)</div><div class="ttdoc">Remove load edge from their src and dst edge sets. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00400">ConsG.cpp:400</a></div></div>
186
183
  <div class="ttc" id="classSVF_1_1MultiOpndStmt_html_a71a530eb9fa9f7e273e471b4a75a039e"><div class="ttname"><a href="classSVF_1_1MultiOpndStmt.html#a71a530eb9fa9f7e273e471b4a75a039e">SVF::MultiOpndStmt::getResID</a></div><div class="ttdeci">NodeID getResID() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8cpp_source.html#l00287">SVFStatements.cpp:287</a></div></div>
187
- <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00211">GenericGraph.h:211</a></div></div>
184
+ <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00212">GenericGraph.h:212</a></div></div>
188
185
  <div class="ttc" id="classSVF_1_1AddrCGEdge_html"><div class="ttname"><a href="classSVF_1_1AddrCGEdge.html">SVF::AddrCGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00093">ConsGEdge.h:93</a></div></div>
189
186
  <div class="ttc" id="classSVF_1_1SelectStmt_html"><div class="ttname"><a href="classSVF_1_1SelectStmt.html">SVF::SelectStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00741">SVFStatements.h:741</a></div></div>
190
187
  <div class="ttc" id="classSVF_1_1SVFModule_html_a1357c876eccedd58b3abe68875b3a570"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a1357c876eccedd58b3abe68875b3a570">SVF::SVFModule::pagReadFromTXT</a></div><div class="ttdeci">static bool pagReadFromTXT()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00089">SVFModule.h:89</a></div></div>
191
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_ad7d0a5d387c31c186b8527c7c6bd9791"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#ad7d0a5d387c31c186b8527c7c6bd9791">llvm::DOTGraphTraits&lt; ConstraintGraph * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(NodeType *, EdgeIter EI, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00804">ConsG.cpp:804</a></div></div>
192
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00394">GenericGraph.h:394</a></div></div>
188
+ <div class="ttc" id="classSVF_1_1GraphPrinter_html_a014217fb0d05c8f2a2f1a6c5b19d3e10"><div class="ttname"><a href="classSVF_1_1GraphPrinter.html#a014217fb0d05c8f2a2f1a6c5b19d3e10">SVF::GraphPrinter::WriteGraphToFile</a></div><div class="ttdeci">static void WriteGraphToFile(SVF::OutStream &amp;O, const std::string &amp;GraphName, const GraphType &amp;GT, bool simple=false)</div><div class="ttdef"><b>Definition:</b> <a href="GraphPrinter_8h_source.html#l00056">GraphPrinter.h:56</a></div></div>
189
+ <div class="ttc" id="namespaceSVF_html_a4582a7d33a5631a5a38973f50035327e"><div class="ttname"><a href="namespaceSVF.html#a4582a7d33a5631a5a38973f50035327e">SVF::ViewGraph</a></div><div class="ttdeci">void ViewGraph(const GraphType &amp;G, const std::string &amp;name, bool ShortNames=false, GraphProgram::Name Program=GraphProgram::DOT)</div><div class="ttdef"><b>Definition:</b> <a href="GraphWriter_8h_source.html#l00371">GraphWriter.h:371</a></div></div>
190
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a43c9c773bfa17abf481c33073e30d01b"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a43c9c773bfa17abf481c33073e30d01b">SVF::GenericGraph::getGNode</a></div><div class="ttdeci">NodeType * getGNode(NodeID id) const</div><div class="ttdoc">Get a node. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00395">GenericGraph.h:395</a></div></div>
193
191
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a1973126243ff619033a78a3782944278"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a1973126243ff619033a78a3782944278">SVF::ConstraintGraph::buildCG</a></div><div class="ttdeci">void buildCG()</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00040">ConsG.cpp:40</a></div></div>
194
192
  <div class="ttc" id="classSVF_1_1ConstraintEdge_html"><div class="ttname"><a href="classSVF_1_1ConstraintEdge.html">SVF::ConstraintEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsGEdge_8h_source.html#l00048">ConsGEdge.h:48</a></div></div>
193
+ <div class="ttc" id="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4_html_a74ed73ff248b33b274c87797e61ef15c"><div class="ttname"><a href="structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html#a74ed73ff248b33b274c87797e61ef15c">SVF::DOTGraphTraits&lt; ConstraintGraph * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(NodeType *, EdgeIter EI, ConstraintGraph *)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00804">ConsG.cpp:804</a></div></div>
195
194
  <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>
196
195
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
197
196
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_a6902cabb252b1eaadb3c8220b4581a2f"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#a6902cabb252b1eaadb3c8220b4581a2f">SVF::ConstraintGraph::addVariantGepCGEdge</a></div><div class="ttdeci">VariantGepCGEdge * addVariantGepCGEdge(NodeID src, NodeID dst)</div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00234">ConsG.cpp:234</a></div></div>
198
197
  <div class="ttc" id="classSVF_1_1CopyStmt_html"><div class="ttname"><a href="classSVF_1_1CopyStmt.html">SVF::CopyStmt</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00312">SVFStatements.h:312</a></div></div>
199
198
  <div class="ttc" id="classSVF_1_1ConstraintGraph_html_af9fc8308845628fe8900528573e30462"><div class="ttname"><a href="classSVF_1_1ConstraintGraph.html#af9fc8308845628fe8900528573e30462">SVF::ConstraintGraph::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump graph into dot file. </div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8cpp_source.html#l00558">ConsG.cpp:558</a></div></div>
200
- <div class="ttc" id="classSVF_1_1GenericEdge_html_a0e8736f88ee75da025d874f92328ca71"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">SVF::GenericEdge::src</a></div><div class="ttdeci">NodeTy * src</div><div class="ttdoc">source node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00056">GenericGraph.h:56</a></div></div>
199
+ <div class="ttc" id="classSVF_1_1GenericEdge_html_a0e8736f88ee75da025d874f92328ca71"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#a0e8736f88ee75da025d874f92328ca71">SVF::GenericEdge::src</a></div><div class="ttdeci">NodeTy * src</div><div class="ttdoc">source node </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00057">GenericGraph.h:57</a></div></div>
201
200
  </div><!-- fragment --></div><!-- contents -->
202
201
  <!-- start footer part -->
203
202
  <hr class="footer"/><address class="footer"><small>