svf-tools 1.0.310 → 1.0.311

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 (316) hide show
  1. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +6 -6
  5. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  6. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +3 -3
  7. package/SVF-doxygen/html/html/Andersen_8h_source.html +8 -8
  8. package/SVF-doxygen/html/html/CHG_8cpp.html +1 -1
  9. package/SVF-doxygen/html/html/CHG_8cpp_source.html +9 -9
  10. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  11. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +5 -5
  12. package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
  13. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +5 -5
  14. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +10 -10
  15. package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +5 -5
  17. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +4 -4
  18. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +11 -11
  19. package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
  20. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/DDAClient_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
  23. package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
  24. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  25. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  26. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  27. package/SVF-doxygen/html/html/ExternalPAG_8cpp.html +1 -1
  28. package/SVF-doxygen/html/html/ExternalPAG_8cpp_source.html +8 -8
  29. package/SVF-doxygen/html/html/ExternalPAG_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +8 -8
  31. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  32. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  33. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  36. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +9 -9
  37. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +4 -4
  39. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +82 -81
  40. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +4 -4
  41. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +4 -4
  42. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
  44. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +3 -3
  45. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
  46. package/SVF-doxygen/html/html/ICFG_8h_source.html +6 -6
  47. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +4 -4
  48. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -2
  50. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
  51. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +4 -4
  52. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  53. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
  55. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
  56. package/SVF-doxygen/html/html/MHP_8cpp_source.html +13 -13
  57. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  58. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
  59. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
  60. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +5 -5
  62. package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
  63. package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/MemModel_8cpp_source.html +1 -1
  65. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +11 -11
  66. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
  67. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
  68. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  69. package/SVF-doxygen/html/html/Options_8cpp_source.html +1 -1
  70. package/SVF-doxygen/html/html/PAGBuilder_8cpp_source.html +15 -15
  71. package/SVF-doxygen/html/html/PAGBuilder_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/PAGEdge_8h_source.html +2 -2
  73. package/SVF-doxygen/html/html/PAGNode_8h_source.html +6 -6
  74. package/SVF-doxygen/html/html/PAG_8cpp_source.html +27 -27
  75. package/SVF-doxygen/html/html/PAG_8h_source.html +17 -17
  76. package/SVF-doxygen/html/html/PCG_8cpp_source.html +8 -8
  77. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +8 -8
  79. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
  80. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -8
  81. package/SVF-doxygen/html/html/PTAType_8h_source.html +4 -4
  82. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  83. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
  84. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +34 -33
  85. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +7 -7
  86. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +11 -11
  87. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +66 -66
  88. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
  89. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +2 -2
  90. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +3 -3
  91. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +4 -4
  92. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +10 -10
  94. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
  95. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +5 -5
  96. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +9 -9
  97. package/SVF-doxygen/html/html/SVFG_8h_source.html +7 -7
  98. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
  99. package/SVF-doxygen/html/html/SVFModule_8h.html +3 -0
  100. package/SVF-doxygen/html/html/SVFModule_8h_source.html +53 -46
  101. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +7 -7
  103. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
  104. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  105. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  106. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  107. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +11 -11
  108. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +16 -16
  109. package/SVF-doxygen/html/html/TCT_8cpp_source.html +11 -11
  110. package/SVF-doxygen/html/html/TCT_8h_source.html +10 -10
  111. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  112. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
  113. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  114. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +4 -4
  115. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
  116. package/SVF-doxygen/html/html/VFGNode_8h_source.html +2 -2
  117. package/SVF-doxygen/html/html/VFG_8cpp_source.html +6 -6
  118. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  119. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  120. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +10 -10
  121. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +5 -5
  122. package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
  123. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
  124. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
  125. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  126. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  127. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +2 -2
  128. package/SVF-doxygen/html/html/classSVF_1_1AddrPE.html +1 -1
  129. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +1 -1
  130. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  131. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +29 -29
  132. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  133. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +2 -2
  134. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
  135. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +1 -1
  136. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +15 -15
  137. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +1 -1
  138. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiffWithType.html +2 -2
  139. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  140. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +69 -68
  141. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPPE.html +1 -1
  142. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
  143. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +25 -25
  144. package/SVF-doxygen/html/html/classSVF_1_1CallBlockNode.html +1 -1
  145. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  146. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  147. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjPN.html +1 -1
  148. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjPN.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjPN.html +1 -1
  150. package/SVF-doxygen/html/html/classSVF_1_1CmpPE.html +1 -1
  151. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
  152. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +115 -115
  153. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +15 -15
  154. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +18 -18
  155. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +9 -9
  156. package/SVF-doxygen/html/html/classSVF_1_1CopyPE.html +1 -1
  157. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +20 -20
  159. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  160. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  161. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +4 -4
  162. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
  163. package/SVF-doxygen/html/html/classSVF_1_1DummyObjPN.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1DummyValPN.html +1 -1
  165. package/SVF-doxygen/html/html/classSVF_1_1ExternalPAG.html +8 -8
  166. package/SVF-doxygen/html/html/classSVF_1_1FIObjPN.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +6 -6
  168. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +38 -38
  169. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +20 -20
  170. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +30 -30
  171. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +5 -5
  172. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +1 -1
  173. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  175. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  176. package/SVF-doxygen/html/html/classSVF_1_1FunEntryBlockNode.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1FunExitBlockNode.html +1 -1
  178. package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +47 -47
  179. package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +58 -57
  180. package/SVF-doxygen/html/html/classSVF_1_1GepObjPN.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1GepPE.html +1 -1
  182. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1GepValPN.html +1 -1
  184. package/SVF-doxygen/html/html/classSVF_1_1GlobalBlockNode.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +13 -13
  186. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
  187. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  188. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +6 -6
  189. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +2 -2
  190. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +3 -3
  191. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
  192. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1IntraBlockNode.html +1 -1
  194. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +17 -17
  197. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
  198. package/SVF-doxygen/html/html/classSVF_1_1LoadPE.html +1 -1
  199. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +1 -1
  200. package/SVF-doxygen/html/html/classSVF_1_1LocObjTypeInfo.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1LocSymTableInfo.html +2 -2
  202. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
  203. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
  204. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +15 -15
  205. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +17 -17
  206. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  207. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
  208. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +4 -4
  209. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +3 -3
  210. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +4 -4
  211. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +21 -21
  212. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +5 -5
  213. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
  214. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +3 -3
  215. package/SVF-doxygen/html/html/classSVF_1_1ObjPN.html +2 -2
  216. package/SVF-doxygen/html/html/classSVF_1_1PAG.html +33 -33
  217. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilder.html +21 -21
  218. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  219. package/SVF-doxygen/html/html/classSVF_1_1PAGEdge.html +5 -5
  220. package/SVF-doxygen/html/html/classSVF_1_1PAGNode.html +10 -10
  221. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +15 -15
  222. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +16 -16
  224. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +4 -4
  225. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +15 -15
  226. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +6 -6
  227. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +5 -5
  228. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +10 -10
  229. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +39 -38
  230. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +153 -116
  231. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +11 -11
  232. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +3 -3
  233. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1RetBlockNode.html +1 -1
  235. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +2 -2
  237. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +8 -8
  238. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  239. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +35 -35
  240. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +7 -7
  241. package/SVF-doxygen/html/html/classSVF_1_1SVFModule-members.html +1 -0
  242. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +110 -77
  243. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
  244. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +15 -15
  245. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +3 -3
  246. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +7 -7
  247. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +2 -2
  248. package/SVF-doxygen/html/html/classSVF_1_1StorePE.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +66 -65
  251. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +28 -28
  252. package/SVF-doxygen/html/html/classSVF_1_1TCTNode.html +1 -1
  253. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  254. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  255. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  256. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
  257. package/SVF-doxygen/html/html/classSVF_1_1TypeSystem.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPPE.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
  260. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +14 -14
  261. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  262. package/SVF-doxygen/html/html/classSVF_1_1ValPN.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +31 -31
  265. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +8 -8
  266. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +3 -3
  267. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +5 -5
  268. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  269. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  270. package/SVF-doxygen/html/html/functions_0x7e.html +3 -0
  271. package/SVF-doxygen/html/html/functions_c.html +27 -26
  272. package/SVF-doxygen/html/html/functions_func_0x7e.html +3 -0
  273. package/SVF-doxygen/html/html/functions_func_c.html +11 -10
  274. package/SVF-doxygen/html/html/functions_i.html +3 -3
  275. package/SVF-doxygen/html/html/functions_r.html +1 -1
  276. package/SVF-doxygen/html/html/functions_s.html +12 -12
  277. package/SVF-doxygen/html/html/functions_u.html +3 -3
  278. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  279. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  280. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +1 -1
  281. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  282. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  283. package/SVF-doxygen/html/html/search/all_10.js +5 -5
  284. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  285. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  286. package/SVF-doxygen/html/html/search/all_14.js +2 -2
  287. package/SVF-doxygen/html/html/search/all_15.js +1 -1
  288. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  289. package/SVF-doxygen/html/html/search/all_1b.js +1 -0
  290. package/SVF-doxygen/html/html/search/all_3.js +1 -1
  291. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  292. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  293. package/SVF-doxygen/html/html/search/functions_16.js +1 -0
  294. package/SVF-doxygen/html/html/search/functions_2.js +1 -1
  295. package/SVF-doxygen/html/html/search/variables_14.js +1 -1
  296. package/SVF-doxygen/html/html/search/variables_e.js +2 -2
  297. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  298. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  299. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html +17 -17
  300. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  301. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +1 -1
  302. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_4_01_4.html +14 -14
  303. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericGraph_3_01NodeTy_00_01EdgeTy_01_4_01_5_4.html +20 -20
  304. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1GenericNode_3_01NodeTy_00_01EdgeTy_01_4_01_5_01_4.html +16 -16
  305. package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -5
  306. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  307. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  308. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  309. package/include/Graphs/GenericGraph.h +5 -8
  310. package/include/MemoryModel/PersistentPointsToCache.h +13 -7
  311. package/include/MemoryModel/PointerAnalysisImpl.h +1 -0
  312. package/include/Util/SVFModule.h +16 -0
  313. package/lib/Graphs/PAG.cpp +3 -10
  314. package/lib/SVF-FE/SymbolTableInfo.cpp +3 -0
  315. package/lib/Util/Options.cpp +2 -2
  316. package/package.json +1 -1
@@ -66,23 +66,23 @@ $(function() {
66
66
  <div class="title">PAG.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="PAG_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">//===- PAG.cpp -- Program assignment graph------------------------------------//</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"> * PAG.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: Nov 1, 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="Options_8h.html">Util/Options.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="PAG_8h.html">Graphs/PAG.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFGBuilder_8h.html">SVF-FE/ICFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1PAGEdge.html#a5205f3ccb0e28047e03b759a85fc744a">PAGEdge::callEdgeLabelCounter</a> = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1PAGEdge.html#a6086285794f9fcab46458c37a79d962f">PAGEdge::storeEdgeLabelCounter</a> = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html#aea1cb2d45d301eea27d451241fa8ddd1">PAGEdge::Inst2LabelMap</a> <a class="code" href="classSVF_1_1PAGEdge.html#a5c7605aa20425ef49294e6f153842a56">PAGEdge::inst2LabelMap</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<a class="code" href="classSVF_1_1PAG.html">PAG</a>* <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">PAG::pag</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</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"><a class="line" href="classSVF_1_1PAGNode.html#a2a9a5feb62138307b0b6f901cb5e0e0f"> 46</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PAGNode.html#a2a9a5feb62138307b0b6f901cb5e0e0f">PAGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; std::string str;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGNode ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGNode.html#ace4c68d1187a70f69a9669f0e4e56ea2"> 54</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PAGNode.html#ace4c68d1187a70f69a9669f0e4e56ea2">PAGNode::getNodeAttrForDotDisplay</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// TODO: Maybe use over-rides instead of these ifs,</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// But this puts them conveniently together.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepValPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=hexagon&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=diamond&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box&quot;</span>;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepObjPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=doubleoctagon&quot;</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FIObjPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box3d&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=tab&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=component&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(<span class="keyword">this</span>))</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="keywordflow">return</span> <span class="stringliteral">&quot;shape=Mrecord&quot;</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;VarArgPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=octagon&quot;</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 &amp;&amp; <span class="stringliteral">&quot;no such kind!!&quot;</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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"><a class="line" href="classSVF_1_1PAGNode.html#a046960749b6b8358fe1ad5f7db3ef50a"> 92</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAGNode.html#a046960749b6b8358fe1ad5f7db3ef50a">PAGNode::dump</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; this-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1ValPN.html#a417f15b3dba7f5e36fb5c8ed46dccd8e"> 96</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ValPN.html#a417f15b3dba7f5e36fb5c8ed46dccd8e">ValPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; std::string str;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ValPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjPN.html#aca96a0173b40f7917ebc814a5a0b1372"> 107</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ObjPN.html#aca96a0173b40f7917ebc814a5a0b1372">ObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; std::string str;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValPN.html#ab2423c5ca6f7487d30e2a10e933db946"> 118</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1GepValPN.html#ab2423c5ca6f7487d30e2a10e933db946">GepValPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; std::string str;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GepValPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; with offset_&quot;</span> + llvm::utostr(getOffset());</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;}</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjPN.html#ab7229c3e69880a6872fddac805bd6ee8"> 129</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1GepObjPN.html#ab7229c3e69880a6872fddac805bd6ee8">GepObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; std::string str;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GepObjPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; with offset_&quot;</span> + llvm::itostr(ls.getOffset());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjPN.html#ace2095db79e359533b0cca78f5c1751d"> 140</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1FIObjPN.html#ace2095db79e359533b0cca78f5c1751d">FIObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; std::string str;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FIObjPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; (base object)&quot;</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"><a class="line" href="classSVF_1_1RetPN.html#a9824061477c142e5dba14af14fa53aa2"> 151</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1RetPN.html#a9824061477c142e5dba14af14fa53aa2">RetPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; std::string str;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; unique return node for function &quot;</span> &lt;&lt; SVFUtil::cast&lt;Function&gt;(value)-&gt;getName();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#a617077176f0ea586a0cf9a4a1034e99d"> 158</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1VarArgPN.html#a617077176f0ea586a0cf9a4a1034e99d">VarArgPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; std::string str;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;VarArgPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; Var arg node for function &quot;</span> &lt;&lt; SVFUtil::cast&lt;Function&gt;(value)-&gt;getName();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValPN.html#a4ae5839912059488b0fdd94875cf5df5"> 165</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1DummyValPN.html#a4ae5839912059488b0fdd94875cf5df5">DummyValPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; std::string str;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;DummyValPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjPN.html#a1f355f6eeeaaba782d24ba3db48adea4"> 172</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1DummyObjPN.html#a1f355f6eeeaaba782d24ba3db48adea4">DummyObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; std::string str;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;DummyObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1CloneDummyObjPN.html#a30dc38493f8d078b58e684f62a1834e7"> 179</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CloneDummyObjPN.html#a30dc38493f8d078b58e684f62a1834e7">CloneDummyObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; std::string str;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CloneDummyObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1CloneGepObjPN.html#a77863cea018e2489e7cb05cb38cae654"> 186</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CloneGepObjPN.html#a77863cea018e2489e7cb05cb38cae654">CloneGepObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; std::string str;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CloneGepObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"><a class="line" href="classSVF_1_1CloneFIObjPN.html#aa2b28fe8abd1d131849e95708a640934"> 193</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CloneFIObjPN.html#aa2b28fe8abd1d131849e95708a640934">CloneFIObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; std::string str;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CloneFIObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGEdge.html#a85c0939ab55d744d32f5fda2b54f07e3"> 200</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PAGEdge.html#a85c0939ab55d744d32f5fda2b54f07e3">PAGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; std::string str;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrPE.html#a202747525079d2946a26f43e71a7c194"> 207</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1AddrPE.html#a202747525079d2946a26f43e71a7c194">AddrPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; std::string str;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AddrPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;}</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyPE.html#ac1232ca5d43be2c7f68ed86d9e158c72"> 218</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CopyPE.html#ac1232ca5d43be2c7f68ed86d9e158c72">CopyPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; std::string str;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CopyPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;}</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpPE.html#a69fa89fb9e2137e32555d2ce3a510752"> 229</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CmpPE.html#a69fa89fb9e2137e32555d2ce3a510752">CmpPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; std::string str;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CmpPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPPE.html#a88ed686dbd153c863e9063471722f337"> 240</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1BinaryOPPE.html#a88ed686dbd153c863e9063471722f337">BinaryOPPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; std::string str;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BinaryOPPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&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; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;}</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPPE.html#af81c662850dbe211a476fdf65aaef378"> 251</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1UnaryOPPE.html#af81c662850dbe211a476fdf65aaef378">UnaryOPPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; std::string str;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;UnaryOPPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;}</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadPE.html#a827b665b667174b9aa5fbde846207d5f"> 262</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1LoadPE.html#a827b665b667174b9aa5fbde846207d5f">LoadPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; std::string str;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LoadPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1StorePE.html#a5fa112e5ed76a41effb11343a433c8c1"> 273</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1StorePE.html#a5fa112e5ed76a41effb11343a433c8c1">StorePE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; std::string str;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;StorePE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1GepPE.html#a72bfaa84a4ee1e5f194b4b32b9d79f20"> 284</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1GepPE.html#a72bfaa84a4ee1e5f194b4b32b9d79f20">GepPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; std::string str;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GepPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1NormalGepPE.html#ac83263efe5e7f66dc3d9ed496c099a16"> 295</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1NormalGepPE.html#ac83263efe5e7f66dc3d9ed496c099a16">NormalGepPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::string str;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;NormalGepPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1VariantGepPE.html#a6b07bff6314141157f0a965cc8383730"> 306</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1VariantGepPE.html#a6b07bff6314141157f0a965cc8383730">VariantGepPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; std::string str;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;VariantGepPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#acf586dd6d455c381d1b6f6e95ef228e4"> 317</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CallPE.html#acf586dd6d455c381d1b6f6e95ef228e4">CallPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; std::string str;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CallPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#ad8d044af7c089cddae99d8ac24a7969a"> 328</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1RetPE.html#ad8d044af7c089cddae99d8ac24a7969a">RetPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; std::string str;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;}</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#aa385dc7e7e439cb4d8ee1524c8fbf9fe"> 339</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1TDForkPE.html#aa385dc7e7e439cb4d8ee1524c8fbf9fe">TDForkPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; std::string str;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;TDForkPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;}</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#accac29adba7ca4883ae161c223a1703d"> 350</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1TDJoinPE.html#accac29adba7ca4883ae161c223a1703d">TDJoinPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; std::string str;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;TDJoinPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</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"><a class="line" href="classSVF_1_1PAG.html#a0a417d229823991031eda0b97148481c"> 362</a></span>&#160;<a class="code" href="classSVF_1_1PAG.html#a0a417d229823991031eda0b97148481c">PAG::PAG</a>(<span class="keywordtype">bool</span> buildFromFile) : fromFile(buildFromFile), nodeNumAfterPAGBuild(0), totalPTAPAGEdge(0)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;{</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1PAG.html#acebd1174f9bbeeb35ccfdf87a8f0998a">symInfo</a> = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="classSVF_1_1PAG.html#aa26d3c84f970deaa76ae404597abf960">icfg</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html">ICFGBuilder</a> builder(<a class="code" href="classSVF_1_1PAG.html#aa26d3c84f970deaa76ae404597abf960">icfg</a>);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; builder.<a class="code" href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250">build</a>(<a class="code" href="classSVF_1_1PAG.html#a74f9e22acb40bf952c00168a221c0b00">getModule</a>());</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="comment">// insert dummy value if a correct value cannot be found</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a42b57f4523f30b0f739b1285ea744766">valueToEdgeMap</a>[<span class="keyword">nullptr</span>] = <a class="code" href="classSVF_1_1PAG.html#ab18ceda2810981f4d4bb47ac88705577">PAGEdgeSet</a>();</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;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a6ac3b5eb1f34ac2257d0ba2556ed52c0"> 375</a></span>&#160;<a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>* <a class="code" href="classSVF_1_1PAG.html#a6ac3b5eb1f34ac2257d0ba2556ed52c0">PAG::addAddrPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;{</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ac29bb583428e3c20d758bb9cf2d2d626">PAGEdge::Addr</a>))</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;AddrPE&gt;(edge);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">else</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; <a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>* addrPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, addrPE);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> addrPE;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;}</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#aa50bf9fbf8ff2dff0392bff0319be622"> 392</a></span>&#160;<a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>* <a class="code" href="classSVF_1_1PAG.html#aa50bf9fbf8ff2dff0392bff0319be622">PAG::addCopyPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4">PAGEdge::Copy</a>))</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CopyPE&gt;(edge);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>* copyPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, copyPE);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> copyPE;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#af88ceecaac4e20ac1dd85908b3d190c8"> 409</a></span>&#160;<a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>* <a class="code" href="classSVF_1_1PAG.html#af88ceecaac4e20ac1dd85908b3d190c8">PAG::addCmpPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a90aa1e3ce21dcd54cf433610b427ba96">PAGEdge::Cmp</a>))</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CmpPE&gt;(edge);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>* cmp = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, cmp);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> cmp;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;}</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#acf01961e2d9f3eba91c6e44c1f0137af"> 427</a></span>&#160;<a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>* <a class="code" href="classSVF_1_1PAG.html#acf01961e2d9f3eba91c6e44c1f0137af">PAG::addBinaryOPPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;{</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aab0965e92d7414417a77f925efb79dac">PAGEdge::BinaryOp</a>))</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;BinaryOPPE&gt;(edge);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>* binaryOP = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, binaryOP);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> binaryOP;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;}</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a44e671995575a58c4a92dc892b0b7239"> 444</a></span>&#160;<a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>* <a class="code" href="classSVF_1_1PAG.html#a44e671995575a58c4a92dc892b0b7239">PAG::addUnaryOPPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6afad5f112c36b6e35baf38054c14ae597">PAGEdge::UnaryOp</a>))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;UnaryOPPE&gt;(edge);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>* unaryOP = <span class="keyword">new</span> <a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, unaryOP);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> unaryOP;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a0dc823946e0b86027b6093fe7c907543"> 461</a></span>&#160;<a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>* <a class="code" href="classSVF_1_1PAG.html#a0dc823946e0b86027b6093fe7c907543">PAG::addLoadPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8fcebc849a231c3c87dddbf0ab5a2167">PAGEdge::Load</a>))</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;LoadPE&gt;(edge);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>* loadPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, loadPE);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span> loadPE;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;}</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#adbe031ff60dbcd981ff68e30a2e677ef"> 479</a></span>&#160;<a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* <a class="code" href="classSVF_1_1PAG.html#adbe031ff60dbcd981ff68e30a2e677ef">PAG::addStorePE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a>* curVal)</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; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">PAGEdge::Store</a>, curVal))</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;StorePE&gt;(edge);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* storePE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>(srcNode, dstNode, curVal);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, storePE);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">return</span> storePE;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;}</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#aa8bb3b659b70041e82aee15e8a595afb"> 496</a></span>&#160;<a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* <a class="code" href="classSVF_1_1PAG.html#aa8bb3b659b70041e82aee15e8a595afb">PAG::addCallPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a5f4c2c1ec167425622d40133ec15448d">PAGEdge::Call</a>, cs))</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CallPE&gt;(edge);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, callPE);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> callPE;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a2887310a7757f92063c5598ea694edbb"> 513</a></span>&#160;<a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* <a class="code" href="classSVF_1_1PAG.html#a2887310a7757f92063c5598ea694edbb">PAG::addRetPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a99fe431c7a635d39b5558d1048a94c05">PAGEdge::Ret</a>, cs))</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;RetPE&gt;(edge);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, retPE);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> retPE;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#addb513f5571acf2854adc878e58cf523"> 530</a></span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* <a class="code" href="classSVF_1_1PAG.html#addb513f5571acf2854adc878e58cf523">PAG::addBlackHoleAddrPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;{</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">Options::HandBlackHole</a>)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a6ac3b5eb1f34ac2257d0ba2556ed52c0">addAddrPE</a>(<a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#adc2f52d5c95c6b8718fe3f899d19cc2f">getBlackHoleNode</a>(), node);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#aa50bf9fbf8ff2dff0392bff0319be622">addCopyPE</a>(<a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a745eddbb75d513d9cbf76709e3d7057e">getNullPtr</a>(), node);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;}</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a806249f7589b55d57a62a5473bebc2e4"> 541</a></span>&#160;<a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* <a class="code" href="classSVF_1_1PAG.html#a806249f7589b55d57a62a5473bebc2e4">PAG::addThreadForkPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;{</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a1070b34fd19259725d752aa3b5adc73b">PAGEdge::ThreadFork</a>, cs))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;TDForkPE&gt;(edge);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* forkPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, forkPE);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> forkPE;</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_1PAG.html#a37c31f1829f540fb0a4b57b7de3e7bca"> 558</a></span>&#160;<a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* <a class="code" href="classSVF_1_1PAG.html#a37c31f1829f540fb0a4b57b7de3e7bca">PAG::addThreadJoinPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8ec550e2cbb5ba5847a0eb0760be165b">PAGEdge::ThreadJoin</a>, cs))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;TDJoinPE&gt;(edge);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* joinPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, joinPE);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> joinPE;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;}</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a49d8956f5723957509cbc620c3e12d2e"> 578</a></span>&#160;<a class="code" href="classSVF_1_1GepPE.html">GepPE</a>* <a class="code" href="classSVF_1_1PAG.html#a49d8956f5723957509cbc620c3e12d2e">PAG::addGepPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls, <span class="keywordtype">bool</span> constGep)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;{</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (!constGep || node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a6c54e1a54a1963ffa8c97d97ffd6f3bc">hasIncomingVariantGepEdge</a>())</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a9d575070ab5234078590f9e8bf80bbf4">addVariantGepPE</a>(src, dst);</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></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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a4606d6ff072f5ac5974719035676792e">addNormalGepPE</a>(src, dst, ls);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;}</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a4606d6ff072f5ac5974719035676792e"> 597</a></span>&#160;<a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* <a class="code" href="classSVF_1_1PAG.html#a4606d6ff072f5ac5974719035676792e">PAG::addNormalGepPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;{</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; baseLS = <a class="code" href="classSVF_1_1PAG.html#a7cd89e53bb857f6b8ee09e291f5aad3f">getLocationSetFromBaseNode</a>(src);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* baseNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<a class="code" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">getBaseValNode</a>(src));</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(baseNode, dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>))</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;NormalGepPE&gt;(edge);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">else</span></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="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* gepPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>(baseNode, dstNode, ls+baseLS);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(baseNode, dstNode, gepPE);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">return</span> gepPE;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a9d575070ab5234078590f9e8bf80bbf4"> 616</a></span>&#160;<a class="code" href="classSVF_1_1VariantGepPE.html">VariantGepPE</a>* <a class="code" href="classSVF_1_1PAG.html#a9d575070ab5234078590f9e8bf80bbf4">PAG::addVariantGepPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;{</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* baseNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<a class="code" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">getBaseValNode</a>(src));</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(baseNode, dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</a>))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;VariantGepPE&gt;(edge);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="classSVF_1_1VariantGepPE.html">VariantGepPE</a>* gepPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VariantGepPE.html">VariantGepPE</a>(baseNode, dstNode);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(baseNode, dstNode, gepPE);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">return</span> gepPE;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</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="l00631"></a><span class="lineno"> 631</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a4f4cd384fe1b4bead9bfadb386e3f328"> 637</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#a4f4cd384fe1b4bead9bfadb386e3f328">PAG::addGepValNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* curInst,<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* gepVal, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fieldidx)</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">getBaseValNode</a>(<a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(gepVal));</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0==<a class="code" href="classSVF_1_1PAG.html#afe6d92c90401918b58644a575928012c">GepValNodeMap</a>[curInst].count(std::make_pair(base, ls))</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="classSVF_1_1PAG.html#afe6d92c90401918b58644a575928012c">GepValNodeMap</a>[curInst][std::make_pair(base, ls)] = i;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="classSVF_1_1GepValPN.html">GepValPN</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepValPN.html">GepValPN</a>(gepVal, i, ls, type, fieldidx);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a7a7929598197f300b97393ecdffd81f1">addValNode</a>(gepVal, node, i);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ac1dd6570b74bec2a0f2ffd7d2ee064b6"> 651</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">PAG::getGepObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a>* gepNode = SVFUtil::dyn_cast&lt;GepObjPN&gt;(node))</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">getGepObjNode</a>(gepNode-&gt;getMemObj(), gepNode-&gt;getLocationSet() + ls);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FIObjPN.html">FIObjPN</a>* baseNode = SVFUtil::dyn_cast&lt;FIObjPN&gt;(node))</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">getGepObjNode</a>(baseNode-&gt;getMemObj(), ls);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DummyObjPN.html">DummyObjPN</a>* baseNode = SVFUtil::dyn_cast&lt;DummyObjPN&gt;(node))</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">getGepObjNode</a>(baseNode-&gt;getMemObj(), ls);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;new gep obj node kind?&quot;</span>);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;}</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7"> 673</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">PAG::getGepObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;{</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#a9e35f1d6a30c6200fb3c0c43ba4f36cb">getObjectNode</a>(obj);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span> (obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>())</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#afc69b91408401d2a92d68c3414f3402d">getFIObjNode</a>(obj);</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"> 681</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> newLS = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a480a7565dcb5d9a94f4b0ffb44b127ee">getModulusOffset</a>(obj,ls);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="comment">// Base and first field are the same memory location.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8dc477d83a142a62b63207f6f240f224">Options::FirstFieldEqBase</a> &amp;&amp; newLS.<a class="code" href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">getOffset</a>() == 0) <span class="keywordflow">return</span> base;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; NodeLocationSetMap::iterator iter = <a class="code" href="classSVF_1_1PAG.html#aac2a1bfebed4b363e9477a3745184a2a">GepObjNodeMap</a>.find(std::make_pair(base, newLS));</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1PAG.html#aac2a1bfebed4b363e9477a3745184a2a">GepObjNodeMap</a>.end())</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a39028e2fb42dec9e0b25a48400948d48">addGepObjNode</a>(obj, newLS);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div><div class="line"><a name="l00697"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a39028e2fb42dec9e0b25a48400948d48"> 697</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#a39028e2fb42dec9e0b25a48400948d48">PAG::addGepObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;{</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#a9e35f1d6a30c6200fb3c0c43ba4f36cb">getObjectNode</a>(obj);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0==<a class="code" href="classSVF_1_1PAG.html#aac2a1bfebed4b363e9477a3745184a2a">GepObjNodeMap</a>.count(std::make_pair(base, ls))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepId = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#abaff066537f06c4891c199ebfc9624e3">allocateGepObjectId</a>(base, ls.<a class="code" href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">getOffset</a>(), <a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>());</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="classSVF_1_1PAG.html#aac2a1bfebed4b363e9477a3745184a2a">GepObjNodeMap</a>[std::make_pair(base, ls)] = gepId;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a>(obj, gepId, ls);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="classSVF_1_1PAG.html#abe896f8fd3c8adc60bbb1a23862da8df">memToFieldsMap</a>[base].set(gepId);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#ab867cf7056089872daf2b27eb7ff1a8a">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae952c8b6b92c6cbef9494a83b411a60f">getRefVal</a>(), node, gepId);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;}</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ae3ae274db4f5a4f86a0579cb47530f8c"> 714</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#ae3ae274db4f5a4f86a0579cb47530f8c">PAG::addFIObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)</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="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#a9e35f1d6a30c6200fb3c0c43ba4f36cb">getObjectNode</a>(obj);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="classSVF_1_1PAG.html#abe896f8fd3c8adc60bbb1a23862da8df">memToFieldsMap</a>[base].set(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">getSymId</a>());</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <a class="code" href="classSVF_1_1FIObjPN.html">FIObjPN</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FIObjPN.html">FIObjPN</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae952c8b6b92c6cbef9494a83b411a60f">getRefVal</a>(), obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">getSymId</a>(), obj);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#ab867cf7056089872daf2b27eb7ff1a8a">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae952c8b6b92c6cbef9494a83b411a60f">getRefVal</a>(), node, obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">getSymId</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;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e"> 727</a></span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">PAG::hasNonlabeledEdge</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* src, <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dst, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6">PAGEdge::PEDGEK</a> kind)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;{</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; PAGEdge::PAGEdgeSetTy::iterator it = <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[kind].find(&amp;edge);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[kind].<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>())</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">return</span> *it;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;}</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba"> 741</a></span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">PAG::hasLabeledEdge</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* src, <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dst, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6">PAGEdge::PEDGEK</a> kind, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* callInst)</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;{</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a> edge(src,dst,<a class="code" href="classSVF_1_1PAGEdge.html#af112ad6555179a592c97a13100f725e5">PAGEdge::makeEdgeFlagWithCallInst</a>(kind,callInst));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; PAGEdge::PAGEdgeSetTy::iterator it = <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[kind].find(&amp;edge);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[kind].<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>())</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> *it;</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">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;}</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;</div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27"> 756</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">PAG::addEdge</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* src, <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dst, <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;{</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;add edge from &quot;</span> &lt;&lt; src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; kind :&quot;</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; &lt;&lt; src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() &lt;&lt; <span class="stringliteral">&quot; to &quot;</span> &lt;&lt; dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; &lt;&lt; <span class="stringliteral">&quot; kind :&quot;</span> &lt;&lt; dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; src-&gt;<a class="code" href="classSVF_1_1PAGNode.html#aed41d396a1313757176f296e7d72f731">addOutEdge</a>(edge);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; dst-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a55bca5a9f3efe73feb45920f042e5965">addInEdge</a>(edge);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordtype">bool</span> added = <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge).second;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added &amp;&amp; <span class="stringliteral">&quot;duplicated edge, not added!!!&quot;</span>);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1PAGEdge.html#a3d5a75d4f3792f90bf6ee58776512154">isPTAEdge</a>())</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a7bd46d36d58cc8ec70d8a42e5eb93683">totalPTAPAGEdge</a>++;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <a class="code" href="classSVF_1_1PAG.html#ae297792b6cf9e7782ef4268f48c01748">PTAPAGEdgeKindToSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;}</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46"> 778</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">PAG::getAllFieldsObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;{</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#a9e35f1d6a30c6200fb3c0c43ba4f36cb">getObjectNode</a>(obj);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#abe896f8fd3c8adc60bbb1a23862da8df">memToFieldsMap</a>[base];</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;}</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a1eb0e444364673333ff6b97f14e70a17"> 787</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">PAG::getAllFieldsObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;{</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjPN&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjPN.html">ObjPN</a>* obj = SVFUtil::cast&lt;ObjPN&gt;(node);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">getAllFieldsObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjPN.html#a63ee5624271a63c2dc4f7f3ed2dcefdf">getMemObj</a>());</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;}</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a19c4e63ab6129d4e7aeae8b280bb057b"> 800</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1PAG.html#a19c4e63ab6129d4e7aeae8b280bb057b">PAG::getFieldsAfterCollapse</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjPN&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = SVFUtil::cast&lt;ObjPN&gt;(node)-&gt;getMemObj();</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>())</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> bs;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; bs.set(<a class="code" href="classSVF_1_1PAG.html#afc69b91408401d2a92d68c3414f3402d">getFIObjNode</a>(mem));</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">return</span> bs;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">getAllFieldsObjNode</a>(mem);</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;</div><div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11"> 820</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">PAG::getBaseValNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;{</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(nodeId);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a9e6775e06806c54ee016e28c1324604a">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>) || node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a9e6775e06806c54ee016e28c1324604a">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</a>))</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; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; ngeps = node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a5a5712e845d05c2eaef385113c5bce58">getIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; vgeps = node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a5a5712e845d05c2eaef385113c5bce58">getIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</a>);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(((ngeps.size()+vgeps.size())==1) &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">PAGNode::iterator</a> it;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span>(!ngeps.empty())</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; it = ngeps.begin();</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; it = vgeps.begin();</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;GepPE&gt;(*it) &amp;&amp; <span class="stringliteral">&quot;not a gep edge??&quot;</span>);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">return</span> (*it)-&gt;getSrcID();</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">else</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> nodeId;</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;</div><div class="line"><a name="l00849"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a7cd89e53bb857f6b8ee09e291f5aad3f"> 849</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1PAG.html#a7cd89e53bb857f6b8ee09e291f5aad3f">PAG::getLocationSetFromBaseNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;{</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(nodeId);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a5a5712e845d05c2eaef385113c5bce58">getIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span>(geps.empty())</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(geps.size()==1 &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">PAGNode::iterator</a> it = geps.begin();</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;NormalGepPE&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;not a get edge??&quot;</span>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* gepEdge = SVFUtil::cast&lt;NormalGepPE&gt;(edge);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">return</span> gepEdge-&gt;<a class="code" href="classSVF_1_1NormalGepPE.html#ac086d39e0f554705b627c2fc07a33875">getLocationSet</a>();</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;}</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a5a6278a7244c926022288243007da790"> 868</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#a5a6278a7244c926022288243007da790">PAG::destroy</a>()</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGKindToEdgeSetMapTy::iterator I =</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>.begin(), E = <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>.end(); I != E;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; ++I)</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; {</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator edgeIt = I-&gt;second.begin(),</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; endEdgeIt = I-&gt;second.end(); edgeIt != endEdgeIt; ++edgeIt)</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; {</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; <span class="keyword">delete</span> *edgeIt;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; }</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f8d99c761f3c7108d797b3702fcbfec">SymbolTableInfo::releaseSymbolInfo</a>();</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <a class="code" href="classSVF_1_1PAG.html#acebd1174f9bbeeb35ccfdf87a8f0998a">symInfo</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;}</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;</div><div class="line"><a name="l00887"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#aa432bbc7c4e83abecdc8706972a9635b"> 887</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#aa432bbc7c4e83abecdc8706972a9635b">PAG::print</a>()</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160;{</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-------------------PAG------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; addrs = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ac29bb583428e3c20d758bb9cf2d2d626">PAGEdge::Addr</a>);</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = addrs.begin(), eiter =</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; {</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">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="l00896"></a><span class="lineno"> 896</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160;</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; copys = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4">PAGEdge::Copy</a>);</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = copys.begin(), eiter =</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; copys.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; {</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; }</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160;</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; calls = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a5f4c2c1ec167425622d40133ec15448d">PAGEdge::Call</a>);</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = calls.begin(), eiter =</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; calls.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; {</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Call --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; }</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; rets = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a99fe431c7a635d39b5558d1048a94c05">PAGEdge::Ret</a>);</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = rets.begin(), eiter =</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; rets.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; {</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Ret --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; }</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160;</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; tdfks = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a1070b34fd19259725d752aa3b5adc73b">PAGEdge::ThreadFork</a>);</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = tdfks.begin(), eiter =</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; tdfks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadFork --&gt; &quot;</span></div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; }</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; tdjns = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8ec550e2cbb5ba5847a0eb0760be165b">PAGEdge::ThreadJoin</a>);</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = tdjns.begin(), eiter =</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; tdjns.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; {</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadJoin --&gt; &quot;</span></div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; }</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; ngeps = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>);</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = ngeps.begin(), eiter =</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; ngeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; {</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* gep = SVFUtil::cast&lt;NormalGepPE&gt;(*iter);</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() &lt;&lt; <span class="stringliteral">&quot; -- NormalGep (&quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1NormalGepPE.html#a38ac1dd06ada0a04e13a038f8b69e3e5">getOffset</a>()</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160;</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; vgeps = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</a>);</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = vgeps.begin(), eiter =</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; vgeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; {</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VariantGep --&gt; &quot;</span></div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; }</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; loads = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8fcebc849a231c3c87dddbf0ab5a2167">PAGEdge::Load</a>);</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = loads.begin(), eiter =</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; loads.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; {</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">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="l00961"></a><span class="lineno"> 961</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160;</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">PAGEdge::Store</a>);</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; {</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">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="l00969"></a><span class="lineno"> 969</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; }</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160;}</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160;</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160;<span class="comment"> * If this is a dummy node or node does not have incoming edges we assume it is not a pointer here</span></div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00978"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a17fab82554f5a81c22c037b5813999e3"> 978</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAG.html#a17fab82554f5a81c22c037b5813999e3">PAG::isValidPointer</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)<span class="keyword"> const</span></div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(nodeId);</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> ((node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty()))</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>();</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160;}</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160;</div><div class="line"><a name="l00986"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67"> 986</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">PAG::isValidTopLevelPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node)</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160;{</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a983d2d9a8ea6fd5be14af55cf22c65ce">isTopLevelPtr</a>())</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; {</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PAG.html#a17fab82554f5a81c22c037b5813999e3">isValidPointer</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a071f592f2b811c136db5e05a6169aa99">hasValue</a>())</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; {</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#afd690c09e01989e57899875ca97f0166">SVFUtil::ArgInNoCallerFunction</a>(node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">getValue</a>()))</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160; }</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; }</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160;}</div><div class="line"><a name="l01002"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGEdge.html#ab686138c420a0b03cf8f1c1dff044318"> 1002</a></span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html#ab686138c420a0b03cf8f1c1dff044318">PAGEdge::PAGEdge</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* s, <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k) :</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160; <a class="code" href="classSVF_1_1GenericEdge.html">GenericPAGEdgeTy</a>(s,d,k),value(nullptr),basicBlock(nullptr),icfgNode(nullptr)</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160;{</div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#ad38d3486f99325bd0438e4b4bacbda8a">edgeId</a> = <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a29cab1426b0000bd87c026ab8c9979c0">getTotalEdgeNum</a>();</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160; <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a2f2bca8219c7d769f6d2937e5cd40d14">incEdgeNum</a>();</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160;}</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;</div><div class="line"><a name="l01012"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGEdge.html#a3d5a75d4f3792f90bf6ee58776512154"> 1012</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAGEdge.html#a3d5a75d4f3792f90bf6ee58776512154">PAGEdge::isPTAEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;isPointer() &amp;&amp; <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;isPointer();</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;}</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;</div><div class="line"><a name="l01020"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGNode.html#a37d3c3aef0c5bd7a5d0d516438673800"> 1020</a></span>&#160;<a class="code" href="classSVF_1_1PAGNode.html#a37d3c3aef0c5bd7a5d0d516438673800">PAGNode::PAGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfd">PNODEK</a> k) :</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html">GenericPAGNodeTy</a>(i,k), <a class="code" href="classSVF_1_1PAGEdge.html#a8b10bded7a25c801dc48926319da0525">value</a>(val)</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;{</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160;</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>( <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda3ec7c7a77326c63c845463e36d278698">ValNode</a> &lt;= k &amp;&amp; k &lt;= <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda2b633e41b4f1515ba25862f0bae0165c">CloneDummyObjNode</a> &amp;&amp; <span class="stringliteral">&quot;new PAG node kind?&quot;</span>);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160;</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <span class="keywordflow">switch</span> (k)</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; {</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda3ec7c7a77326c63c845463e36d278698">ValNode</a>:</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdab1e9c79d90d28d638f13717e71786bfa">GepValNode</a>:</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; {</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(val != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;value is nullptr for ValPN or GepValNode&quot;</span>);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#ae0e9f3bb2dccd6fe6be5e1f5fbb29066">isTLPointer</a> = val-&gt;getType()-&gt;isPointerTy();</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">isATPointer</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; }</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160;</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda02baa6f73696007a1ed47262491bd26b">RetNode</a>:</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; {</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(val != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;value is nullptr for RetNode&quot;</span>);</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#ae0e9f3bb2dccd6fe6be5e1f5fbb29066">isTLPointer</a> = SVFUtil::cast&lt;Function&gt;(val)-&gt;getReturnType()-&gt;isPointerTy();</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">isATPointer</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; }</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160;</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda8712271278d9fa8a8445f785e6816e8c">VarargNode</a>:</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdaa82b7fff975b0513e429eaeb18866e6e">DummyValNode</a>:</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; {</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#ae0e9f3bb2dccd6fe6be5e1f5fbb29066">isTLPointer</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">isATPointer</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; }</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160;</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda3de3216997f81d0d1e8c91a844e33137">ObjNode</a>:</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda568cd7813242fb6b6fc7a5bf24e99925">GepObjNode</a>:</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda727e569faa3b18cd01afe78b81f86d22">FIObjNode</a>:</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdad90c3ebe36773e94bcc116ab221a134b">DummyObjNode</a>:</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda4b4c88fe6b73ec2f09441e7abd4766c6">CloneGepObjNode</a>:</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda988291beb55638d5558be338c3771c31">CloneFIObjNode</a>:</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda2b633e41b4f1515ba25862f0bae0165c">CloneDummyObjNode</a>:</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; {</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#ae0e9f3bb2dccd6fe6be5e1f5fbb29066">isTLPointer</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">isATPointer</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; }</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; }</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160;}</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;</div><div class="line"><a name="l01068"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGNode.html#a36a52b3618e8c1366402ec67507d6979"> 1068</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAGNode.html#a36a52b3618e8c1366402ec67507d6979">PAGNode::isIsolatedNode</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>() &amp;&amp; <a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>())</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PAGNode.html#ac50befb2bed2a5298248bec277632b2e">isConstantData</a>())</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PAGNode.html#a8662a272081441af5440af58c975b85e">value</a> &amp;&amp; SVFUtil::isa&lt;Function&gt;(<a class="code" href="classSVF_1_1PAGNode.html#a8662a272081441af5440af58c975b85e">value</a>))</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad2c53be5490882768d51aa894b37cbf1">SVFUtil::isIntrinsicFun</a>(SVFUtil::cast&lt;Function&gt;(<a class="code" href="classSVF_1_1PAGNode.html#a8662a272081441af5440af58c975b85e">value</a>));</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;}</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160;</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;</div><div class="line"><a name="l01083"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ab4326448a536de1c8c1513fcf6d45aa2"> 1083</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#ab4326448a536de1c8c1513fcf6d45aa2">PAG::dump</a>(std::string name)</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;{</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#a53b3809728c30389a594076097884b82">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>(), name, <span class="keyword">this</span>);</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160;}</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;</div><div class="line"><a name="l01091"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a287461961353d4c8b5b3947fe62ad388"> 1091</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#a287461961353d4c8b5b3947fe62ad388">PAG::view</a>()</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160;{</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; llvm::ViewGraph(<span class="keyword">this</span>, <span class="stringliteral">&quot;ProgramAssignmentGraph&quot;</span>);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160;}</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;</div><div class="line"><a name="l01099"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ab6f0bc584f351839c9dba440e8d382a0"> 1099</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#ab6f0bc584f351839c9dba440e8d382a0">PAG::handleBlackHole</a>(<span class="keywordtype">bool</span> b)</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160;{</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <a class="code" href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">Options::HandBlackHole</a> = b;</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;}</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160;</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;{</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l01110"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html"> 1110</a></span>&#160;<span class="keyword">struct </span>DOTGraphTraits&lt;<a class="code" href="classSVF_1_1PAG.html">PAG</a>*&gt; : <span class="keyword">public</span> DefaultDOTGraphTraits</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160;{</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;</div><div class="line"><a name="l01113"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a79ab044136b3eb04258c92dc41c62140"> 1113</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a79ab044136b3eb04258c92dc41c62140">NodeType</a>;</div><div class="line"><a name="l01114"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3101c843232b1f228a9af0e464c2049b"> 1114</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">NodeType::iterator</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3101c843232b1f228a9af0e464c2049b">ChildIteratorType</a>;</div><div class="line"><a name="l01115"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1d81546fa4fbc35deedad6bfb01a006"> 1115</a></span>&#160; <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1d81546fa4fbc35deedad6bfb01a006">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; DefaultDOTGraphTraits(isSimple)</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; {</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160;</div><div class="line"><a name="l01121"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a13511a8b9de98389694c33e5895588a7"> 1121</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a13511a8b9de98389694c33e5895588a7">getGraphName</a>(<a class="code" href="classSVF_1_1PAG.html">PAG</a> *graph)</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; <span class="keywordflow">return</span> graph-&gt;<a class="code" href="classSVF_1_1PAG.html#aa18a51570a397eabffdd613fdb15b4ac">getGraphName</a>();</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; }</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;<span class="preprocessor">#if LLVM_VERSION_MAJOR &gt;= 12</span></div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> isNodeHidden(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *node, <a class="code" href="classSVF_1_1PAG.html">PAG</a>*) {</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01131"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a7391e83f5da401ab77cd6a4c36ccb337"> 1131</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a7391e83f5da401ab77cd6a4c36ccb337">isNodeHidden</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *node) {</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a36a52b3618e8c1366402ec67507d6979">isIsolatedNode</a>();</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; }</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160;</div><div class="line"><a name="l01138"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a0a1838869e7fa447739a594e549c983f"> 1138</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a0a1838869e7fa447739a594e549c983f">getNodeLabel</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *node, <a class="code" href="classSVF_1_1PAG.html">PAG</a>*)</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; {</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; std::string str;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="comment">// print function info</span></div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a1697d70ee484569bbd7557cf99b223dc">getFunction</a>())</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a1697d70ee484569bbd7557cf99b223dc">getFunction</a>()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;] &quot;</span>;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160;</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a2a9a5feb62138307b0b6f901cb5e0e0f">toString</a>();</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; }</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160;</div><div class="line"><a name="l01152"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#aa5c1ce2e1eabe212edc58b9362fd1067"> 1152</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#aa5c1ce2e1eabe212edc58b9362fd1067">getNodeAttributes</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *node, <a class="code" href="classSVF_1_1PAG.html">PAG</a>*)</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; {</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#ace4c68d1187a70f69a9669f0e4e56ea2">getNodeAttrForDotDisplay</a>();</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; }</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160;</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l01158"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1457fbb243e106e3940dcb7f5f8f274"> 1158</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1457fbb243e106e3940dcb7f5f8f274">getEdgeAttributes</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>*, EdgeIter EI, <a class="code" href="classSVF_1_1PAG.html">PAG</a>*)</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; {</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AddrPE&gt;(edge))</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; {</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; }</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CopyPE&gt;(edge))</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; {</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; }</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepPE&gt;(edge))</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; {</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; }</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StorePE&gt;(edge))</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; {</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; }</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadPE&gt;(edge))</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; {</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; }</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CmpPE&gt;(edge))</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; {</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; }</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BinaryOPPE&gt;(edge))</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; {</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; }</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UnaryOPPE&gt;(edge))</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; {</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; }</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;TDForkPE&gt;(edge))</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; {</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=Turquoise&quot;</span>;</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; }</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;TDJoinPE&gt;(edge))</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; {</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=Turquoise&quot;</span>;</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; }</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallPE&gt;(edge))</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; {</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black,style=dashed&quot;</span>;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; }</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPE&gt;(edge))</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; {</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black,style=dotted&quot;</span>;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; }</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160;</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>(1);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; }</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160;</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l01216"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3bf6fe67ecbf1dd82879ff15bfd87140"> 1216</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3bf6fe67ecbf1dd82879ff15bfd87140">getEdgeSourceLabel</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>*, EdgeIter EI)</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; {</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* calledge = SVFUtil::dyn_cast&lt;CallPE&gt;(edge))</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; {</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst= calledge-&gt;getCallSite()-&gt;getCallSite();</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(callInst);</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retedge = SVFUtil::dyn_cast&lt;RetPE&gt;(edge))</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; {</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst= retedge-&gt;getCallSite()-&gt;getCallSite();</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(callInst);</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; }</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; }</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160;};</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="ttc" id="classSVF_1_1CloneDummyObjPN_html_a30dc38493f8d078b58e684f62a1834e7"><div class="ttname"><a href="classSVF_1_1CloneDummyObjPN.html#a30dc38493f8d078b58e684f62a1834e7">SVF::CloneDummyObjPN::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00179">PAG.cpp:179</a></div></div>
69
+ <a href="PAG_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">//===- PAG.cpp -- Program assignment graph------------------------------------//</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"> * PAG.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: Nov 1, 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="Options_8h.html">Util/Options.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="PAG_8h.html">Graphs/PAG.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ICFGBuilder_8h.html">SVF-FE/ICFGBuilder.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1PAGEdge.html#a5205f3ccb0e28047e03b759a85fc744a">PAGEdge::callEdgeLabelCounter</a> = 0;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="classSVF_1_1PAGEdge.html#a6086285794f9fcab46458c37a79d962f">PAGEdge::storeEdgeLabelCounter</a> = 0;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html#aea1cb2d45d301eea27d451241fa8ddd1">PAGEdge::Inst2LabelMap</a> <a class="code" href="classSVF_1_1PAGEdge.html#a5c7605aa20425ef49294e6f153842a56">PAGEdge::inst2LabelMap</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<a class="code" href="classSVF_1_1PAG.html">PAG</a>* <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">PAG::pag</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</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"><a class="line" href="classSVF_1_1PAGNode.html#a2a9a5feb62138307b0b6f901cb5e0e0f"> 46</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PAGNode.html#a2a9a5feb62138307b0b6f901cb5e0e0f">PAGNode::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; std::string str;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGNode ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGNode.html#ace4c68d1187a70f69a9669f0e4e56ea2"> 54</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PAGNode.html#ace4c68d1187a70f69a9669f0e4e56ea2">PAGNode::getNodeAttrForDotDisplay</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// TODO: Maybe use over-rides instead of these ifs,</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="comment">// But this puts them conveniently together.</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;ValPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepValPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=hexagon&quot;</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyValPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=diamond&quot;</span>;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box&quot;</span>;</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; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;ObjPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;GepObjPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=doubleoctagon&quot;</span>;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(SVFUtil::isa&lt;FIObjPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=box3d&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;DummyObjPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=tab&quot;</span>;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=component&quot;</span>;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPN&gt;(<span class="keyword">this</span>))</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="keywordflow">return</span> <span class="stringliteral">&quot;shape=Mrecord&quot;</span>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;VarArgPN&gt;(<span class="keyword">this</span>))</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; {</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;shape=octagon&quot;</span>;</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0 &amp;&amp; <span class="stringliteral">&quot;no such kind!!&quot;</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</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"><a class="line" href="classSVF_1_1PAGNode.html#a046960749b6b8358fe1ad5f7db3ef50a"> 92</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAGNode.html#a046960749b6b8358fe1ad5f7db3ef50a">PAGNode::dump</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; this-&gt;toString() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;}</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1ValPN.html#a417f15b3dba7f5e36fb5c8ed46dccd8e"> 96</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ValPN.html#a417f15b3dba7f5e36fb5c8ed46dccd8e">ValPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; std::string str;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ValPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1ObjPN.html#aca96a0173b40f7917ebc814a5a0b1372"> 107</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1ObjPN.html#aca96a0173b40f7917ebc814a5a0b1372">ObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; std::string str;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;}</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classSVF_1_1GepValPN.html#ab2423c5ca6f7487d30e2a10e933db946"> 118</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1GepValPN.html#ab2423c5ca6f7487d30e2a10e933db946">GepValPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; std::string str;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GepValPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; with offset_&quot;</span> + llvm::utostr(getOffset());</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; }</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;}</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="classSVF_1_1GepObjPN.html#ab7229c3e69880a6872fddac805bd6ee8"> 129</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1GepObjPN.html#ab7229c3e69880a6872fddac805bd6ee8">GepObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; std::string str;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GepObjPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; with offset_&quot;</span> + llvm::itostr(ls.getOffset());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classSVF_1_1FIObjPN.html#ace2095db79e359533b0cca78f5c1751d"> 140</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1FIObjPN.html#ace2095db79e359533b0cca78f5c1751d">FIObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; std::string str;</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;FIObjPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; (base object)&quot;</span>;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(value);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"><a class="line" href="classSVF_1_1RetPN.html#a9824061477c142e5dba14af14fa53aa2"> 151</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1RetPN.html#a9824061477c142e5dba14af14fa53aa2">RetPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; std::string str;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; unique return node for function &quot;</span> &lt;&lt; SVFUtil::cast&lt;Function&gt;(value)-&gt;getName();</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1VarArgPN.html#a617077176f0ea586a0cf9a4a1034e99d"> 158</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1VarArgPN.html#a617077176f0ea586a0cf9a4a1034e99d">VarArgPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; std::string str;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;VarArgPN ID: &quot;</span> &lt;&lt; getId() &lt;&lt; <span class="stringliteral">&quot; Var arg node for function &quot;</span> &lt;&lt; SVFUtil::cast&lt;Function&gt;(value)-&gt;getName();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;}</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyValPN.html#a4ae5839912059488b0fdd94875cf5df5"> 165</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1DummyValPN.html#a4ae5839912059488b0fdd94875cf5df5">DummyValPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; std::string str;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;DummyValPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;}</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classSVF_1_1DummyObjPN.html#a1f355f6eeeaaba782d24ba3db48adea4"> 172</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1DummyObjPN.html#a1f355f6eeeaaba782d24ba3db48adea4">DummyObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; std::string str;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;DummyObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;}</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="classSVF_1_1CloneDummyObjPN.html#a30dc38493f8d078b58e684f62a1834e7"> 179</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CloneDummyObjPN.html#a30dc38493f8d078b58e684f62a1834e7">CloneDummyObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; std::string str;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CloneDummyObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classSVF_1_1CloneGepObjPN.html#a77863cea018e2489e7cb05cb38cae654"> 186</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CloneGepObjPN.html#a77863cea018e2489e7cb05cb38cae654">CloneGepObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; std::string str;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CloneGepObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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"><a class="line" href="classSVF_1_1CloneFIObjPN.html#aa2b28fe8abd1d131849e95708a640934"> 193</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CloneFIObjPN.html#aa2b28fe8abd1d131849e95708a640934">CloneFIObjPN::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; std::string str;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CloneFIObjPN ID: &quot;</span> &lt;&lt; getId();</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;}</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGEdge.html#a85c0939ab55d744d32f5fda2b54f07e3"> 200</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1PAGEdge.html#a85c0939ab55d744d32f5fda2b54f07e3">PAGEdge::toString</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; std::string str;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;PAGEdge: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;}</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="classSVF_1_1AddrPE.html#a202747525079d2946a26f43e71a7c194"> 207</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1AddrPE.html#a202747525079d2946a26f43e71a7c194">AddrPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; std::string str;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;AddrPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;}</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classSVF_1_1CopyPE.html#ac1232ca5d43be2c7f68ed86d9e158c72"> 218</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CopyPE.html#ac1232ca5d43be2c7f68ed86d9e158c72">CopyPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; std::string str;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CopyPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; }</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;}</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="classSVF_1_1CmpPE.html#a69fa89fb9e2137e32555d2ce3a510752"> 229</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CmpPE.html#a69fa89fb9e2137e32555d2ce3a510752">CmpPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; std::string str;</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CmpPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="classSVF_1_1BinaryOPPE.html#a88ed686dbd153c863e9063471722f337"> 240</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1BinaryOPPE.html#a88ed686dbd153c863e9063471722f337">BinaryOPPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; std::string str;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;BinaryOPPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&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; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;}</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classSVF_1_1UnaryOPPE.html#af81c662850dbe211a476fdf65aaef378"> 251</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1UnaryOPPE.html#af81c662850dbe211a476fdf65aaef378">UnaryOPPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; std::string str;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;UnaryOPPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; }</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;}</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div><div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="classSVF_1_1LoadPE.html#a827b665b667174b9aa5fbde846207d5f"> 262</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1LoadPE.html#a827b665b667174b9aa5fbde846207d5f">LoadPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; std::string str;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LoadPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; }</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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="l00273"></a><span class="lineno"><a class="line" href="classSVF_1_1StorePE.html#a5fa112e5ed76a41effb11343a433c8c1"> 273</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1StorePE.html#a5fa112e5ed76a41effb11343a433c8c1">StorePE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; std::string str;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;StorePE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; }</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="classSVF_1_1GepPE.html#a72bfaa84a4ee1e5f194b4b32b9d79f20"> 284</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1GepPE.html#a72bfaa84a4ee1e5f194b4b32b9d79f20">GepPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; std::string str;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;GepPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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="l00295"></a><span class="lineno"><a class="line" href="classSVF_1_1NormalGepPE.html#ac83263efe5e7f66dc3d9ed496c099a16"> 295</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1NormalGepPE.html#ac83263efe5e7f66dc3d9ed496c099a16">NormalGepPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; std::string str;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;NormalGepPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; }</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;}</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="classSVF_1_1VariantGepPE.html#a6b07bff6314141157f0a965cc8383730"> 306</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1VariantGepPE.html#a6b07bff6314141157f0a965cc8383730">VariantGepPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; std::string str;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;VariantGepPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classSVF_1_1CallPE.html#acf586dd6d455c381d1b6f6e95ef228e4"> 317</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1CallPE.html#acf586dd6d455c381d1b6f6e95ef228e4">CallPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; std::string str;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;CallPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; }</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="classSVF_1_1RetPE.html#ad8d044af7c089cddae99d8ac24a7969a"> 328</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1RetPE.html#ad8d044af7c089cddae99d8ac24a7969a">RetPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; std::string str;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;RetPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;}</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="classSVF_1_1TDForkPE.html#aa385dc7e7e439cb4d8ee1524c8fbf9fe"> 339</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1TDForkPE.html#aa385dc7e7e439cb4d8ee1524c8fbf9fe">TDForkPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; std::string str;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;TDForkPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; }</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;}</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="classSVF_1_1TDJoinPE.html#accac29adba7ca4883ae161c223a1703d"> 350</a></span>&#160;<span class="keyword">const</span> std::string <a class="code" href="classSVF_1_1TDJoinPE.html#accac29adba7ca4883ae161c223a1703d">TDJoinPE::toString</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; std::string str;</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;TDJoinPE: [&quot;</span> &lt;&lt; getDstID() &lt;&lt; <span class="stringliteral">&quot;&lt;--&quot;</span> &lt;&lt; getSrcID() &lt;&lt; <span class="stringliteral">&quot;]\t&quot;</span>;</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8eba08052f7af57b762155a58844480c">Options::PAGDotGraphShorter</a>) {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</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; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(getValue());</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; <span class="keywordflow">return</span> rawstr.str();</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;</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"><a class="line" href="classSVF_1_1PAG.html#a0a417d229823991031eda0b97148481c"> 362</a></span>&#160;<a class="code" href="classSVF_1_1PAG.html#a0a417d229823991031eda0b97148481c">PAG::PAG</a>(<span class="keywordtype">bool</span> buildFromFile) : fromFile(buildFromFile), nodeNumAfterPAGBuild(0), totalPTAPAGEdge(0)</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;{</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <a class="code" href="classSVF_1_1PAG.html#acebd1174f9bbeeb35ccfdf87a8f0998a">symInfo</a> = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>();</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <a class="code" href="classSVF_1_1PAG.html#aa26d3c84f970deaa76ae404597abf960">icfg</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="classSVF_1_1ICFGBuilder.html">ICFGBuilder</a> builder(<a class="code" href="classSVF_1_1PAG.html#aa26d3c84f970deaa76ae404597abf960">icfg</a>);</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; builder.<a class="code" href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250">build</a>(<a class="code" href="classSVF_1_1PAG.html#a74f9e22acb40bf952c00168a221c0b00">getModule</a>());</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="comment">// insert dummy value if a correct value cannot be found</span></div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a42b57f4523f30b0f739b1285ea744766">valueToEdgeMap</a>[<span class="keyword">nullptr</span>] = <a class="code" href="classSVF_1_1PAG.html#ab18ceda2810981f4d4bb47ac88705577">PAGEdgeSet</a>();</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;</div><div class="line"><a name="l00375"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a6ac3b5eb1f34ac2257d0ba2556ed52c0"> 375</a></span>&#160;<a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>* <a class="code" href="classSVF_1_1PAG.html#a6ac3b5eb1f34ac2257d0ba2556ed52c0">PAG::addAddrPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;{</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ac29bb583428e3c20d758bb9cf2d2d626">PAGEdge::Addr</a>))</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;AddrPE&gt;(edge);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">else</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; <a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>* addrPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AddrPE.html">AddrPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, addrPE);</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; <span class="keywordflow">return</span> addrPE;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; }</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;}</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#aa50bf9fbf8ff2dff0392bff0319be622"> 392</a></span>&#160;<a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>* <a class="code" href="classSVF_1_1PAG.html#aa50bf9fbf8ff2dff0392bff0319be622">PAG::addCopyPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;{</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4">PAGEdge::Copy</a>))</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CopyPE&gt;(edge);</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; {</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; <a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>* copyPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CopyPE.html">CopyPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, copyPE);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; <span class="keywordflow">return</span> copyPE;</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; }</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#af88ceecaac4e20ac1dd85908b3d190c8"> 409</a></span>&#160;<a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>* <a class="code" href="classSVF_1_1PAG.html#af88ceecaac4e20ac1dd85908b3d190c8">PAG::addCmpPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;{</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a90aa1e3ce21dcd54cf433610b427ba96">PAGEdge::Cmp</a>))</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CmpPE&gt;(edge);</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; {</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>* cmp = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CmpPE.html">CmpPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, cmp);</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; <span class="keywordflow">return</span> cmp;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; }</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;}</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;</div><div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#acf01961e2d9f3eba91c6e44c1f0137af"> 427</a></span>&#160;<a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>* <a class="code" href="classSVF_1_1PAG.html#acf01961e2d9f3eba91c6e44c1f0137af">PAG::addBinaryOPPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;{</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aab0965e92d7414417a77f925efb79dac">PAGEdge::BinaryOp</a>))</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;BinaryOPPE&gt;(edge);</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>* binaryOP = <span class="keyword">new</span> <a class="code" href="classSVF_1_1BinaryOPPE.html">BinaryOPPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, binaryOP);</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordflow">return</span> binaryOP;</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; }</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;}</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;</div><div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a44e671995575a58c4a92dc892b0b7239"> 444</a></span>&#160;<a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>* <a class="code" href="classSVF_1_1PAG.html#a44e671995575a58c4a92dc892b0b7239">PAG::addUnaryOPPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;{</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6afad5f112c36b6e35baf38054c14ae597">PAGEdge::UnaryOp</a>))</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;UnaryOPPE&gt;(edge);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; {</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>* unaryOP = <span class="keyword">new</span> <a class="code" href="classSVF_1_1UnaryOPPE.html">UnaryOPPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, unaryOP);</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">return</span> unaryOP;</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; }</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;}</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;</div><div class="line"><a name="l00461"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a0dc823946e0b86027b6093fe7c907543"> 461</a></span>&#160;<a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>* <a class="code" href="classSVF_1_1PAG.html#a0dc823946e0b86027b6093fe7c907543">PAG::addLoadPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;{</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8fcebc849a231c3c87dddbf0ab5a2167">PAGEdge::Load</a>))</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;LoadPE&gt;(edge);</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; {</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; <a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>* loadPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1LoadPE.html">LoadPE</a>(srcNode, dstNode);</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, loadPE);</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <span class="keywordflow">return</span> loadPE;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; }</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;}</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div><div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#adbe031ff60dbcd981ff68e30a2e677ef"> 479</a></span>&#160;<a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* <a class="code" href="classSVF_1_1PAG.html#adbe031ff60dbcd981ff68e30a2e677ef">PAG::addStorePE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1IntraBlockNode.html">IntraBlockNode</a>* curVal)</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; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">PAGEdge::Store</a>, curVal))</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;StorePE&gt;(edge);</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>* storePE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1StorePE.html">StorePE</a>(srcNode, dstNode, curVal);</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, storePE);</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">return</span> storePE;</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; }</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;}</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#aa8bb3b659b70041e82aee15e8a595afb"> 496</a></span>&#160;<a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* <a class="code" href="classSVF_1_1PAG.html#aa8bb3b659b70041e82aee15e8a595afb">PAG::addCallPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;{</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a5f4c2c1ec167425622d40133ec15448d">PAGEdge::Call</a>, cs))</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;CallPE&gt;(edge);</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* callPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, callPE);</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <span class="keywordflow">return</span> callPE;</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; }</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;}</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a2887310a7757f92063c5598ea694edbb"> 513</a></span>&#160;<a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* <a class="code" href="classSVF_1_1PAG.html#a2887310a7757f92063c5598ea694edbb">PAG::addRetPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a99fe431c7a635d39b5558d1048a94c05">PAGEdge::Ret</a>, cs))</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;RetPE&gt;(edge);</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; {</div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160; <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, retPE);</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <span class="keywordflow">return</span> retPE;</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; }</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#addb513f5571acf2854adc878e58cf523"> 530</a></span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* <a class="code" href="classSVF_1_1PAG.html#addb513f5571acf2854adc878e58cf523">PAG::addBlackHoleAddrPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;{</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">Options::HandBlackHole</a>)</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a6ac3b5eb1f34ac2257d0ba2556ed52c0">addAddrPE</a>(<a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#adc2f52d5c95c6b8718fe3f899d19cc2f">getBlackHoleNode</a>(), node);</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#aa50bf9fbf8ff2dff0392bff0319be622">addCopyPE</a>(<a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a745eddbb75d513d9cbf76709e3d7057e">getNullPtr</a>(), node);</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;}</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;</div><div class="line"><a name="l00541"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a806249f7589b55d57a62a5473bebc2e4"> 541</a></span>&#160;<a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* <a class="code" href="classSVF_1_1PAG.html#a806249f7589b55d57a62a5473bebc2e4">PAG::addThreadForkPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;{</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a1070b34fd19259725d752aa3b5adc73b">PAGEdge::ThreadFork</a>, cs))</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;TDForkPE&gt;(edge);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; {</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>* forkPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TDForkPE.html">TDForkPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, forkPE);</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> forkPE;</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_1PAG.html#a37c31f1829f540fb0a4b57b7de3e7bca"> 558</a></span>&#160;<a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* <a class="code" href="classSVF_1_1PAG.html#a37c31f1829f540fb0a4b57b7de3e7bca">PAG::addThreadJoinPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallBlockNode.html">CallBlockNode</a>* cs)</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_1PAGNode.html">PAGNode</a>* srcNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">hasLabeledEdge</a>(srcNode,dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8ec550e2cbb5ba5847a0eb0760be165b">PAGEdge::ThreadJoin</a>, cs))</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;TDJoinPE&gt;(edge);</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160; {</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160; <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>* joinPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TDJoinPE.html">TDJoinPE</a>(srcNode, dstNode, cs);</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(srcNode,dstNode, joinPE);</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; <span class="keywordflow">return</span> joinPE;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; }</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;}</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a49d8956f5723957509cbc620c3e12d2e"> 578</a></span>&#160;<a class="code" href="classSVF_1_1GepPE.html">GepPE</a>* <a class="code" href="classSVF_1_1PAG.html#a49d8956f5723957509cbc620c3e12d2e">PAG::addGepPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls, <span class="keywordtype">bool</span> constGep)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;{</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(src);</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span> (!constGep || node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a6c54e1a54a1963ffa8c97d97ffd6f3bc">hasIncomingVariantGepEdge</a>())</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; {</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a9d575070ab5234078590f9e8bf80bbf4">addVariantGepPE</a>(src, dst);</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></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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a4606d6ff072f5ac5974719035676792e">addNormalGepPE</a>(src, dst, ls);</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; }</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;}</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div><div class="line"><a name="l00597"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a4606d6ff072f5ac5974719035676792e"> 597</a></span>&#160;<a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* <a class="code" href="classSVF_1_1PAG.html#a4606d6ff072f5ac5974719035676792e">PAG::addNormalGepPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;{</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; baseLS = <a class="code" href="classSVF_1_1PAG.html#a7cd89e53bb857f6b8ee09e291f5aad3f">getLocationSetFromBaseNode</a>(src);</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* baseNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<a class="code" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">getBaseValNode</a>(src));</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(baseNode, dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>))</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;NormalGepPE&gt;(edge);</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; <span class="keywordflow">else</span></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="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* gepPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>(baseNode, dstNode, ls+baseLS);</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(baseNode, dstNode, gepPE);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">return</span> gepPE;</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; }</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;}</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a9d575070ab5234078590f9e8bf80bbf4"> 616</a></span>&#160;<a class="code" href="classSVF_1_1VariantGepPE.html">VariantGepPE</a>* <a class="code" href="classSVF_1_1PAG.html#a9d575070ab5234078590f9e8bf80bbf4">PAG::addVariantGepPE</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst)</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;{</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* baseNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<a class="code" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">getBaseValNode</a>(src));</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dstNode = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(dst);</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">hasNonlabeledEdge</a>(baseNode, dstNode, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</a>))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordflow">return</span> SVFUtil::cast&lt;VariantGepPE&gt;(edge);</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; {</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <a class="code" href="classSVF_1_1VariantGepPE.html">VariantGepPE</a>* gepPE = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VariantGepPE.html">VariantGepPE</a>(baseNode, dstNode);</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">addEdge</a>(baseNode, dstNode, gepPE);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">return</span> gepPE;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; }</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="l00631"></a><span class="lineno"> 631</span>&#160;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;</div><div class="line"><a name="l00637"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a4f4cd384fe1b4bead9bfadb386e3f328"> 637</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#a4f4cd384fe1b4bead9bfadb386e3f328">PAG::addGepValNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* curInst,<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* gepVal, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *type, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> fieldidx)</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;{</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">getBaseValNode</a>(<a class="code" href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">getValueNode</a>(gepVal));</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0==<a class="code" href="classSVF_1_1PAG.html#afe6d92c90401918b58644a575928012c">GepValNodeMap</a>[curInst].count(std::make_pair(base, ls))</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <a class="code" href="classSVF_1_1PAG.html#afe6d92c90401918b58644a575928012c">GepValNodeMap</a>[curInst][std::make_pair(base, ls)] = i;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <a class="code" href="classSVF_1_1GepValPN.html">GepValPN</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepValPN.html">GepValPN</a>(gepVal, i, ls, type, fieldidx);</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a7a7929598197f300b97393ecdffd81f1">addValNode</a>(gepVal, node, i);</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;}</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;</div><div class="line"><a name="l00651"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ac1dd6570b74bec2a0f2ffd7d2ee064b6"> 651</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">PAG::getGepObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;{</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a>* gepNode = SVFUtil::dyn_cast&lt;GepObjPN&gt;(node))</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">getGepObjNode</a>(gepNode-&gt;getMemObj(), gepNode-&gt;getLocationSet() + ls);</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1FIObjPN.html">FIObjPN</a>* baseNode = SVFUtil::dyn_cast&lt;FIObjPN&gt;(node))</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">getGepObjNode</a>(baseNode-&gt;getMemObj(), ls);</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1DummyObjPN.html">DummyObjPN</a>* baseNode = SVFUtil::dyn_cast&lt;DummyObjPN&gt;(node))</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">getGepObjNode</a>(baseNode-&gt;getMemObj(), ls);</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;new gep obj node kind?&quot;</span>);</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <span class="keywordflow">return</span> id;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; }</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;}</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;</div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7"> 673</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#aad5fc74d2a9baf3630ba6546a74053e7">PAG::getGepObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;{</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#a9e35f1d6a30c6200fb3c0c43ba4f36cb">getObjectNode</a>(obj);</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;</div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160; <span class="keywordflow">if</span> (obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>())</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#afc69b91408401d2a92d68c3414f3402d">getFIObjNode</a>(obj);</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"> 681</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> newLS = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a480a7565dcb5d9a94f4b0ffb44b127ee">getModulusOffset</a>(obj,ls);</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160; <span class="comment">// Base and first field are the same memory location.</span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a8dc477d83a142a62b63207f6f240f224">Options::FirstFieldEqBase</a> &amp;&amp; newLS.<a class="code" href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">getOffset</a>() == 0) <span class="keywordflow">return</span> base;</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; NodeLocationSetMap::iterator iter = <a class="code" href="classSVF_1_1PAG.html#aac2a1bfebed4b363e9477a3745184a2a">GepObjNodeMap</a>.find(std::make_pair(base, newLS));</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160; <span class="keywordflow">if</span> (iter == <a class="code" href="classSVF_1_1PAG.html#aac2a1bfebed4b363e9477a3745184a2a">GepObjNodeMap</a>.end())</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a39028e2fb42dec9e0b25a48400948d48">addGepObjNode</a>(obj, newLS);</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keywordflow">return</span> iter-&gt;second;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;}</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;</div><div class="line"><a name="l00697"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a39028e2fb42dec9e0b25a48400948d48"> 697</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#a39028e2fb42dec9e0b25a48400948d48">PAG::addGepObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; ls)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;{</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#a9e35f1d6a30c6200fb3c0c43ba4f36cb">getObjectNode</a>(obj);</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(0==<a class="code" href="classSVF_1_1PAG.html#aac2a1bfebed4b363e9477a3745184a2a">GepObjNodeMap</a>.count(std::make_pair(base, ls))</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; &amp;&amp; <span class="stringliteral">&quot;this node should not be created before&quot;</span>);</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> gepId = <a class="code" href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">NodeIDAllocator::get</a>()-&gt;<a class="code" href="classSVF_1_1NodeIDAllocator.html#abaff066537f06c4891c199ebfc9624e3">allocateGepObjectId</a>(base, ls.<a class="code" href="classSVF_1_1LocationSet.html#ab85c3707152e03722bd631b2525f223e">getOffset</a>(), <a class="code" href="classSVF_1_1StInfo.html#ad6e599717952f8ccc2771cd72254b6b2">StInfo::getMaxFieldLimit</a>());</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <a class="code" href="classSVF_1_1PAG.html#aac2a1bfebed4b363e9477a3745184a2a">GepObjNodeMap</a>[std::make_pair(base, ls)] = gepId;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1GepObjPN.html">GepObjPN</a>(obj, gepId, ls);</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <a class="code" href="classSVF_1_1PAG.html#abe896f8fd3c8adc60bbb1a23862da8df">memToFieldsMap</a>[base].set(gepId);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#ab867cf7056089872daf2b27eb7ff1a8a">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae952c8b6b92c6cbef9494a83b411a60f">getRefVal</a>(), node, gepId);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;}</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div><div class="line"><a name="l00714"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ae3ae274db4f5a4f86a0579cb47530f8c"> 714</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#ae3ae274db4f5a4f86a0579cb47530f8c">PAG::addFIObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)</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="comment">//assert(findPAGNode(i) == false &amp;&amp; &quot;this node should not be created before&quot;);</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#a9e35f1d6a30c6200fb3c0c43ba4f36cb">getObjectNode</a>(obj);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; <a class="code" href="classSVF_1_1PAG.html#abe896f8fd3c8adc60bbb1a23862da8df">memToFieldsMap</a>[base].set(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">getSymId</a>());</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; <a class="code" href="classSVF_1_1FIObjPN.html">FIObjPN</a> *node = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FIObjPN.html">FIObjPN</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae952c8b6b92c6cbef9494a83b411a60f">getRefVal</a>(), obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">getSymId</a>(), obj);</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#ab867cf7056089872daf2b27eb7ff1a8a">addObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ae952c8b6b92c6cbef9494a83b411a60f">getRefVal</a>(), node, obj-&gt;<a class="code" href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">getSymId</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;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00727"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e"> 727</a></span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* <a class="code" href="classSVF_1_1PAG.html#a0c7cea14374ff762a9933b803853286e">PAG::hasNonlabeledEdge</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* src, <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dst, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6">PAGEdge::PEDGEK</a> kind)</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;{</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a> edge(src,dst,kind);</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160; PAGEdge::PAGEdgeSetTy::iterator it = <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[kind].find(&amp;edge);</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[kind].<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>())</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; {</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160; <span class="keywordflow">return</span> *it;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; }</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;}</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;</div><div class="line"><a name="l00741"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba"> 741</a></span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* <a class="code" href="classSVF_1_1PAG.html#ab2a0e681184accace607464278525cba">PAG::hasLabeledEdge</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* src, <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dst, <a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6">PAGEdge::PEDGEK</a> kind, <span class="keyword">const</span> <a class="code" href="classSVF_1_1ICFGNode.html">ICFGNode</a>* callInst)</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;{</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a> edge(src,dst,<a class="code" href="classSVF_1_1PAGEdge.html#af112ad6555179a592c97a13100f725e5">PAGEdge::makeEdgeFlagWithCallInst</a>(kind,callInst));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160; PAGEdge::PAGEdgeSetTy::iterator it = <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[kind].find(&amp;edge);</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; <span class="keywordflow">if</span> (it != <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[kind].<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>())</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; {</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; <span class="keywordflow">return</span> *it;</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">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;}</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;</div><div class="line"><a name="l00756"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27"> 756</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAG.html#a277706ab8f62e6f95c660be9cb825a27">PAG::addEdge</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* src, <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* dst, <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge)</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;{</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a>,</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;add edge from &quot;</span> &lt;&lt; src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot; kind :&quot;</span></div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; &lt;&lt; src-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() &lt;&lt; <span class="stringliteral">&quot; to &quot;</span> &lt;&lt; dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; &lt;&lt; <span class="stringliteral">&quot; kind :&quot;</span> &lt;&lt; dst-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">getNodeKind</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; src-&gt;<a class="code" href="classSVF_1_1PAGNode.html#aed41d396a1313757176f296e7d72f731">addOutEdge</a>(edge);</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; dst-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a55bca5a9f3efe73feb45920f042e5965">addInEdge</a>(edge);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordtype">bool</span> added = <a class="code" href="classSVF_1_1PAG.html#a32c107e02c73642ff4afd08b6cf22232">PAGEdgeKindToSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge).second;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(added &amp;&amp; <span class="stringliteral">&quot;duplicated edge, not added!!!&quot;</span>);</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">if</span> (edge-&gt;<a class="code" href="classSVF_1_1PAGEdge.html#a3d5a75d4f3792f90bf6ee58776512154">isPTAEdge</a>())</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; {</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <a class="code" href="classSVF_1_1PAG.html#a7bd46d36d58cc8ec70d8a42e5eb93683">totalPTAPAGEdge</a>++;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; <a class="code" href="classSVF_1_1PAG.html#ae297792b6cf9e7782ef4268f48c01748">PTAPAGEdgeKindToSetMap</a>[edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#abe8525c542def8162b094c169a01993b">getEdgeKind</a>()].insert(edge);</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; }</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;}</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46"> 778</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">PAG::getAllFieldsObjNode</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* obj)</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;{</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> base = <a class="code" href="classSVF_1_1PAG.html#a9e35f1d6a30c6200fb3c0c43ba4f36cb">getObjectNode</a>(obj);</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#abe896f8fd3c8adc60bbb1a23862da8df">memToFieldsMap</a>[base];</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;}</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;</div><div class="line"><a name="l00787"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a1eb0e444364673333ff6b97f14e70a17"> 787</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; <a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">PAG::getAllFieldsObjNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</span>)</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;{</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjPN&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1ObjPN.html">ObjPN</a>* obj = SVFUtil::cast&lt;ObjPN&gt;(node);</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">getAllFieldsObjNode</a>(obj-&gt;<a class="code" href="classSVF_1_1ObjPN.html#a63ee5624271a63c2dc4f7f3ed2dcefdf">getMemObj</a>());</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;}</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a19c4e63ab6129d4e7aeae8b280bb057b"> 800</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1PAG.html#a19c4e63ab6129d4e7aeae8b280bb057b">PAG::getFieldsAfterCollapse</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <span class="keywordtype">id</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; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(<span class="keywordtype">id</span>);</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;ObjPN&gt;(node) &amp;&amp; <span class="stringliteral">&quot;need an object node&quot;</span>);</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1MemObj.html">MemObj</a>* mem = SVFUtil::cast&lt;ObjPN&gt;(node)-&gt;getMemObj();</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">if</span>(mem-&gt;<a class="code" href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">isFieldInsensitive</a>())</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; {</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> bs;</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; bs.set(<a class="code" href="classSVF_1_1PAG.html#afc69b91408401d2a92d68c3414f3402d">getFIObjNode</a>(mem));</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="keywordflow">return</span> bs;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; }</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAG.html#a049069cb76eada008e65b71e08ccdf46">getAllFieldsObjNode</a>(mem);</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;</div><div class="line"><a name="l00820"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11"> 820</a></span>&#160;<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">PAG::getBaseValNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160;{</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(nodeId);</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a9e6775e06806c54ee016e28c1324604a">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>) || node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a9e6775e06806c54ee016e28c1324604a">hasIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</a>))</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; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; ngeps = node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a5a5712e845d05c2eaef385113c5bce58">getIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>);</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; vgeps = node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a5a5712e845d05c2eaef385113c5bce58">getIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</a>);</div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160;</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(((ngeps.size()+vgeps.size())==1) &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">PAGNode::iterator</a> it;</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="keywordflow">if</span>(!ngeps.empty())</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; it = ngeps.begin();</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; it = vgeps.begin();</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;GepPE&gt;(*it) &amp;&amp; <span class="stringliteral">&quot;not a gep edge??&quot;</span>);</div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="keywordflow">return</span> (*it)-&gt;getSrcID();</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">else</span></div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">return</span> nodeId;</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;</div><div class="line"><a name="l00849"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a7cd89e53bb857f6b8ee09e291f5aad3f"> 849</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1PAG.html#a7cd89e53bb857f6b8ee09e291f5aad3f">PAG::getLocationSetFromBaseNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160;{</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(nodeId);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; geps = node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a5a5712e845d05c2eaef385113c5bce58">getIncomingEdges</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>);</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="keywordflow">if</span>(geps.empty())</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>(0);</div><div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160;</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(geps.size()==1 &amp;&amp; <span class="stringliteral">&quot;one node can only be connected by at most one gep edge!&quot;</span>);</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">PAGNode::iterator</a> it = geps.begin();</div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = *it;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;NormalGepPE&gt;(edge) &amp;&amp; <span class="stringliteral">&quot;not a get edge??&quot;</span>);</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* gepEdge = SVFUtil::cast&lt;NormalGepPE&gt;(edge);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">return</span> gepEdge-&gt;<a class="code" href="classSVF_1_1NormalGepPE.html#ac086d39e0f554705b627c2fc07a33875">getLocationSet</a>();</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160;}</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a5a6278a7244c926022288243007da790"> 868</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#a5a6278a7244c926022288243007da790">PAG::destroy</a>()</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <a class="code" href="classSVF_1_1SymbolTableInfo.html#a9f8d99c761f3c7108d797b3702fcbfec">SymbolTableInfo::releaseSymbolInfo</a>();</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <a class="code" href="classSVF_1_1PAG.html#acebd1174f9bbeeb35ccfdf87a8f0998a">symInfo</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160;</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keyword">delete</span> <a class="code" href="classSVF_1_1PAG.html#aa26d3c84f970deaa76ae404597abf960">icfg</a>;</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <a class="code" href="classSVF_1_1PAG.html#aa26d3c84f970deaa76ae404597abf960">icfg</a> = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;}</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160;</div><div class="line"><a name="l00880"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#aa432bbc7c4e83abecdc8706972a9635b"> 880</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#aa432bbc7c4e83abecdc8706972a9635b">PAG::print</a>()</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;{</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160;</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;-------------------PAG------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; addrs = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ac29bb583428e3c20d758bb9cf2d2d626">PAGEdge::Addr</a>);</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = addrs.begin(), eiter =</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; addrs.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; {</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">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="l00889"></a><span class="lineno"> 889</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; }</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160;</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; copys = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4">PAGEdge::Copy</a>);</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = copys.begin(), eiter =</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; copys.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; {</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Copy --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160;</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; calls = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a5f4c2c1ec167425622d40133ec15448d">PAGEdge::Call</a>);</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = calls.begin(), eiter =</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; calls.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; {</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Call --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; }</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; rets = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a99fe431c7a635d39b5558d1048a94c05">PAGEdge::Ret</a>);</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = rets.begin(), eiter =</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; rets.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; {</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- Ret --&gt; &quot;</span> &lt;&lt; (*iter)-&gt;getDstID()</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; }</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160;</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; tdfks = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a1070b34fd19259725d752aa3b5adc73b">PAGEdge::ThreadFork</a>);</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = tdfks.begin(), eiter =</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; tdfks.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; {</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadFork --&gt; &quot;</span></div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; }</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; tdjns = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8ec550e2cbb5ba5847a0eb0760be165b">PAGEdge::ThreadJoin</a>);</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = tdjns.begin(), eiter =</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; tdjns.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; {</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- ThreadJoin --&gt; &quot;</span></div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; }</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; ngeps = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">PAGEdge::NormalGep</a>);</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = ngeps.begin(), eiter =</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; ngeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; {</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <a class="code" href="classSVF_1_1NormalGepPE.html">NormalGepPE</a>* gep = SVFUtil::cast&lt;NormalGepPE&gt;(*iter);</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ae6792506a0150a9400d635eceab7f9e7">getSrcID</a>() &lt;&lt; <span class="stringliteral">&quot; -- NormalGep (&quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1NormalGepPE.html#a38ac1dd06ada0a04e13a038f8b69e3e5">getOffset</a>()</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; &lt;&lt; <span class="stringliteral">&quot;) --&gt; &quot;</span> &lt;&lt; gep-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ad9edb45e74ae675d9da82f5acf02d56e">getDstID</a>() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; }</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160;</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; vgeps = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">PAGEdge::VariantGep</a>);</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = vgeps.begin(), eiter =</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; vgeps.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; {</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; (*iter)-&gt;getSrcID() &lt;&lt; <span class="stringliteral">&quot; -- VariantGep --&gt; &quot;</span></div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; &lt;&lt; (*iter)-&gt;getDstID() &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; }</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160;</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; loads = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8fcebc849a231c3c87dddbf0ab5a2167">PAGEdge::Load</a>);</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = loads.begin(), eiter =</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; loads.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; {</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">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="l00954"></a><span class="lineno"> 954</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; }</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">PAGEdge::PAGEdgeSetTy</a>&amp; stores = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a4b89e254837eca47e09e41cf67dba722">getEdgeSet</a>(<a class="code" href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">PAGEdge::Store</a>);</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; <span class="keywordflow">for</span> (PAGEdge::PAGEdgeSetTy::iterator iter = stores.begin(), eiter =</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; stores.end(); iter != eiter; ++iter)</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; {</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">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="l00962"></a><span class="lineno"> 962</span>&#160; &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; }</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>() &lt;&lt; <span class="stringliteral">&quot;----------------------------------------------------------\n&quot;</span>;</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160;}</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160;</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160;<span class="comment"> * If this is a dummy node or node does not have incoming edges we assume it is not a pointer here</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00971"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a17fab82554f5a81c22c037b5813999e3"> 971</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAG.html#a17fab82554f5a81c22c037b5813999e3">PAG::isValidPointer</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId)<span class="keyword"> const</span></div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node = <a class="code" href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">pag</a>-&gt;<a class="code" href="classSVF_1_1PAG.html#a3aa1c92eb8a6fab72996964de80f19ac">getPAGNode</a>(nodeId);</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; <span class="keywordflow">if</span> ((node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().empty() &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().empty()))</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#afa5f1f6b3b7ffff2c417d58db7ef6bc2">isPointer</a>();</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160;}</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160;</div><div class="line"><a name="l00979"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67"> 979</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">PAG::isValidTopLevelPtr</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* node)</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160;{</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a983d2d9a8ea6fd5be14af55cf22c65ce">isTopLevelPtr</a>())</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; {</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PAG.html#a17fab82554f5a81c22c037b5813999e3">isValidPointer</a>(node-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>()) &amp;&amp; node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a071f592f2b811c136db5e05a6169aa99">hasValue</a>())</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; {</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#afd690c09e01989e57899875ca97f0166">SVFUtil::ArgInNoCallerFunction</a>(node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">getValue</a>()))</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; }</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; }</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160;}</div><div class="line"><a name="l00995"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGEdge.html#ab686138c420a0b03cf8f1c1dff044318"> 995</a></span>&#160;<a class="code" href="classSVF_1_1PAGEdge.html#ab686138c420a0b03cf8f1c1dff044318">PAGEdge::PAGEdge</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* s, <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>* d, <a class="code" href="classSVF_1_1GenericEdge.html#aab8892b73370c32b48621cd1d0cce614">GEdgeFlag</a> k) :</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <a class="code" href="classSVF_1_1GenericEdge.html">GenericPAGEdgeTy</a>(s,d,k),value(nullptr),basicBlock(nullptr),icfgNode(nullptr)</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160;{</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <a class="code" href="classSVF_1_1PAGEdge.html#ad38d3486f99325bd0438e4b4bacbda8a">edgeId</a> = <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a29cab1426b0000bd87c026ab8c9979c0">getTotalEdgeNum</a>();</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <a class="code" href="classSVF_1_1PAG.html#ac8910c7330638bdf31c23d4cc03ba9c5">PAG::getPAG</a>()-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a2f2bca8219c7d769f6d2937e5cd40d14">incEdgeNum</a>();</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;}</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160;</div><div class="line"><a name="l01005"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGEdge.html#a3d5a75d4f3792f90bf6ee58776512154"> 1005</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAGEdge.html#a3d5a75d4f3792f90bf6ee58776512154">PAGEdge::isPTAEdge</a>()<span class="keyword"> const</span></div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;isPointer() &amp;&amp; <a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;isPointer();</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160;}</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div><div class="line"><a name="l01013"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGNode.html#a37d3c3aef0c5bd7a5d0d516438673800"> 1013</a></span>&#160;<a class="code" href="classSVF_1_1PAGNode.html#a37d3c3aef0c5bd7a5d0d516438673800">PAGNode::PAGNode</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> i, <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfd">PNODEK</a> k) :</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; <a class="code" href="classSVF_1_1GenericNode.html">GenericPAGNodeTy</a>(i,k), <a class="code" href="classSVF_1_1PAGEdge.html#a8b10bded7a25c801dc48926319da0525">value</a>(val)</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;{</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>( <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda3ec7c7a77326c63c845463e36d278698">ValNode</a> &lt;= k &amp;&amp; k &lt;= <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda2b633e41b4f1515ba25862f0bae0165c">CloneDummyObjNode</a> &amp;&amp; <span class="stringliteral">&quot;new PAG node kind?&quot;</span>);</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; <span class="keywordflow">switch</span> (k)</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; {</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda3ec7c7a77326c63c845463e36d278698">ValNode</a>:</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdab1e9c79d90d28d638f13717e71786bfa">GepValNode</a>:</div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>&#160; {</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(val != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;value is nullptr for ValPN or GepValNode&quot;</span>);</div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#ae0e9f3bb2dccd6fe6be5e1f5fbb29066">isTLPointer</a> = val-&gt;getType()-&gt;isPointerTy();</div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">isATPointer</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>&#160; }</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda02baa6f73696007a1ed47262491bd26b">RetNode</a>:</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; {</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(val != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;value is nullptr for RetNode&quot;</span>);</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#ae0e9f3bb2dccd6fe6be5e1f5fbb29066">isTLPointer</a> = SVFUtil::cast&lt;Function&gt;(val)-&gt;getReturnType()-&gt;isPointerTy();</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">isATPointer</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; }</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160;</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda8712271278d9fa8a8445f785e6816e8c">VarargNode</a>:</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdaa82b7fff975b0513e429eaeb18866e6e">DummyValNode</a>:</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; {</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#ae0e9f3bb2dccd6fe6be5e1f5fbb29066">isTLPointer</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">isATPointer</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; }</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda3de3216997f81d0d1e8c91a844e33137">ObjNode</a>:</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda568cd7813242fb6b6fc7a5bf24e99925">GepObjNode</a>:</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda727e569faa3b18cd01afe78b81f86d22">FIObjNode</a>:</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdad90c3ebe36773e94bcc116ab221a134b">DummyObjNode</a>:</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda4b4c88fe6b73ec2f09441e7abd4766c6">CloneGepObjNode</a>:</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda988291beb55638d5558be338c3771c31">CloneFIObjNode</a>:</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda2b633e41b4f1515ba25862f0bae0165c">CloneDummyObjNode</a>:</div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; {</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#ae0e9f3bb2dccd6fe6be5e1f5fbb29066">isTLPointer</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; <a class="code" href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">isATPointer</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; }</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; }</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;}</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160;</div><div class="line"><a name="l01061"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGNode.html#a36a52b3618e8c1366402ec67507d6979"> 1061</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PAGNode.html#a36a52b3618e8c1366402ec67507d6979">PAGNode::isIsolatedNode</a>()<span class="keyword"> const</span>{</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1GenericNode.html#afc8b5f86d7795b6a0dfc0687d942d79b">getInEdges</a>().<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>() &amp;&amp; <a class="code" href="classSVF_1_1GenericNode.html#a2d9cd758d6f8c5189d9b90b74f43e009">getOutEdges</a>().<a class="code" href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a>())</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PAGNode.html#ac50befb2bed2a5298248bec277632b2e">isConstantData</a>())</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1PAGNode.html#a8662a272081441af5440af58c975b85e">value</a> &amp;&amp; SVFUtil::isa&lt;Function&gt;(<a class="code" href="classSVF_1_1PAGNode.html#a8662a272081441af5440af58c975b85e">value</a>))</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad2c53be5490882768d51aa894b37cbf1">SVFUtil::isIntrinsicFun</a>(SVFUtil::cast&lt;Function&gt;(<a class="code" href="classSVF_1_1PAGNode.html#a8662a272081441af5440af58c975b85e">value</a>));</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160;}</div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160;</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01076"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ab4326448a536de1c8c1513fcf6d45aa2"> 1076</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#ab4326448a536de1c8c1513fcf6d45aa2">PAG::dump</a>(std::string name)</div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;{</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <a class="code" href="classllvm_1_1GraphPrinter.html#a53b3809728c30389a594076097884b82">GraphPrinter::WriteGraphToFile</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a85ab6b592fefc45a0674d3295e01638f">outs</a>(), name, <span class="keyword">this</span>);</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160;}</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160;</div><div class="line"><a name="l01084"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#a287461961353d4c8b5b3947fe62ad388"> 1084</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#a287461961353d4c8b5b3947fe62ad388">PAG::view</a>()</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160;{</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; llvm::ViewGraph(<span class="keyword">this</span>, <span class="stringliteral">&quot;ProgramAssignmentGraph&quot;</span>);</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160;}</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160;</div><div class="line"><a name="l01092"></a><span class="lineno"><a class="line" href="classSVF_1_1PAG.html#ab6f0bc584f351839c9dba440e8d382a0"> 1092</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAG.html#ab6f0bc584f351839c9dba440e8d382a0">PAG::handleBlackHole</a>(<span class="keywordtype">bool</span> b)</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160;{</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <a class="code" href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">Options::HandBlackHole</a> = b;</div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160;}</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160;</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160;{</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160;<span class="keyword">template</span>&lt;&gt;</div><div class="line"><a name="l01103"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html"> 1103</a></span>&#160;<span class="keyword">struct </span>DOTGraphTraits&lt;<a class="code" href="classSVF_1_1PAG.html">PAG</a>*&gt; : <span class="keyword">public</span> DefaultDOTGraphTraits</div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160;{</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160;</div><div class="line"><a name="l01106"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a79ab044136b3eb04258c92dc41c62140"> 1106</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a79ab044136b3eb04258c92dc41c62140">NodeType</a>;</div><div class="line"><a name="l01107"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3101c843232b1f228a9af0e464c2049b"> 1107</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">NodeType::iterator</a> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3101c843232b1f228a9af0e464c2049b">ChildIteratorType</a>;</div><div class="line"><a name="l01108"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1d81546fa4fbc35deedad6bfb01a006"> 1108</a></span>&#160; <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1d81546fa4fbc35deedad6bfb01a006">DOTGraphTraits</a>(<span class="keywordtype">bool</span> isSimple = <span class="keyword">false</span>) :</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; DefaultDOTGraphTraits(isSimple)</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; {</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; }</div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160;</div><div class="line"><a name="l01114"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a13511a8b9de98389694c33e5895588a7"> 1114</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a13511a8b9de98389694c33e5895588a7">getGraphName</a>(<a class="code" href="classSVF_1_1PAG.html">PAG</a> *graph)</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; {</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; <span class="keywordflow">return</span> graph-&gt;<a class="code" href="classSVF_1_1PAG.html#aa18a51570a397eabffdd613fdb15b4ac">getGraphName</a>();</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160;<span class="preprocessor">#if LLVM_VERSION_MAJOR &gt;= 12</span></div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> isNodeHidden(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *node, <a class="code" href="classSVF_1_1PAG.html">PAG</a>*) {</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l01124"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a7391e83f5da401ab77cd6a4c36ccb337"> 1124</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a7391e83f5da401ab77cd6a4c36ccb337">isNodeHidden</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *node) {</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a36a52b3618e8c1366402ec67507d6979">isIsolatedNode</a>();</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; }</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;</div><div class="line"><a name="l01131"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a0a1838869e7fa447739a594e549c983f"> 1131</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a0a1838869e7fa447739a594e549c983f">getNodeLabel</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *node, <a class="code" href="classSVF_1_1PAG.html">PAG</a>*)</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; {</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; std::string str;</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; <span class="comment">// print function info</span></div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="keywordflow">if</span> (node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a1697d70ee484569bbd7557cf99b223dc">getFunction</a>())</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a1697d70ee484569bbd7557cf99b223dc">getFunction</a>()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot;] &quot;</span>;</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160;</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; rawstr &lt;&lt; node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#a2a9a5feb62138307b0b6f901cb5e0e0f">toString</a>();</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160;</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160;</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; }</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;</div><div class="line"><a name="l01145"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#aa5c1ce2e1eabe212edc58b9362fd1067"> 1145</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#aa5c1ce2e1eabe212edc58b9362fd1067">getNodeAttributes</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a> *node, <a class="code" href="classSVF_1_1PAG.html">PAG</a>*)</div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; {</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">return</span> node-&gt;<a class="code" href="classSVF_1_1PAGNode.html#ace4c68d1187a70f69a9669f0e4e56ea2">getNodeAttrForDotDisplay</a>();</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; }</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l01151"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1457fbb243e106e3940dcb7f5f8f274"> 1151</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1457fbb243e106e3940dcb7f5f8f274">getEdgeAttributes</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>*, EdgeIter EI, <a class="code" href="classSVF_1_1PAG.html">PAG</a>*)</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; {</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AddrPE&gt;(edge))</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; {</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=green&quot;</span>;</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; }</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CopyPE&gt;(edge))</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black&quot;</span>;</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; }</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;GepPE&gt;(edge))</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; {</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=purple&quot;</span>;</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; }</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;StorePE&gt;(edge))</div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; {</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=blue&quot;</span>;</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; }</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;LoadPE&gt;(edge))</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; {</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=red&quot;</span>;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; }</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CmpPE&gt;(edge))</div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; {</div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; }</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;BinaryOPPE&gt;(edge))</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; {</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;UnaryOPPE&gt;(edge))</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; {</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=grey&quot;</span>;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; }</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;TDForkPE&gt;(edge))</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; {</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=Turquoise&quot;</span>;</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; }</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;TDJoinPE&gt;(edge))</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; {</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=Turquoise&quot;</span>;</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; }</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;CallPE&gt;(edge))</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; {</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black,style=dashed&quot;</span>;</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; }</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SVFUtil::isa&lt;RetPE&gt;(edge))</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; {</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;color=black,style=dotted&quot;</span>;</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; }</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160;</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;No such kind edge!!&quot;</span>);</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>(1);</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; }</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">class</span> EdgeIter&gt;</div><div class="line"><a name="l01209"></a><span class="lineno"><a class="line" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3bf6fe67ecbf1dd82879ff15bfd87140"> 1209</a></span>&#160; <span class="keyword">static</span> std::string <a class="code" href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3bf6fe67ecbf1dd82879ff15bfd87140">getEdgeSourceLabel</a>(<a class="code" href="classSVF_1_1PAGNode.html">PAGNode</a>*, EdgeIter EI)</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; {</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PAGEdge.html">PAGEdge</a>* edge = *(EI.getCurrent());</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(edge &amp;&amp; <span class="stringliteral">&quot;No edge found!!&quot;</span>);</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallPE.html">CallPE</a>* calledge = SVFUtil::dyn_cast&lt;CallPE&gt;(edge))</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; {</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst= calledge-&gt;getCallSite()-&gt;getCallSite();</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(callInst);</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; }</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1RetPE.html">RetPE</a>* retedge = SVFUtil::dyn_cast&lt;RetPE&gt;(edge))</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; {</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* callInst= retedge-&gt;getCallSite()-&gt;getCallSite();</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(callInst);</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; }</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; }</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;};</div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="ttc" id="classSVF_1_1CloneDummyObjPN_html_a30dc38493f8d078b58e684f62a1834e7"><div class="ttname"><a href="classSVF_1_1CloneDummyObjPN.html#a30dc38493f8d078b58e684f62a1834e7">SVF::CloneDummyObjPN::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00179">PAG.cpp:179</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1NormalGepPE_html_ac086d39e0f554705b627c2fc07a33875"><div class="ttname"><a href="classSVF_1_1NormalGepPE.html#ac086d39e0f554705b627c2fc07a33875">SVF::NormalGepPE::getLocationSet</a></div><div class="ttdeci">const LocationSet &amp; getLocationSet() const</div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00511">PAGEdge.h:511</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1PAG_html_a7a7929598197f300b97393ecdffd81f1"><div class="ttname"><a href="classSVF_1_1PAG.html#a7a7929598197f300b97393ecdffd81f1">SVF::PAG::addValNode</a></div><div class="ttdeci">NodeID addValNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a value (pointer) node. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00746">PAG.h:746</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1PAG_html_a50d0968c6a467ab224ebc73d8beff852"><div class="ttname"><a href="classSVF_1_1PAG.html#a50d0968c6a467ab224ebc73d8beff852">SVF::PAG::pag</a></div><div class="ttdeci">static PAG * pag</div><div class="ttdoc">Singleton pattern here to enable instance of PAG can only be created once. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00102">PAG.h:102</a></div></div>
73
73
  <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#l00081">GenericGraph.h:81</a></div></div>
74
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a29cab1426b0000bd87c026ab8c9979c0"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a29cab1426b0000bd87c026ab8c9979c0">SVF::GenericGraph::getTotalEdgeNum</a></div><div class="ttdeci">u32_t getTotalEdgeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00421">GenericGraph.h:421</a></div></div>
74
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a29cab1426b0000bd87c026ab8c9979c0"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a29cab1426b0000bd87c026ab8c9979c0">SVF::GenericGraph::getTotalEdgeNum</a></div><div class="ttdeci">u32_t getTotalEdgeNum() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00418">GenericGraph.h:418</a></div></div>
75
75
  <div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
76
76
  <div class="ttc" id="classSVF_1_1MemObj_html"><div class="ttname"><a href="classSVF_1_1MemObj.html">SVF::MemObj</a></div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00284">MemModel.h:284</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6ad1f40a044008babd44bff30af846550c">SVF::PAGEdge::VariantGep</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1PAG_html_a5f49b7da110a626ed6605d1f108dfa25"><div class="ttname"><a href="classSVF_1_1PAG.html#a5f49b7da110a626ed6605d1f108dfa25">SVF::PAG::getValueNode</a></div><div class="ttdeci">NodeID getValueNode(const Value *V)</div><div class="ttdoc">Get PAG Node according to LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00547">PAG.h:547</a></div></div>
79
79
  <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="PAGEdge_8h_source.html#l00613">PAGEdge.h:613</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1PAGNode_html_a2a9a5feb62138307b0b6f901cb5e0e0f"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a2a9a5feb62138307b0b6f901cb5e0e0f">SVF::PAGNode::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00046">PAG.cpp:46</a></div></div>
81
- <div class="ttc" id="classSVF_1_1PAGNode_html_a36a52b3618e8c1366402ec67507d6979"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a36a52b3618e8c1366402ec67507d6979">SVF::PAGNode::isIsolatedNode</a></div><div class="ttdeci">bool isIsolatedNode() const</div><div class="ttdoc">Whether this is an isoloated node on the PAG graph. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01068">PAG.cpp:1068</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1PAGNode_html_a36a52b3618e8c1366402ec67507d6979"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a36a52b3618e8c1366402ec67507d6979">SVF::PAGNode::isIsolatedNode</a></div><div class="ttdeci">bool isIsolatedNode() const</div><div class="ttdoc">Whether this is an isoloated node on the PAG graph. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01061">PAG.cpp:1061</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1PAGEdge_html"><div class="ttname"><a href="classSVF_1_1PAGEdge.html">SVF::PAGEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00047">PAGEdge.h:47</a></div></div>
83
83
  <div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="ConsG_8h_source.html#l00385">ConsG.h:385</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1PAG_html_afc1e86e9690bb30138c9927368069f11"><div class="ttname"><a href="classSVF_1_1PAG.html#afc1e86e9690bb30138c9927368069f11">SVF::PAG::getBaseValNode</a></div><div class="ttdeci">NodeID getBaseValNode(NodeID nodeId)</div><div class="ttdoc">Base and Offset methods for Value and Object node. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00820">PAG.cpp:820</a></div></div>
85
- <div class="ttc" id="classSVF_1_1PAG_html_ab6f0bc584f351839c9dba440e8d382a0"><div class="ttname"><a href="classSVF_1_1PAG.html#ab6f0bc584f351839c9dba440e8d382a0">SVF::PAG::handleBlackHole</a></div><div class="ttdeci">static void handleBlackHole(bool b)</div><div class="ttdoc">PAG build configurations. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01099">PAG.cpp:1099</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1PAG_html_ab6f0bc584f351839c9dba440e8d382a0"><div class="ttname"><a href="classSVF_1_1PAG.html#ab6f0bc584f351839c9dba440e8d382a0">SVF::PAG::handleBlackHole</a></div><div class="ttdeci">static void handleBlackHole(bool b)</div><div class="ttdoc">PAG build configurations. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01092">PAG.cpp:1092</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1PAGNode_html_a5cc5327ba68c3f11ed4bef47d89c3dfda3ec7c7a77326c63c845463e36d278698"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda3ec7c7a77326c63c845463e36d278698">SVF::PAGNode::ValNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00062">PAGNode.h:62</a></div></div>
87
87
  <div class="ttc" id="classSVF_1_1PAG_html_a7bd46d36d58cc8ec70d8a42e5eb93683"><div class="ttname"><a href="classSVF_1_1PAG.html#a7bd46d36d58cc8ec70d8a42e5eb93683">SVF::PAG::totalPTAPAGEdge</a></div><div class="ttdeci">u32_t totalPTAPAGEdge</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00120">PAG.h:120</a></div></div>
88
88
  <div class="ttc" id="classSVF_1_1VarArgPN_html_a617077176f0ea586a0cf9a4a1034e99d"><div class="ttname"><a href="classSVF_1_1VarArgPN.html#a617077176f0ea586a0cf9a4a1034e99d">SVF::VarArgPN::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00158">PAG.cpp:158</a></div></div>
@@ -91,7 +91,7 @@ $(function() {
91
91
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a480a7565dcb5d9a94f4b0ffb44b127ee"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a480a7565dcb5d9a94f4b0ffb44b127ee">SVF::SymbolTableInfo::getModulusOffset</a></div><div class="ttdeci">virtual LocationSet getModulusOffset(const MemObj *obj, const LocationSet &amp;ls)</div><div class="ttdoc">Given an offset from a Gep Instruction, return it modulus offset by considering memory layout...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00385">SymbolTableInfo.cpp:385</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1CopyPE_html_ac1232ca5d43be2c7f68ed86d9e158c72"><div class="ttname"><a href="classSVF_1_1CopyPE.html#ac1232ca5d43be2c7f68ed86d9e158c72">SVF::CopyPE::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00218">PAG.cpp:218</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1PAGNode_html_a5cc5327ba68c3f11ed4bef47d89c3dfdad90c3ebe36773e94bcc116ab221a134b"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdad90c3ebe36773e94bcc116ab221a134b">SVF::PAGNode::DummyObjNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00070">PAGNode.h:70</a></div></div>
94
- <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#l00181">GenericGraph.h:181</a></div></div>
94
+ <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#l00182">GenericGraph.h:182</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1ObjPN_html_a63ee5624271a63c2dc4f7f3ed2dcefdf"><div class="ttname"><a href="classSVF_1_1ObjPN.html#a63ee5624271a63c2dc4f7f3ed2dcefdf">SVF::ObjPN::getMemObj</a></div><div class="ttdeci">const MemObj * getMemObj() const</div><div class="ttdoc">Return memory object. </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00360">PAGNode.h:360</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1PAG_html_aa8bb3b659b70041e82aee15e8a595afb"><div class="ttname"><a href="classSVF_1_1PAG.html#aa8bb3b659b70041e82aee15e8a595afb">SVF::PAG::addCallPE</a></div><div class="ttdeci">CallPE * addCallPE(NodeID src, NodeID dst, const CallBlockNode *cs)</div><div class="ttdoc">Add Call edge. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00496">PAG.cpp:496</a></div></div>
97
97
  <div class="ttc" id="classSVF_1_1PAG_html_acf01961e2d9f3eba91c6e44c1f0137af"><div class="ttname"><a href="classSVF_1_1PAG.html#acf01961e2d9f3eba91c6e44c1f0137af">SVF::PAG::addBinaryOPPE</a></div><div class="ttdeci">BinaryOPPE * addBinaryOPPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00427">PAG.cpp:427</a></div></div>
@@ -99,7 +99,7 @@ $(function() {
99
99
  <div class="ttc" id="classSVF_1_1CloneGepObjPN_html_a77863cea018e2489e7cb05cb38cae654"><div class="ttname"><a href="classSVF_1_1CloneGepObjPN.html#a77863cea018e2489e7cb05cb38cae654">SVF::CloneGepObjPN::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00186">PAG.cpp:186</a></div></div>
100
100
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00018">MTAResultValidator.h:18</a></div></div>
101
101
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6a1070b34fd19259725d752aa3b5adc73b"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a1070b34fd19259725d752aa3b5adc73b">SVF::PAGEdge::ThreadFork</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
102
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_af1d81546fa4fbc35deedad6bfb01a006"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1d81546fa4fbc35deedad6bfb01a006">llvm::DOTGraphTraits&lt; PAG * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01115">PAG.cpp:1115</a></div></div>
102
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_af1d81546fa4fbc35deedad6bfb01a006"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1d81546fa4fbc35deedad6bfb01a006">llvm::DOTGraphTraits&lt; PAG * &gt;::DOTGraphTraits</a></div><div class="ttdeci">DOTGraphTraits(bool isSimple=false)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01108">PAG.cpp:1108</a></div></div>
103
103
  <div class="ttc" id="classSVF_1_1ValPN_html_a417f15b3dba7f5e36fb5c8ed46dccd8e"><div class="ttname"><a href="classSVF_1_1ValPN.html#a417f15b3dba7f5e36fb5c8ed46dccd8e">SVF::ValPN::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00096">PAG.cpp:96</a></div></div>
104
104
  <div class="ttc" id="classSVF_1_1PAGNode_html_a9e6775e06806c54ee016e28c1324604a"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a9e6775e06806c54ee016e28c1324604a">SVF::PAGNode::hasIncomingEdges</a></div><div class="ttdeci">bool hasIncomingEdges(PAGEdge::PEDGEK kind) const</div><div class="ttdoc">Has incoming PAG edges. </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00173">PAGNode.h:173</a></div></div>
105
105
  <div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00075">BasicTypes.h:75</a></div></div>
@@ -109,7 +109,7 @@ $(function() {
109
109
  <div class="ttc" id="classSVF_1_1UnaryOPPE_html"><div class="ttname"><a href="classSVF_1_1UnaryOPPE.html">SVF::UnaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00324">PAGEdge.h:324</a></div></div>
110
110
  <div class="ttc" id="classSVF_1_1PAGNode_html_a5cc5327ba68c3f11ed4bef47d89c3dfdaa82b7fff975b0513e429eaeb18866e6e"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdaa82b7fff975b0513e429eaeb18866e6e">SVF::PAGNode::DummyValNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00069">PAGNode.h:69</a></div></div>
111
111
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a59eb693c90848382efa1cccb56fe82d3"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a59eb693c90848382efa1cccb56fe82d3">SVF::PAGEdge::PAGEdgeSetTy</a></div><div class="ttdeci">GenericNode&lt; PAGNode, PAGEdge &gt;::GEdgeSetTy PAGEdgeSetTy</div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00169">PAGEdge.h:169</a></div></div>
112
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a79ab044136b3eb04258c92dc41c62140"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a79ab044136b3eb04258c92dc41c62140">llvm::DOTGraphTraits&lt; PAG * &gt;::NodeType</a></div><div class="ttdeci">PAGNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01113">PAG.cpp:1113</a></div></div>
112
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a79ab044136b3eb04258c92dc41c62140"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a79ab044136b3eb04258c92dc41c62140">llvm::DOTGraphTraits&lt; PAG * &gt;::NodeType</a></div><div class="ttdeci">PAGNode NodeType</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01106">PAG.cpp:1106</a></div></div>
113
113
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6aca20a2c4d9809736d43b18f3cb53e8cf">SVF::PAGEdge::Store</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
114
114
  <div class="ttc" id="classSVF_1_1PAG_html_a5a6278a7244c926022288243007da790"><div class="ttname"><a href="classSVF_1_1PAG.html#a5a6278a7244c926022288243007da790">SVF::PAG::destroy</a></div><div class="ttdeci">void destroy()</div><div class="ttdoc">Clean up memory. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00868">PAG.cpp:868</a></div></div>
115
115
  <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#l00073">GenericGraph.h:73</a></div></div>
@@ -119,11 +119,11 @@ $(function() {
119
119
  <div class="ttc" id="classSVF_1_1PAG_html_aa26d3c84f970deaa76ae404597abf960"><div class="ttname"><a href="classSVF_1_1PAG.html#aa26d3c84f970deaa76ae404597abf960">SVF::PAG::icfg</a></div><div class="ttdeci">ICFG * icfg</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00110">PAG.h:110</a></div></div>
120
120
  <div class="ttc" id="classSVF_1_1GepObjPN_html_ab7229c3e69880a6872fddac805bd6ee8"><div class="ttname"><a href="classSVF_1_1GepObjPN.html#ab7229c3e69880a6872fddac805bd6ee8">SVF::GepObjPN::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00129">PAG.cpp:129</a></div></div>
121
121
  <div class="ttc" id="classSVF_1_1PAGNode_html_a5a5712e845d05c2eaef385113c5bce58"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a5a5712e845d05c2eaef385113c5bce58">SVF::PAGNode::getIncomingEdges</a></div><div class="ttdeci">PAGEdge::PAGEdgeSetTy &amp; getIncomingEdges(PAGEdge::PEDGEK kind)</div><div class="ttdoc">Get incoming PAG edges. </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00161">PAGNode.h:161</a></div></div>
122
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a3bf6fe67ecbf1dd82879ff15bfd87140"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3bf6fe67ecbf1dd82879ff15bfd87140">llvm::DOTGraphTraits&lt; PAG * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(PAGNode *, EdgeIter EI)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01216">PAG.cpp:1216</a></div></div>
122
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a3bf6fe67ecbf1dd82879ff15bfd87140"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3bf6fe67ecbf1dd82879ff15bfd87140">llvm::DOTGraphTraits&lt; PAG * &gt;::getEdgeSourceLabel</a></div><div class="ttdeci">static std::string getEdgeSourceLabel(PAGNode *, EdgeIter EI)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01209">PAG.cpp:1209</a></div></div>
123
123
  <div class="ttc" id="cuddInt_8c_html_a5beb39637a978181c7c17714ac96672e"><div class="ttname"><a href="cuddInt_8c.html#a5beb39637a978181c7c17714ac96672e">empty</a></div><div class="ttdeci">static DdNode * empty</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l28567">cuddInt.c:28567</a></div></div>
124
124
  <div class="ttc" id="classSVF_1_1PAG_html_a7cd89e53bb857f6b8ee09e291f5aad3f"><div class="ttname"><a href="classSVF_1_1PAG.html#a7cd89e53bb857f6b8ee09e291f5aad3f">SVF::PAG::getLocationSetFromBaseNode</a></div><div class="ttdeci">LocationSet getLocationSetFromBaseNode(NodeID nodeId)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00849">PAG.cpp:849</a></div></div>
125
125
  <div class="ttc" id="classSVF_1_1PAGNode_html_a5cc5327ba68c3f11ed4bef47d89c3dfda02baa6f73696007a1ed47262491bd26b"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda02baa6f73696007a1ed47262491bd26b">SVF::PAGNode::RetNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00064">PAGNode.h:64</a></div></div>
126
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a0a1838869e7fa447739a594e549c983f"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a0a1838869e7fa447739a594e549c983f">llvm::DOTGraphTraits&lt; PAG * &gt;::getNodeLabel</a></div><div class="ttdeci">static std::string getNodeLabel(PAGNode *node, PAG *)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01138">PAG.cpp:1138</a></div></div>
126
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a0a1838869e7fa447739a594e549c983f"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a0a1838869e7fa447739a594e549c983f">llvm::DOTGraphTraits&lt; PAG * &gt;::getNodeLabel</a></div><div class="ttdeci">static std::string getNodeLabel(PAGNode *node, PAG *)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01131">PAG.cpp:1131</a></div></div>
127
127
  <div class="ttc" id="classSVF_1_1PAG_html_ab867cf7056089872daf2b27eb7ff1a8a"><div class="ttname"><a href="classSVF_1_1PAG.html#ab867cf7056089872daf2b27eb7ff1a8a">SVF::PAG::addObjNode</a></div><div class="ttdeci">NodeID addObjNode(const Value *val, NodeID i)</div><div class="ttdoc">Add a memory obj node. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00752">PAG.h:752</a></div></div>
128
128
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html">SVF::ICFGBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8h_source.html#l00039">ICFGBuilder.h:39</a></div></div>
129
129
  <div class="ttc" id="classSVF_1_1MemObj_html_a9d50a00ff608df21f50b3b2823128901"><div class="ttname"><a href="classSVF_1_1MemObj.html#a9d50a00ff608df21f50b3b2823128901">SVF::MemObj::isFieldInsensitive</a></div><div class="ttdeci">bool isFieldInsensitive() const</div><div class="ttdoc">Return true if its field limit is 0. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00337">MemModel.h:337</a></div></div>
@@ -133,11 +133,11 @@ $(function() {
133
133
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
134
134
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a4b8b2eb7125c259d8d550dd83c51147b">SVF::PAGEdge::NormalGep</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
135
135
  <div class="ttc" id="classSVF_1_1PAG_html_ae297792b6cf9e7782ef4268f48c01748"><div class="ttname"><a href="classSVF_1_1PAG.html#ae297792b6cf9e7782ef4268f48c01748">SVF::PAG::PTAPAGEdgeKindToSetMap</a></div><div class="ttdeci">PAGEdge::PAGKindToEdgeSetMapTy PTAPAGEdgeKindToSetMap</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00086">PAG.h:86</a></div></div>
136
- <div class="ttc" id="classSVF_1_1PAG_html_a287461961353d4c8b5b3947fe62ad388"><div class="ttname"><a href="classSVF_1_1PAG.html#a287461961353d4c8b5b3947fe62ad388">SVF::PAG::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="PAG_8cpp_source.html#l01091">PAG.cpp:1091</a></div></div>
136
+ <div class="ttc" id="classSVF_1_1PAG_html_a287461961353d4c8b5b3947fe62ad388"><div class="ttname"><a href="classSVF_1_1PAG.html#a287461961353d4c8b5b3947fe62ad388">SVF::PAG::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="PAG_8cpp_source.html#l01084">PAG.cpp:1084</a></div></div>
137
137
  <div class="ttc" id="classSVF_1_1PAGNode_html_a45be6b7b2f1f9754ea47e511e65d46ae"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a45be6b7b2f1f9754ea47e511e65d46ae">SVF::PAGNode::getValue</a></div><div class="ttdeci">const Value * getValue() const</div><div class="ttdoc">Get/has methods of the components. </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00094">PAGNode.h:94</a></div></div>
138
- <div class="ttc" id="classSVF_1_1GenericNode_html_a391e996d695b114530120723da1d003e"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">SVF::GenericNode::getNodeKind</a></div><div class="ttdeci">GNodeK getNodeKind() const</div><div class="ttdoc">Get node kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00170">GenericGraph.h:170</a></div></div>
138
+ <div class="ttc" id="classSVF_1_1GenericNode_html_a391e996d695b114530120723da1d003e"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a391e996d695b114530120723da1d003e">SVF::GenericNode::getNodeKind</a></div><div class="ttdeci">GNodeK getNodeKind() const</div><div class="ttdoc">Get node kind. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00171">GenericGraph.h:171</a></div></div>
139
139
  <div class="ttc" id="classSVF_1_1PAGNode_html_a8662a272081441af5440af58c975b85e"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a8662a272081441af5440af58c975b85e">SVF::PAGNode::value</a></div><div class="ttdeci">const Value * value</div><div class="ttdoc">value of this PAG node </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00078">PAGNode.h:78</a></div></div>
140
- <div class="ttc" id="classSVF_1_1PAGEdge_html_a3d5a75d4f3792f90bf6ee58776512154"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a3d5a75d4f3792f90bf6ee58776512154">SVF::PAGEdge::isPTAEdge</a></div><div class="ttdeci">bool isPTAEdge() const</div><div class="ttdoc">Whether src and dst nodes are both of pointer type. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01012">PAG.cpp:1012</a></div></div>
140
+ <div class="ttc" id="classSVF_1_1PAGEdge_html_a3d5a75d4f3792f90bf6ee58776512154"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a3d5a75d4f3792f90bf6ee58776512154">SVF::PAGEdge::isPTAEdge</a></div><div class="ttdeci">bool isPTAEdge() const</div><div class="ttdoc">Whether src and dst nodes are both of pointer type. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01005">PAG.cpp:1005</a></div></div>
141
141
  <div class="ttc" id="classSVF_1_1ICFGNode_html"><div class="ttname"><a href="classSVF_1_1ICFGNode.html">SVF::ICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00054">ICFGNode.h:54</a></div></div>
142
142
  <div class="ttc" id="classSVF_1_1GenericNode_html_a2f5471985dfe62bc9ded830a693ab153"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a2f5471985dfe62bc9ded830a693ab153">SVF::GenericNode::iterator</a></div><div class="ttdeci">GEdgeSetTy::iterator iterator</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00139">GenericGraph.h:139</a></div></div>
143
143
  <div class="ttc" id="classSVF_1_1RetPN_html_a9824061477c142e5dba14af14fa53aa2"><div class="ttname"><a href="classSVF_1_1RetPN.html#a9824061477c142e5dba14af14fa53aa2">SVF::RetPN::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00151">PAG.cpp:151</a></div></div>
@@ -163,7 +163,7 @@ $(function() {
163
163
  <div class="ttc" id="classSVF_1_1PAGNode_html_a56df156ef784fe2c23691cd6e176e030"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a56df156ef784fe2c23691cd6e176e030">SVF::PAGNode::isATPointer</a></div><div class="ttdeci">bool isATPointer</div><div class="ttdoc">top-level pointer </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00082">PAGNode.h:82</a></div></div>
164
164
  <div class="ttc" id="classSVF_1_1PAG_html_addb513f5571acf2854adc878e58cf523"><div class="ttname"><a href="classSVF_1_1PAG.html#addb513f5571acf2854adc878e58cf523">SVF::PAG::addBlackHoleAddrPE</a></div><div class="ttdeci">PAGEdge * addBlackHoleAddrPE(NodeID node)</div><div class="ttdoc">Set a pointer points-to black hole (e.g. int2ptr) </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00530">PAG.cpp:530</a></div></div>
165
165
  <div class="ttc" id="classSVF_1_1ICFGBuilder_html_ae66565ee32fff4ef5f0157e867333250"><div class="ttname"><a href="classSVF_1_1ICFGBuilder.html#ae66565ee32fff4ef5f0157e867333250">SVF::ICFGBuilder::build</a></div><div class="ttdeci">void build(SVFModule *svfModule)</div><div class="ttdef"><b>Definition:</b> <a href="ICFGBuilder_8cpp_source.html#l00041">ICFGBuilder.cpp:41</a></div></div>
166
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph&lt; PAGNode, PAGEdge &gt;::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00369">GenericGraph.h:369</a></div></div>
166
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph&lt; PAGNode, PAGEdge &gt;::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
167
167
  <div class="ttc" id="classSVF_1_1FIObjPN_html"><div class="ttname"><a href="classSVF_1_1FIObjPN.html">SVF::FIObjPN</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00530">PAGNode.h:530</a></div></div>
168
168
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6afad5f112c36b6e35baf38054c14ae597"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6afad5f112c36b6e35baf38054c14ae597">SVF::PAGEdge::UnaryOp</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
169
169
  <div class="ttc" id="classSVF_1_1PAG_html_a4f4cd384fe1b4bead9bfadb386e3f328"><div class="ttname"><a href="classSVF_1_1PAG.html#a4f4cd384fe1b4bead9bfadb386e3f328">SVF::PAG::addGepValNode</a></div><div class="ttdeci">NodeID addGepValNode(const Value *curInst, const Value *val, const LocationSet &amp;ls, NodeID i, const Type *type, u32_t fieldidx)</div><div class="ttdoc">Add a temp field value node, this method can only invoked by getGepValNode. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00637">PAG.cpp:637</a></div></div>
@@ -186,9 +186,9 @@ $(function() {
186
186
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a5205f3ccb0e28047e03b759a85fc744a"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a5205f3ccb0e28047e03b759a85fc744a">SVF::PAGEdge::callEdgeLabelCounter</a></div><div class="ttdeci">static u64_t callEdgeLabelCounter</div><div class="ttdoc">Call site Instruction counter. </div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00176">PAGEdge.h:176</a></div></div>
187
187
  <div class="ttc" id="classSVF_1_1NormalGepPE_html"><div class="ttname"><a href="classSVF_1_1NormalGepPE.html">SVF::NormalGepPE</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00472">PAGEdge.h:472</a></div></div>
188
188
  <div class="ttc" id="classSVF_1_1PAG_html_adc2f52d5c95c6b8718fe3f899d19cc2f"><div class="ttname"><a href="classSVF_1_1PAG.html#adc2f52d5c95c6b8718fe3f899d19cc2f">SVF::PAG::getBlackHoleNode</a></div><div class="ttdeci">NodeID getBlackHoleNode() const</div><div class="ttdoc">Get black hole and constant id. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00634">PAG.h:634</a></div></div>
189
- <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#l00177">GenericGraph.h:177</a></div></div>
189
+ <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#l00178">GenericGraph.h:178</a></div></div>
190
190
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
191
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a7391e83f5da401ab77cd6a4c36ccb337"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a7391e83f5da401ab77cd6a4c36ccb337">llvm::DOTGraphTraits&lt; PAG * &gt;::isNodeHidden</a></div><div class="ttdeci">static bool isNodeHidden(PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01131">PAG.cpp:1131</a></div></div>
191
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a7391e83f5da401ab77cd6a4c36ccb337"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a7391e83f5da401ab77cd6a4c36ccb337">llvm::DOTGraphTraits&lt; PAG * &gt;::isNodeHidden</a></div><div class="ttdeci">static bool isNodeHidden(PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01124">PAG.cpp:1124</a></div></div>
192
192
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6a8fcebc849a231c3c87dddbf0ab5a2167"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a8fcebc849a231c3c87dddbf0ab5a2167">SVF::PAGEdge::Load</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
193
193
  <div class="ttc" id="classSVF_1_1PAG_html_a745eddbb75d513d9cbf76709e3d7057e"><div class="ttname"><a href="classSVF_1_1PAG.html#a745eddbb75d513d9cbf76709e3d7057e">SVF::PAG::getNullPtr</a></div><div class="ttdeci">NodeID getNullPtr() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00646">PAG.h:646</a></div></div>
194
194
  <div class="ttc" id="classSVF_1_1PAG_html_aa50bf9fbf8ff2dff0392bff0319be622"><div class="ttname"><a href="classSVF_1_1PAG.html#aa50bf9fbf8ff2dff0392bff0319be622">SVF::PAG::addCopyPE</a></div><div class="ttdeci">CopyPE * addCopyPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add Copy edge. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00392">PAG.cpp:392</a></div></div>
@@ -229,7 +229,7 @@ $(function() {
229
229
  <div class="ttc" id="classSVF_1_1MemObj_html_ad7f7de744715c3acaf3d48822865c87b"><div class="ttname"><a href="classSVF_1_1MemObj.html#ad7f7de744715c3acaf3d48822865c87b">SVF::MemObj::getSymId</a></div><div class="ttdeci">SymID getSymId() const</div><div class="ttdoc">Get the memory object id. </div><div class="ttdef"><b>Definition:</b> <a href="MemModel_8h_source.html#l00331">MemModel.h:331</a></div></div>
230
230
  <div class="ttc" id="classSVF_1_1Options_html_a8dc477d83a142a62b63207f6f240f224"><div class="ttname"><a href="classSVF_1_1Options.html#a8dc477d83a142a62b63207f6f240f224">SVF::Options::FirstFieldEqBase</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; FirstFieldEqBase</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00113">Options.h:113</a></div></div>
231
231
  <div class="ttc" id="classSVF_1_1PAG_html_a42b57f4523f30b0f739b1285ea744766"><div class="ttname"><a href="classSVF_1_1PAG.html#a42b57f4523f30b0f739b1285ea744766">SVF::PAG::valueToEdgeMap</a></div><div class="ttdeci">ValueToEdgeMap valueToEdgeMap</div><div class="ttdoc">Map llvm::Values to all corresponding PAGEdges. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8h_source.html#l00101">PAG.h:101</a></div></div>
232
- <div class="ttc" id="classSVF_1_1PAG_html_ab4326448a536de1c8c1513fcf6d45aa2"><div class="ttname"><a href="classSVF_1_1PAG.html#ab4326448a536de1c8c1513fcf6d45aa2">SVF::PAG::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump PAG. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01083">PAG.cpp:1083</a></div></div>
232
+ <div class="ttc" id="classSVF_1_1PAG_html_ab4326448a536de1c8c1513fcf6d45aa2"><div class="ttname"><a href="classSVF_1_1PAG.html#ab4326448a536de1c8c1513fcf6d45aa2">SVF::PAG::dump</a></div><div class="ttdeci">void dump(std::string name)</div><div class="ttdoc">Dump PAG. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01076">PAG.cpp:1076</a></div></div>
233
233
  <div class="ttc" id="classSVF_1_1PAGNode_html_a983d2d9a8ea6fd5be14af55cf22c65ce"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a983d2d9a8ea6fd5be14af55cf22c65ce">SVF::PAGNode::isTopLevelPtr</a></div><div class="ttdeci">bool isTopLevelPtr() const</div><div class="ttdoc">Whether it is a top-level pointer. </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00120">PAGNode.h:120</a></div></div>
234
234
  <div class="ttc" id="classSVF_1_1PAGNode_html"><div class="ttname"><a href="classSVF_1_1PAGNode.html">SVF::PAGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00046">PAGNode.h:46</a></div></div>
235
235
  <div class="ttc" id="classSVF_1_1PAGNode_html_a5cc5327ba68c3f11ed4bef47d89c3dfda4b4c88fe6b73ec2f09441e7abd4766c6"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda4b4c88fe6b73ec2f09441e7abd4766c6">SVF::PAGNode::CloneGepObjNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00071">PAGNode.h:71</a></div></div>
@@ -242,8 +242,8 @@ $(function() {
242
242
  <div class="ttc" id="classSVF_1_1Options_html_ad2d3db3e407a53956a5a59cc24eb8d40"><div class="ttname"><a href="classSVF_1_1Options.html#ad2d3db3e407a53956a5a59cc24eb8d40">SVF::Options::HandBlackHole</a></div><div class="ttdeci">static llvm::cl::opt&lt; bool &gt; HandBlackHole</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00112">Options.h:112</a></div></div>
243
243
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6af447071283803d3aee763fe20783f4a4">SVF::PAGEdge::Copy</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
244
244
  <div class="ttc" id="classSVF_1_1PAGNode_html_a6c54e1a54a1963ffa8c97d97ffd6f3bc"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a6c54e1a54a1963ffa8c97d97ffd6f3bc">SVF::PAGNode::hasIncomingVariantGepEdge</a></div><div class="ttdeci">bool hasIncomingVariantGepEdge() const</div><div class="ttdoc">Has incoming VariantGepEdges. </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00183">PAGNode.h:183</a></div></div>
245
- <div class="ttc" id="classSVF_1_1PAG_html_a17fab82554f5a81c22c037b5813999e3"><div class="ttname"><a href="classSVF_1_1PAG.html#a17fab82554f5a81c22c037b5813999e3">SVF::PAG::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00978">PAG.cpp:978</a></div></div>
246
- <div class="ttc" id="classSVF_1_1PAG_html_a107c329c9524b2c029ff3fd8088dab67"><div class="ttname"><a href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">SVF::PAG::isValidTopLevelPtr</a></div><div class="ttdeci">bool isValidTopLevelPtr(const PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00986">PAG.cpp:986</a></div></div>
245
+ <div class="ttc" id="classSVF_1_1PAG_html_a17fab82554f5a81c22c037b5813999e3"><div class="ttname"><a href="classSVF_1_1PAG.html#a17fab82554f5a81c22c037b5813999e3">SVF::PAG::isValidPointer</a></div><div class="ttdeci">bool isValidPointer(NodeID nodeId) const</div><div class="ttdoc">Whether a node is a valid pointer. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00971">PAG.cpp:971</a></div></div>
246
+ <div class="ttc" id="classSVF_1_1PAG_html_a107c329c9524b2c029ff3fd8088dab67"><div class="ttname"><a href="classSVF_1_1PAG.html#a107c329c9524b2c029ff3fd8088dab67">SVF::PAG::isValidTopLevelPtr</a></div><div class="ttdeci">bool isValidTopLevelPtr(const PAGNode *node)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00979">PAG.cpp:979</a></div></div>
247
247
  <div class="ttc" id="classSVF_1_1GepValPN_html_ab2423c5ca6f7487d30e2a10e933db946"><div class="ttname"><a href="classSVF_1_1GepValPN.html#ab2423c5ca6f7487d30e2a10e933db946">SVF::GepValPN::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00118">PAG.cpp:118</a></div></div>
248
248
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="ContextDDA_8h_source.html#l00016">ContextDDA.h:16</a></div></div>
249
249
  <div class="ttc" id="classSVF_1_1PAGNode_html_a55bca5a9f3efe73feb45920f042e5965"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a55bca5a9f3efe73feb45920f042e5965">SVF::PAGNode::addInEdge</a></div><div class="ttdeci">void addInEdge(PAGEdge *inEdge)</div><div class="ttdoc">add methods of the components </div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00238">PAGNode.h:238</a></div></div>
@@ -254,30 +254,30 @@ $(function() {
254
254
  <div class="ttc" id="classSVF_1_1BinaryOPPE_html"><div class="ttname"><a href="classSVF_1_1BinaryOPPE.html">SVF::BinaryOPPE</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00290">PAGEdge.h:290</a></div></div>
255
255
  <div class="ttc" id="classSVF_1_1NodeIDAllocator_html_a2bd3ca30fc9669d9a0327544bdb4557b"><div class="ttname"><a href="classSVF_1_1NodeIDAllocator.html#a2bd3ca30fc9669d9a0327544bdb4557b">SVF::NodeIDAllocator::get</a></div><div class="ttdeci">static NodeIDAllocator * get(void)</div><div class="ttdoc">Return (singleton) allocator. </div><div class="ttdef"><b>Definition:</b> <a href="NodeIDAllocator_8cpp_source.html#l00025">NodeIDAllocator.cpp:25</a></div></div>
256
256
  <div class="ttc" id="classSVF_1_1GepObjPN_html"><div class="ttname"><a href="classSVF_1_1GepObjPN.html">SVF::GepObjPN</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00454">PAGNode.h:454</a></div></div>
257
- <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#l00164">GenericGraph.h:164</a></div></div>
257
+ <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#l00165">GenericGraph.h:165</a></div></div>
258
258
  <div class="ttc" id="classSVF_1_1PAG_html_adbe031ff60dbcd981ff68e30a2e677ef"><div class="ttname"><a href="classSVF_1_1PAG.html#adbe031ff60dbcd981ff68e30a2e677ef">SVF::PAG::addStorePE</a></div><div class="ttdeci">StorePE * addStorePE(NodeID src, NodeID dst, const IntraBlockNode *val)</div><div class="ttdoc">Add Store edge. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00479">PAG.cpp:479</a></div></div>
259
259
  <div class="ttc" id="classSVF_1_1PAGNode_html_a5cc5327ba68c3f11ed4bef47d89c3dfda727e569faa3b18cd01afe78b81f86d22"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfda727e569faa3b18cd01afe78b81f86d22">SVF::PAGNode::FIObjNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00068">PAGNode.h:68</a></div></div>
260
260
  <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#l00093">LocationSet.h:93</a></div></div>
261
261
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
262
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a13511a8b9de98389694c33e5895588a7"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a13511a8b9de98389694c33e5895588a7">llvm::DOTGraphTraits&lt; PAG * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(PAG *graph)</div><div class="ttdoc">Return name of the graph. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01121">PAG.cpp:1121</a></div></div>
262
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a13511a8b9de98389694c33e5895588a7"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a13511a8b9de98389694c33e5895588a7">llvm::DOTGraphTraits&lt; PAG * &gt;::getGraphName</a></div><div class="ttdeci">static std::string getGraphName(PAG *graph)</div><div class="ttdoc">Return name of the graph. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01114">PAG.cpp:1114</a></div></div>
263
263
  <div class="ttc" id="classSVF_1_1AddrPE_html"><div class="ttname"><a href="classSVF_1_1AddrPE.html">SVF::AddrPE</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00185">PAGEdge.h:185</a></div></div>
264
264
  <div class="ttc" id="SVFBasicTypes_8h_html_a7a295e02c56a93cf9206dd9d3b18dd17"><div class="ttname"><a href="SVFBasicTypes_8h.html#a7a295e02c56a93cf9206dd9d3b18dd17">DPAGBuild</a></div><div class="ttdeci">#define DPAGBuild</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
265
- <div class="ttc" id="classSVF_1_1PAGNode_html_a37d3c3aef0c5bd7a5d0d516438673800"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a37d3c3aef0c5bd7a5d0d516438673800">SVF::PAGNode::PAGNode</a></div><div class="ttdeci">PAGNode(const Value *val, NodeID i, PNODEK k)</div><div class="ttdoc">address-taken pointer </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01020">PAG.cpp:1020</a></div></div>
265
+ <div class="ttc" id="classSVF_1_1PAGNode_html_a37d3c3aef0c5bd7a5d0d516438673800"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a37d3c3aef0c5bd7a5d0d516438673800">SVF::PAGNode::PAGNode</a></div><div class="ttdeci">PAGNode(const Value *val, NodeID i, PNODEK k)</div><div class="ttdoc">address-taken pointer </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01013">PAG.cpp:1013</a></div></div>
266
266
  <div class="ttc" id="classSVF_1_1PAG_html_a37c31f1829f540fb0a4b57b7de3e7bca"><div class="ttname"><a href="classSVF_1_1PAG.html#a37c31f1829f540fb0a4b57b7de3e7bca">SVF::PAG::addThreadJoinPE</a></div><div class="ttdeci">TDJoinPE * addThreadJoinPE(NodeID src, NodeID dst, const CallBlockNode *cs)</div><div class="ttdoc">Add Thread join edge for parameter passing. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00558">PAG.cpp:558</a></div></div>
267
267
  <div class="ttc" id="classSVF_1_1TDForkPE_html_aa385dc7e7e439cb4d8ee1524c8fbf9fe"><div class="ttname"><a href="classSVF_1_1TDForkPE.html#aa385dc7e7e439cb4d8ee1524c8fbf9fe">SVF::TDForkPE::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00339">PAG.cpp:339</a></div></div>
268
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_aa5c1ce2e1eabe212edc58b9362fd1067"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#aa5c1ce2e1eabe212edc58b9362fd1067">llvm::DOTGraphTraits&lt; PAG * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(PAGNode *node, PAG *)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01152">PAG.cpp:1152</a></div></div>
268
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_aa5c1ce2e1eabe212edc58b9362fd1067"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#aa5c1ce2e1eabe212edc58b9362fd1067">llvm::DOTGraphTraits&lt; PAG * &gt;::getNodeAttributes</a></div><div class="ttdeci">static std::string getNodeAttributes(PAGNode *node, PAG *)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01145">PAG.cpp:1145</a></div></div>
269
269
  <div class="ttc" id="classSVF_1_1StorePE_html_a5fa112e5ed76a41effb11343a433c8c1"><div class="ttname"><a href="classSVF_1_1StorePE.html#a5fa112e5ed76a41effb11343a433c8c1">SVF::StorePE::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00273">PAG.cpp:273</a></div></div>
270
- <div class="ttc" id="classSVF_1_1PAGEdge_html_ab686138c420a0b03cf8f1c1dff044318"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#ab686138c420a0b03cf8f1c1dff044318">SVF::PAGEdge::PAGEdge</a></div><div class="ttdeci">PAGEdge(PAGNode *s, PAGNode *d, GEdgeFlag k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01002">PAG.cpp:1002</a></div></div>
270
+ <div class="ttc" id="classSVF_1_1PAGEdge_html_ab686138c420a0b03cf8f1c1dff044318"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#ab686138c420a0b03cf8f1c1dff044318">SVF::PAGEdge::PAGEdge</a></div><div class="ttdeci">PAGEdge(PAGNode *s, PAGNode *d, GEdgeFlag k)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00995">PAG.cpp:995</a></div></div>
271
271
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a85c0939ab55d744d32f5fda2b54f07e3"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a85c0939ab55d744d32f5fda2b54f07e3">SVF::PAGEdge::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00200">PAG.cpp:200</a></div></div>
272
272
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6a5f4c2c1ec167425622d40133ec15448d"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a5f4c2c1ec167425622d40133ec15448d">SVF::PAGEdge::Call</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
273
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_af1457fbb243e106e3940dcb7f5f8f274"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1457fbb243e106e3940dcb7f5f8f274">llvm::DOTGraphTraits&lt; PAG * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(PAGNode *, EdgeIter EI, PAG *)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01158">PAG.cpp:1158</a></div></div>
273
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_af1457fbb243e106e3940dcb7f5f8f274"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#af1457fbb243e106e3940dcb7f5f8f274">llvm::DOTGraphTraits&lt; PAG * &gt;::getEdgeAttributes</a></div><div class="ttdeci">static std::string getEdgeAttributes(PAGNode *, EdgeIter EI, PAG *)</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01151">PAG.cpp:1151</a></div></div>
274
274
  <div class="ttc" id="classSVF_1_1PAGNode_html_a5cc5327ba68c3f11ed4bef47d89c3dfdab1e9c79d90d28d638f13717e71786bfa"><div class="ttname"><a href="classSVF_1_1PAGNode.html#a5cc5327ba68c3f11ed4bef47d89c3dfdab1e9c79d90d28d638f13717e71786bfa">SVF::PAGNode::GepValNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGNode_8h_source.html#l00066">PAGNode.h:66</a></div></div>
275
275
  <div class="ttc" id="classSVF_1_1AddrPE_html_a202747525079d2946a26f43e71a7c194"><div class="ttname"><a href="classSVF_1_1AddrPE.html#a202747525079d2946a26f43e71a7c194">SVF::AddrPE::toString</a></div><div class="ttdeci">virtual const std::string toString() const</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00207">PAG.cpp:207</a></div></div>
276
276
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6a90aa1e3ce21dcd54cf433610b427ba96"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6a90aa1e3ce21dcd54cf433610b427ba96">SVF::PAGEdge::Cmp</a></div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00056">PAGEdge.h:56</a></div></div>
277
- <div class="ttc" id="classSVF_1_1GenericGraph_html_a2f2bca8219c7d769f6d2937e5cd40d14"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a2f2bca8219c7d769f6d2937e5cd40d14">SVF::GenericGraph::incEdgeNum</a></div><div class="ttdeci">void incEdgeNum()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00430">GenericGraph.h:430</a></div></div>
277
+ <div class="ttc" id="classSVF_1_1GenericGraph_html_a2f2bca8219c7d769f6d2937e5cd40d14"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a2f2bca8219c7d769f6d2937e5cd40d14">SVF::GenericGraph::incEdgeNum</a></div><div class="ttdeci">void incEdgeNum()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00427">GenericGraph.h:427</a></div></div>
278
278
  <div class="ttc" id="classSVF_1_1PAGNode_html_ace4c68d1187a70f69a9669f0e4e56ea2"><div class="ttname"><a href="classSVF_1_1PAGNode.html#ace4c68d1187a70f69a9669f0e4e56ea2">SVF::PAGNode::getNodeAttrForDotDisplay</a></div><div class="ttdeci">virtual const std::string getNodeAttrForDotDisplay() const</div><div class="ttdoc">Get shape and/or color of node for .dot display. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00054">PAG.cpp:54</a></div></div>
279
- <div class="ttc" id="classSVF_1_1PAG_html_aa432bbc7c4e83abecdc8706972a9635b"><div class="ttname"><a href="classSVF_1_1PAG.html#aa432bbc7c4e83abecdc8706972a9635b">SVF::PAG::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print PAG. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00887">PAG.cpp:887</a></div></div>
280
- <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a3101c843232b1f228a9af0e464c2049b"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3101c843232b1f228a9af0e464c2049b">llvm::DOTGraphTraits&lt; PAG * &gt;::ChildIteratorType</a></div><div class="ttdeci">NodeType::iterator ChildIteratorType</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01114">PAG.cpp:1114</a></div></div>
279
+ <div class="ttc" id="classSVF_1_1PAG_html_aa432bbc7c4e83abecdc8706972a9635b"><div class="ttname"><a href="classSVF_1_1PAG.html#aa432bbc7c4e83abecdc8706972a9635b">SVF::PAG::print</a></div><div class="ttdeci">void print()</div><div class="ttdoc">Print PAG. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00880">PAG.cpp:880</a></div></div>
280
+ <div class="ttc" id="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4_html_a3101c843232b1f228a9af0e464c2049b"><div class="ttname"><a href="structllvm_1_1DOTGraphTraits_3_01PAG_01_5_01_4.html#a3101c843232b1f228a9af0e464c2049b">llvm::DOTGraphTraits&lt; PAG * &gt;::ChildIteratorType</a></div><div class="ttdeci">NodeType::iterator ChildIteratorType</div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l01107">PAG.cpp:1107</a></div></div>
281
281
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a79080505b4744aa8806b55215ac2b0f6"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a79080505b4744aa8806b55215ac2b0f6">SVF::PAGEdge::PEDGEK</a></div><div class="ttdeci">PEDGEK</div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00054">PAGEdge.h:54</a></div></div>
282
282
  <div class="ttc" id="classSVF_1_1PAGEdge_html_a8b10bded7a25c801dc48926319da0525"><div class="ttname"><a href="classSVF_1_1PAGEdge.html#a8b10bded7a25c801dc48926319da0525">SVF::PAGEdge::value</a></div><div class="ttdeci">const Value * value</div><div class="ttdoc">LLVM value. </div><div class="ttdef"><b>Definition:</b> <a href="PAGEdge_8h_source.html#l00060">PAGEdge.h:60</a></div></div>
283
283
  <div class="ttc" id="classSVF_1_1PAG_html_a0dc823946e0b86027b6093fe7c907543"><div class="ttname"><a href="classSVF_1_1PAG.html#a0dc823946e0b86027b6093fe7c907543">SVF::PAG::addLoadPE</a></div><div class="ttdeci">LoadPE * addLoadPE(NodeID src, NodeID dst)</div><div class="ttdoc">Add Load edge. </div><div class="ttdef"><b>Definition:</b> <a href="PAG_8cpp_source.html#l00461">PAG.cpp:461</a></div></div>