svf-tools 1.0.481 → 1.0.482

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 (337) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
  4. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +8 -8
  5. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +8 -8
  6. package/SVF-doxygen/html/html/Andersen_8h_source.html +6 -6
  7. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +5 -5
  8. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +1 -1
  9. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +1 -1
  10. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +7 -7
  11. package/SVF-doxygen/html/html/CHG_8cpp_source.html +3 -3
  12. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +14 -15
  13. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +14 -14
  14. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  15. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +13 -13
  16. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +7 -7
  17. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
  19. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +5 -5
  20. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +4 -4
  21. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +6 -6
  23. package/SVF-doxygen/html/html/ExeState_8h_source.html +2 -2
  24. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  25. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +4 -4
  26. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +12 -12
  27. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
  28. package/SVF-doxygen/html/html/FlowSensitive_8cpp.html +0 -1
  29. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +32 -38
  30. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +66 -67
  31. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  32. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +6 -6
  33. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
  34. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +2 -7
  35. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +1 -1
  36. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/MTA_8cpp_source.html +2 -2
  38. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +6 -6
  39. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +5 -5
  40. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/Options_8cpp_source.html +17 -21
  42. package/SVF-doxygen/html/html/Options_8h_source.html +13 -16
  43. package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
  44. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +5 -5
  45. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +21 -22
  47. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +17 -17
  48. package/SVF-doxygen/html/html/PointerAnalysis_8cpp.html +0 -1
  49. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +64 -69
  50. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +109 -110
  51. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
  52. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +3 -3
  53. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +4 -4
  54. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +12 -12
  56. package/SVF-doxygen/html/html/SVFIR_8h_source.html +9 -9
  57. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +26 -32
  58. package/SVF-doxygen/html/html/SVFVariables_8h.html +0 -6
  59. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +109 -130
  60. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  61. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  62. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +2 -2
  63. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  64. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  66. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/VFG_8cpp_source.html +9 -9
  69. package/SVF-doxygen/html/html/VFG_8h_source.html +1 -1
  70. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +16 -16
  71. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  72. package/SVF-doxygen/html/html/WPAPass_8cpp.html +0 -1
  73. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +16 -19
  74. package/SVF-doxygen/html/html/WPAPass_8h_source.html +6 -6
  75. package/SVF-doxygen/html/html/annotated.html +248 -253
  76. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  77. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  78. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  79. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +173 -174
  80. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +27 -29
  81. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +146 -147
  82. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +17 -19
  83. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +185 -186
  84. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +7 -8
  85. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +189 -190
  86. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +6 -7
  87. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +180 -181
  88. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +8 -9
  89. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +182 -183
  90. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +11 -12
  91. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +185 -186
  92. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +8 -9
  93. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +11 -11
  94. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +177 -178
  95. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +8 -9
  96. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +4 -4
  97. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +103 -104
  98. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +42 -48
  99. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.png +0 -0
  100. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  101. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +73 -74
  102. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +13 -14
  103. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  104. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +13 -13
  105. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +3 -3
  106. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  107. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +94 -95
  108. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +26 -28
  109. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +163 -164
  110. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +33 -35
  111. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
  112. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +3 -3
  113. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +15 -15
  114. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +5 -5
  115. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +2 -2
  116. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +72 -75
  117. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +16 -27
  118. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.png +0 -0
  119. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +70 -73
  120. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +17 -20
  121. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +6 -6
  122. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +72 -75
  123. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +18 -29
  124. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.png +0 -0
  125. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +112 -114
  126. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +12 -15
  127. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +163 -164
  128. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +25 -27
  129. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +106 -108
  130. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +234 -314
  131. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.png +0 -0
  132. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +43 -43
  133. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  134. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  135. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
  136. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +77 -80
  137. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +38 -49
  138. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.png +0 -0
  139. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +73 -76
  140. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +28 -31
  141. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +9 -9
  142. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  143. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  144. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  145. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
  146. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +44 -45
  147. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +4 -45
  148. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
  149. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +14 -14
  150. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
  153. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +8 -8
  154. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  155. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +71 -74
  156. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +30 -42
  157. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.png +0 -0
  158. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +104 -107
  159. package/SVF-doxygen/html/html/classSVF_1_1Options.html +13 -94
  160. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +3 -3
  161. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
  162. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +5 -5
  163. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +69 -70
  165. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +302 -319
  166. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
  167. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +70 -73
  168. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +18 -21
  169. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +5 -5
  170. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +2 -2
  171. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +18 -18
  172. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +2 -2
  173. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +73 -76
  174. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +84 -99
  175. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.png +0 -0
  176. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +2 -2
  177. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +8 -8
  178. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +2 -3
  179. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +157 -158
  180. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +6 -7
  181. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +4 -4
  182. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
  183. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +150 -151
  184. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +21 -23
  185. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  186. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +9 -9
  187. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +69 -72
  188. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +23 -26
  189. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +70 -73
  190. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +18 -21
  191. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +125 -127
  192. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +44 -48
  193. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +31 -31
  194. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +6 -7
  195. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.png +0 -0
  196. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +38 -40
  197. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +17 -15
  198. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.png +0 -0
  199. package/SVF-doxygen/html/html/classes.html +104 -105
  200. package/SVF-doxygen/html/html/dir_66541c162fd98954e2c32089ba9a721f.html +0 -4
  201. package/SVF-doxygen/html/html/dir_ea25a8a5b2904424d8a51916f8b475b2.html +0 -4
  202. package/SVF-doxygen/html/html/files.html +12 -16
  203. package/SVF-doxygen/html/html/functions_0x7e.html +0 -6
  204. package/SVF-doxygen/html/html/functions_a.html +8 -30
  205. package/SVF-doxygen/html/html/functions_b.html +8 -12
  206. package/SVF-doxygen/html/html/functions_c.html +24 -54
  207. package/SVF-doxygen/html/html/functions_d.html +1 -13
  208. package/SVF-doxygen/html/html/functions_e.html +1 -2
  209. package/SVF-doxygen/html/html/functions_eval_c.html +0 -9
  210. package/SVF-doxygen/html/html/functions_eval_f.html +0 -3
  211. package/SVF-doxygen/html/html/functions_f.html +19 -24
  212. package/SVF-doxygen/html/html/functions_func.html +6 -25
  213. package/SVF-doxygen/html/html/functions_func_0x7e.html +0 -6
  214. package/SVF-doxygen/html/html/functions_func_b.html +1 -5
  215. package/SVF-doxygen/html/html/functions_func_c.html +20 -37
  216. package/SVF-doxygen/html/html/functions_func_d.html +0 -6
  217. package/SVF-doxygen/html/html/functions_func_e.html +2 -3
  218. package/SVF-doxygen/html/html/functions_func_f.html +1 -5
  219. package/SVF-doxygen/html/html/functions_func_g.html +8 -48
  220. package/SVF-doxygen/html/html/functions_func_i.html +5 -15
  221. package/SVF-doxygen/html/html/functions_func_p.html +2 -16
  222. package/SVF-doxygen/html/html/functions_func_s.html +6 -19
  223. package/SVF-doxygen/html/html/functions_func_t.html +0 -6
  224. package/SVF-doxygen/html/html/functions_func_u.html +0 -4
  225. package/SVF-doxygen/html/html/functions_func_v.html +0 -3
  226. package/SVF-doxygen/html/html/functions_g.html +12 -55
  227. package/SVF-doxygen/html/html/functions_i.html +11 -21
  228. package/SVF-doxygen/html/html/functions_l.html +8 -14
  229. package/SVF-doxygen/html/html/functions_m.html +0 -6
  230. package/SVF-doxygen/html/html/functions_n.html +0 -36
  231. package/SVF-doxygen/html/html/functions_o.html +12 -20
  232. package/SVF-doxygen/html/html/functions_p.html +9 -31
  233. package/SVF-doxygen/html/html/functions_s.html +15 -31
  234. package/SVF-doxygen/html/html/functions_t.html +8 -18
  235. package/SVF-doxygen/html/html/functions_u.html +2 -9
  236. package/SVF-doxygen/html/html/functions_v.html +7 -10
  237. package/SVF-doxygen/html/html/functions_vars_a.html +0 -3
  238. package/SVF-doxygen/html/html/functions_vars_c.html +0 -6
  239. package/SVF-doxygen/html/html/functions_vars_d.html +0 -6
  240. package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
  241. package/SVF-doxygen/html/html/functions_vars_l.html +0 -6
  242. package/SVF-doxygen/html/html/functions_vars_m.html +0 -6
  243. package/SVF-doxygen/html/html/functions_vars_n.html +0 -36
  244. package/SVF-doxygen/html/html/functions_vars_o.html +0 -12
  245. package/SVF-doxygen/html/html/functions_vars_p.html +0 -4
  246. package/SVF-doxygen/html/html/functions_vars_s.html +0 -3
  247. package/SVF-doxygen/html/html/functions_vars_t.html +0 -6
  248. package/SVF-doxygen/html/html/functions_vars_u.html +0 -3
  249. package/SVF-doxygen/html/html/functions_w.html +10 -6
  250. package/SVF-doxygen/html/html/globals_func_g.html +0 -3
  251. package/SVF-doxygen/html/html/globals_func_i.html +2 -7
  252. package/SVF-doxygen/html/html/globals_g.html +2 -5
  253. package/SVF-doxygen/html/html/globals_i.html +4 -7
  254. package/SVF-doxygen/html/html/globals_r.html +3 -3
  255. package/SVF-doxygen/html/html/globals_s.html +9 -7
  256. package/SVF-doxygen/html/html/hierarchy.html +13 -19
  257. package/SVF-doxygen/html/html/namespaceSVF.html +0 -10
  258. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +36 -38
  259. package/SVF-doxygen/html/html/search/all_1.js +1 -8
  260. package/SVF-doxygen/html/html/search/all_10.js +19 -21
  261. package/SVF-doxygen/html/html/search/all_12.js +1 -1
  262. package/SVF-doxygen/html/html/search/all_13.js +12 -17
  263. package/SVF-doxygen/html/html/search/all_14.js +8 -12
  264. package/SVF-doxygen/html/html/search/all_15.js +5 -6
  265. package/SVF-doxygen/html/html/search/all_16.js +4 -5
  266. package/SVF-doxygen/html/html/search/all_17.js +1 -1
  267. package/SVF-doxygen/html/html/search/all_1b.js +0 -2
  268. package/SVF-doxygen/html/html/search/all_2.js +0 -1
  269. package/SVF-doxygen/html/html/search/all_3.js +2 -11
  270. package/SVF-doxygen/html/html/search/all_4.js +0 -4
  271. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  272. package/SVF-doxygen/html/html/search/all_6.js +2 -6
  273. package/SVF-doxygen/html/html/search/all_7.js +3 -16
  274. package/SVF-doxygen/html/html/search/all_9.js +5 -8
  275. package/SVF-doxygen/html/html/search/all_c.js +4 -6
  276. package/SVF-doxygen/html/html/search/all_d.js +4 -6
  277. package/SVF-doxygen/html/html/search/all_e.js +3 -15
  278. package/SVF-doxygen/html/html/search/all_f.js +0 -4
  279. package/SVF-doxygen/html/html/search/classes_10.js +1 -2
  280. package/SVF-doxygen/html/html/search/classes_2.js +0 -3
  281. package/SVF-doxygen/html/html/search/classes_5.js +0 -1
  282. package/SVF-doxygen/html/html/search/enumvalues_2.js +0 -3
  283. package/SVF-doxygen/html/html/search/enumvalues_5.js +0 -1
  284. package/SVF-doxygen/html/html/search/files_5.js +0 -2
  285. package/SVF-doxygen/html/html/search/files_e.js +1 -3
  286. package/SVF-doxygen/html/html/search/functions_0.js +1 -7
  287. package/SVF-doxygen/html/html/search/functions_1.js +0 -1
  288. package/SVF-doxygen/html/html/search/functions_11.js +2 -6
  289. package/SVF-doxygen/html/html/search/functions_12.js +2 -3
  290. package/SVF-doxygen/html/html/search/functions_13.js +4 -4
  291. package/SVF-doxygen/html/html/search/functions_14.js +0 -1
  292. package/SVF-doxygen/html/html/search/functions_17.js +0 -2
  293. package/SVF-doxygen/html/html/search/functions_2.js +2 -6
  294. package/SVF-doxygen/html/html/search/functions_3.js +0 -2
  295. package/SVF-doxygen/html/html/search/functions_4.js +1 -1
  296. package/SVF-doxygen/html/html/search/functions_5.js +1 -2
  297. package/SVF-doxygen/html/html/search/functions_6.js +3 -15
  298. package/SVF-doxygen/html/html/search/functions_8.js +4 -7
  299. package/SVF-doxygen/html/html/search/functions_f.js +12 -13
  300. package/SVF-doxygen/html/html/search/variables_1.js +0 -1
  301. package/SVF-doxygen/html/html/search/variables_10.js +1 -2
  302. package/SVF-doxygen/html/html/search/variables_13.js +0 -1
  303. package/SVF-doxygen/html/html/search/variables_14.js +3 -5
  304. package/SVF-doxygen/html/html/search/variables_15.js +1 -2
  305. package/SVF-doxygen/html/html/search/variables_3.js +0 -2
  306. package/SVF-doxygen/html/html/search/variables_4.js +0 -2
  307. package/SVF-doxygen/html/html/search/variables_5.js +1 -1
  308. package/SVF-doxygen/html/html/search/variables_7.js +0 -1
  309. package/SVF-doxygen/html/html/search/variables_c.js +1 -3
  310. package/SVF-doxygen/html/html/search/variables_d.js +1 -3
  311. package/SVF-doxygen/html/html/search/variables_e.js +2 -14
  312. package/SVF-doxygen/html/html/search/variables_f.js +0 -4
  313. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  314. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
  315. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  316. package/SVF-doxygen/html/html/svf-ex_8cpp.html +4 -4
  317. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +4 -4
  318. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  319. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  320. package/build.sh +1 -28
  321. package/include/MemoryModel/PointerAnalysis.h +0 -1
  322. package/include/MemoryModel/SVFVariables.h +11 -140
  323. package/include/SVF-FE/LLVMModule.h +0 -24
  324. package/include/Util/Options.h +0 -7
  325. package/include/WPA/FlowSensitive.h +0 -4
  326. package/lib/MemoryModel/PointerAnalysis.cpp +4 -22
  327. package/lib/MemoryModel/PointerAnalysisImpl.cpp +1 -1
  328. package/lib/MemoryModel/SVFVariables.cpp +1 -28
  329. package/lib/SVF-FE/CPPUtil.cpp +0 -7
  330. package/lib/Util/Options.cpp +0 -24
  331. package/lib/WPA/FlowSensitive.cpp +1 -75
  332. package/lib/WPA/WPAPass.cpp +0 -4
  333. package/package.json +1 -1
  334. package/include/WPA/FlowSensitiveTBHC.h +0 -122
  335. package/include/WPA/TypeBasedHeapCloning.h +0 -188
  336. package/lib/WPA/FlowSensitiveTBHC.cpp +0 -695
  337. package/lib/WPA/TypeBasedHeapCloning.cpp +0 -795
@@ -66,9 +66,8 @@ $(function() {
66
66
  <div class="title">WPAPass.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="WPAPass_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">//===- WPAPass.cpp -- Whole program analysis pass------------------------------//</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"> * @file: WPA.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 10/06/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * @version: 1.0</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;<span class="comment"> * @section LICENSE</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * @section DESCRIPTION</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> */</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;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPAPass_8h.html">WPA/WPAPass.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="AndersenSFR_8h.html">WPA/AndersenSFR.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="FlowSensitive_8h.html">WPA/FlowSensitive.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="FlowSensitiveTBHC_8h.html">WPA/FlowSensitiveTBHC.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="VersionedFlowSensitive_8h.html">WPA/VersionedFlowSensitive.h</a>&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="TypeAnalysis_8h.html">WPA/TypeAnalysis.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Steensgaard_8h.html">WPA/Steensgaard.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIRBuilder_8h.html">SVF-FE/SVFIRBuilder.h</a>&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="keywordtype">char</span> <a class="code" href="classSVF_1_1WPAPass.html#a2674527c92cdef223e655d449f0811d4">WPAPass::ID</a> = 0;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a7ea8006b7e9237a470dfd34ad633826b"> 56</a></span>&#160;<a class="code" href="classSVF_1_1WPAPass.html#a7ea8006b7e9237a470dfd34ad633826b">WPAPass::~WPAPass</a>()</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;{</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; PTAVector::const_iterator it = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.begin();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; PTAVector::const_iterator eit = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.end();</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta = *it;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">delete</span> pta;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; }</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.clear();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75"> 71</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">WPAPass::runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;{</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i&lt;= <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">PointerAnalysis::Default_PTA</a>; i++)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(i))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a2d6a270c3a71b5963eaed37839355fd3">runPointerAnalysis</a>(svfModule, i);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.empty() &amp;&amp; <span class="stringliteral">&quot;No pointer analysis is specified.\n&quot;</span>);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a1f47c1cb5a64bab9a6b8ac38103416ac"> 84</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">WPAPass::runOnModule</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; module)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae919327019b5014f64b754dbdeb07f75">buildSVFModule</a>(module);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">runOnModule</a>(svfModule);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;}</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a2d6a270c3a71b5963eaed37839355fd3"> 94</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPAPass.html#a2d6a270c3a71b5963eaed37839355fd3">WPAPass::runPointerAnalysis</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> kind)</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;{</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(svfModule);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">switch</span> (kind)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; {</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">PointerAnalysis::Andersen_WPA</a>:</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(pag);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">PointerAnalysis::AndersenLCD_WPA</a>:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>(pag);</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">PointerAnalysis::AndersenHCD_WPA</a>:</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>(pag);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">PointerAnalysis::AndersenHLCD_WPA</a>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a>(pag);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">PointerAnalysis::AndersenSCD_WPA</a>:</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenSCD.html">AndersenSCD</a>(pag);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">PointerAnalysis::AndersenSFR_WPA</a>:</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenSFR.html">AndersenSFR</a>(pag);</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>:</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>(pag);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">PointerAnalysis::Steensgaard_WPA</a>:</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1Steensgaard.html">Steensgaard</a>(pag);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">PointerAnalysis::FSSPARSE_WPA</a>:</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a>(pag);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a088dda60195ab259693977af8414f203">PointerAnalysis::FSTBHC_WPA</a>:</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowSensitiveTBHC.html">FlowSensitiveTBHC</a>(pag);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">PointerAnalysis::VFS_WPA</a>:</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a>(pag);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">PointerAnalysis::TypeCPP_WPA</a>:</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TypeAnalysis.html">TypeAnalysis</a>(pag);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;This pointer analysis has not been implemented yet.\n&quot;</span>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.push_back(<a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ae1e217dc18be0ce70bee5ad930cb54c6">analyze</a>();</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">Options::AnderSVFG</a>)</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; <a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a> memSSA(<span class="keyword">true</span>);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;AndersenBase&gt;(<a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>) &amp;&amp; <span class="stringliteral">&quot;supports only andersen/steensgaard for pre-computed SVFG&quot;</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="classSVF_1_1SVFG.html">SVFG</a> *svfg = memSSA.<a class="code" href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">buildFullSVFG</a>((<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>*)<a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>))</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a> = svfg;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1b1d1ad6b3a6c48a9fa07161b582c7fe">Options::PrintAliases</a>)</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#abb6e0c5cc5de312ee0285d1854550752">PrintAliasPairs</a>(<a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;}</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#abb6e0c5cc5de312ee0285d1854550752"> 159</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPAPass.html#abb6e0c5cc5de312ee0285d1854550752">WPAPass::PrintAliasPairs</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> lit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), elit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); lit != elit; ++lit)</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; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node1 = lit-&gt;second;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node2 = node1;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> rit = lit, erit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); rit != erit; ++rit)</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; {</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; node2 = rit-&gt;second;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span>(node1==node2)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun1 = node1-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a53439a493963d16e5a1b5ed36ab6d33e">getFunction</a>();</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun2 = node2-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a53439a493963d16e5a1b5ed36ab6d33e">getFunction</a>();</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">alias</a>(node1-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), node2-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; (result == <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a> ? <span class="stringliteral">&quot;NoAlias&quot;</span> : <span class="stringliteral">&quot;MayAlias&quot;</span>)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; &lt;&lt; <span class="stringliteral">&quot; var&quot;</span> &lt;&lt; node1-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; node1-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>()</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; &lt;&lt; <span class="stringliteral">&quot;@&quot;</span> &lt;&lt; (fun1==<span class="keyword">nullptr</span>?<span class="stringliteral">&quot;&quot;</span>:fun1-&gt;getName().str()) &lt;&lt; <span class="stringliteral">&quot;] --&quot;</span></div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; &lt;&lt; <span class="stringliteral">&quot; var&quot;</span> &lt;&lt; node2-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; node2-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>()</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; &lt;&lt; <span class="stringliteral">&quot;@&quot;</span> &lt;&lt; (fun2==<span class="keyword">nullptr</span>?<span class="stringliteral">&quot;&quot;</span>:fun2-&gt;getName().str()) &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;}</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a5a71ab4d4bd993ff52da60c730d7b57f"> 187</a></span>&#160;<a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="classSVF_1_1WPAPass.html#a5a71ab4d4bd993ff52da60c730d7b57f">WPAPass::alias</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;{</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(V1) &amp;&amp; pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(V2))</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7">Options::AliasRule</a>.getBits() == 0 || <a class="code" href="classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7">Options::AliasRule</a>.isSet(<a class="code" href="classSVF_1_1WPAPass.html#a4505a1882956feda3cf83c788149394dabb45a604558e2ebff460adb77b4a5d7c">Veto</a>))</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; result = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">for</span> (PTAVector::const_iterator it = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.begin(), eit = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.end();</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; {</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> ((*it)-&gt;alias(V1, V2) == <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; result = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; }</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7">Options::AliasRule</a>.isSet(<a class="code" href="classSVF_1_1WPAPass.html#a4505a1882956feda3cf83c788149394da498ba80d25733b291f391a94500dd4c7">Conservative</a>))</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; {</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; result = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">for</span> (PTAVector::const_iterator it = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.begin(), eit = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.end();</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">if</span> ((*it)-&gt;alias(V1, V2) == <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>)</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; result = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</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; }</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; }</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;}</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e"> 234</a></span>&#160;<a class="code" href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844">ModRefInfo</a> <a class="code" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">WPAPass::getModRefInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* callInst)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;{</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>) &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">Options::AnderSVFG</a> &amp;&amp; <span class="stringliteral">&quot;mod-ref query is only support with -ander and -svfg turned on&quot;</span>);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callInst);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>()-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">getModRefInfo</a>(cbn);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a81277c93b6a89c01a7a1f476bc3d744d"> 245</a></span>&#160;<a class="code" href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844">ModRefInfo</a> <a class="code" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">WPAPass::getModRefInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* callInst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V)</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>) &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">Options::AnderSVFG</a> &amp;&amp; <span class="stringliteral">&quot;mod-ref query is only support with -ander and -svfg turned on&quot;</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callInst);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>()-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">getModRefInfo</a>(cbn, V);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;}</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a148cd86101e402e7ed8d3b3dae151d79"> 256</a></span>&#160;<a class="code" href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844">ModRefInfo</a> <a class="code" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">WPAPass::getModRefInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* callInst1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* callInst2)</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>) &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">Options::AnderSVFG</a> &amp;&amp; <span class="stringliteral">&quot;mod-ref query is only support with -ander and -svfg turned on&quot;</span>);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn1 = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callInst1);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn2 = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callInst2);</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>()-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">getModRefInfo</a>(cbn1, cbn2);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}</div><div class="ttc" id="TypeAnalysis_8h_html"><div class="ttname"><a href="TypeAnalysis_8h.html">TypeAnalysis.h</a></div></div>
70
- <div class="ttc" id="FlowSensitiveTBHC_8h_html"><div class="ttname"><a href="FlowSensitiveTBHC_8h.html">FlowSensitiveTBHC.h</a></div></div>
71
- <div class="ttc" id="classSVF_1_1Options_html_ab9db3ae038f26a350afc964952907bd7"><div class="ttname"><a href="classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7">SVF::Options::AliasRule</a></div><div class="ttdeci">static llvm::cl::bits&lt; WPAPass::AliasCheckRule &gt; AliasRule</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00252">Options.h:252</a></div></div>
69
+ <a href="WPAPass_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">//===- WPAPass.cpp -- Whole program analysis pass------------------------------//</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"> * @file: WPA.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 10/06/2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * @version: 1.0</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;<span class="comment"> * @section LICENSE</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * @section DESCRIPTION</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> */</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;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</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="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFModule_8h.html">Util/SVFModule.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointerAnalysisImpl_8h.html">MemoryModel/PointerAnalysisImpl.h</a>&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="WPAPass_8h.html">WPA/WPAPass.h</a>&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Andersen_8h.html">WPA/Andersen.h</a>&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="AndersenSFR_8h.html">WPA/AndersenSFR.h</a>&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="FlowSensitive_8h.html">WPA/FlowSensitive.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="VersionedFlowSensitive_8h.html">WPA/VersionedFlowSensitive.h</a>&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="TypeAnalysis_8h.html">WPA/TypeAnalysis.h</a>&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Steensgaard_8h.html">WPA/Steensgaard.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFIRBuilder_8h.html">SVF-FE/SVFIRBuilder.h</a>&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="keywordtype">char</span> <a class="code" href="classSVF_1_1WPAPass.html#a2674527c92cdef223e655d449f0811d4">WPAPass::ID</a> = 0;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a7ea8006b7e9237a470dfd34ad633826b"> 55</a></span>&#160;<a class="code" href="classSVF_1_1WPAPass.html#a7ea8006b7e9237a470dfd34ad633826b">WPAPass::~WPAPass</a>()</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; PTAVector::const_iterator it = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.begin();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; PTAVector::const_iterator eit = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.end();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta = *it;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">delete</span> pta;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.clear();</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;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75"> 70</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">WPAPass::runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule)</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i&lt;= <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">PointerAnalysis::Default_PTA</a>; i++)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(i))</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a2d6a270c3a71b5963eaed37839355fd3">runPointerAnalysis</a>(svfModule, i);</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(!<a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.empty() &amp;&amp; <span class="stringliteral">&quot;No pointer analysis is specified.\n&quot;</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;</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a1f47c1cb5a64bab9a6b8ac38103416ac"> 83</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">WPAPass::runOnModule</a>(<a class="code" href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a>&amp; module)</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; <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae919327019b5014f64b754dbdeb07f75">buildSVFModule</a>(module);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">runOnModule</a>(svfModule);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</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;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a2d6a270c3a71b5963eaed37839355fd3"> 93</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPAPass.html#a2d6a270c3a71b5963eaed37839355fd3">WPAPass::runPointerAnalysis</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> kind)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="classSVF_1_1SVFIRBuilder.html">SVFIRBuilder</a> builder;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = builder.<a class="code" href="classSVF_1_1SVFIRBuilder.html#aa6d56f9580f76fd09d25ce6cf7541e98">build</a>(svfModule);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">switch</span> (kind)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ab68615784a520e39856be5237930e6a6">PointerAnalysis::Andersen_WPA</a>:</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1Andersen.html">Andersen</a>(pag);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">PointerAnalysis::AndersenLCD_WPA</a>:</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenLCD.html">AndersenLCD</a>(pag);</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">PointerAnalysis::AndersenHCD_WPA</a>:</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenHCD.html">AndersenHCD</a>(pag);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">PointerAnalysis::AndersenHLCD_WPA</a>:</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenHLCD.html">AndersenHLCD</a>(pag);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a6c06b12c95a4aa57edc6bef57514a7e1">PointerAnalysis::AndersenSCD_WPA</a>:</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenSCD.html">AndersenSCD</a>(pag);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85accfa4ed42d3a3ac5e4abc403e738427b">PointerAnalysis::AndersenSFR_WPA</a>:</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenSFR.html">AndersenSFR</a>(pag);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>:</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1AndersenWaveDiff.html">AndersenWaveDiff</a>(pag);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">PointerAnalysis::Steensgaard_WPA</a>:</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1Steensgaard.html">Steensgaard</a>(pag);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad6ccf1ce66083278349c5c3111172d78">PointerAnalysis::FSSPARSE_WPA</a>:</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1FlowSensitive.html">FlowSensitive</a>(pag);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">PointerAnalysis::VFS_WPA</a>:</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1VersionedFlowSensitive.html">VersionedFlowSensitive</a>(pag);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">case</span> <a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">PointerAnalysis::TypeCPP_WPA</a>:</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a> = <span class="keyword">new</span> <a class="code" href="classSVF_1_1TypeAnalysis.html">TypeAnalysis</a>(pag);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;This pointer analysis has not been implemented yet.\n&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.push_back(<a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#ae1e217dc18be0ce70bee5ad930cb54c6">analyze</a>();</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">Options::AnderSVFG</a>)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classSVF_1_1SVFGBuilder.html">SVFGBuilder</a> memSSA(<span class="keyword">true</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(SVFUtil::isa&lt;AndersenBase&gt;(<a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>) &amp;&amp; <span class="stringliteral">&quot;supports only andersen/steensgaard for pre-computed SVFG&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <a class="code" href="classSVF_1_1SVFG.html">SVFG</a> *svfg = memSSA.<a class="code" href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">buildFullSVFG</a>((<a class="code" href="classSVF_1_1BVDataPTAImpl.html">BVDataPTAImpl</a>*)<a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>);</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>))</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a> = svfg;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#a1b1d1ad6b3a6c48a9fa07161b582c7fe">Options::PrintAliases</a>)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classSVF_1_1WPAPass.html#abb6e0c5cc5de312ee0285d1854550752">PrintAliasPairs</a>(<a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#abb6e0c5cc5de312ee0285d1854550752"> 155</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1WPAPass.html#abb6e0c5cc5de312ee0285d1854550752">WPAPass::PrintAliasPairs</a>(<a class="code" href="classSVF_1_1PointerAnalysis.html">PointerAnalysis</a>* pta)</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; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> lit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">begin</a>(), elit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); lit != elit; ++lit)</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; {</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node1 = lit-&gt;second;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="classSVF_1_1SVFVar.html">PAGNode</a>* node2 = node1;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVFIR::iterator</a> rit = lit, erit = pag-&gt;<a class="code" href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">end</a>(); rit != erit; ++rit)</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; node2 = rit-&gt;second;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span>(node1==node2)</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun1 = node1-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a53439a493963d16e5a1b5ed36ab6d33e">getFunction</a>();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun2 = node2-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a53439a493963d16e5a1b5ed36ab6d33e">getFunction</a>();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = pta-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a6c01f259ad2379a422d7106ce0255eb8">alias</a>(node1-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>(), node2-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>());</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; (result == <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a> ? <span class="stringliteral">&quot;NoAlias&quot;</span> : <span class="stringliteral">&quot;MayAlias&quot;</span>)</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; &lt;&lt; <span class="stringliteral">&quot; var&quot;</span> &lt;&lt; node1-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; node1-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>()</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; &lt;&lt; <span class="stringliteral">&quot;@&quot;</span> &lt;&lt; (fun1==<span class="keyword">nullptr</span>?<span class="stringliteral">&quot;&quot;</span>:fun1-&gt;getName().str()) &lt;&lt; <span class="stringliteral">&quot;] --&quot;</span></div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; &lt;&lt; <span class="stringliteral">&quot; var&quot;</span> &lt;&lt; node2-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ac3e55ef37aefb411ea4c87b1aa3b1895">getId</a>() &lt;&lt; <span class="stringliteral">&quot;[&quot;</span> &lt;&lt; node2-&gt;<a class="code" href="classSVF_1_1SVFVar.html#a54b2a5ed3ed21e54eaf04182f0338333">getValueName</a>()</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; &lt;&lt; <span class="stringliteral">&quot;@&quot;</span> &lt;&lt; (fun2==<span class="keyword">nullptr</span>?<span class="stringliteral">&quot;&quot;</span>:fun2-&gt;getName().str()) &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; }</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; }</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="l00183"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a5a71ab4d4bd993ff52da60c730d7b57f"> 183</a></span>&#160;<a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="classSVF_1_1WPAPass.html#a5a71ab4d4bd993ff52da60c730d7b57f">WPAPass::alias</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V2)</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"> 186</span>&#160; <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">AliasResult</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* pag = <a class="code" href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">_pta</a>-&gt;<a class="code" href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">getPAG</a>();</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">if</span> (pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(V1) &amp;&amp; pag-&gt;<a class="code" href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">hasValueNode</a>(V2))</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; {</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7">Options::AliasRule</a>.getBits() == 0 || <a class="code" href="classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7">Options::AliasRule</a>.isSet(<a class="code" href="classSVF_1_1WPAPass.html#a4505a1882956feda3cf83c788149394dabb45a604558e2ebff460adb77b4a5d7c">Veto</a>))</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; result = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">for</span> (PTAVector::const_iterator it = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.begin(), eit = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.end();</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; it != eit; ++it)</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; <span class="keywordflow">if</span> ((*it)-&gt;alias(V1, V2) == <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; result = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7">Options::AliasRule</a>.isSet(<a class="code" href="classSVF_1_1WPAPass.html#a4505a1882956feda3cf83c788149394da498ba80d25733b291f391a94500dd4c7">Conservative</a>))</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; result = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">AliasResult::NoAlias</a>;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">for</span> (PTAVector::const_iterator it = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.begin(), eit = <a class="code" href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">ptaVector</a>.end();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; it != eit; ++it)</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; {</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">if</span> ((*it)-&gt;alias(V1, V2) == <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; result = <a class="code" href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">AliasResult::MayAlias</a>;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; }</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;}</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e"> 230</a></span>&#160;<a class="code" href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844">ModRefInfo</a> <a class="code" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">WPAPass::getModRefInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* callInst)</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;{</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>) &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">Options::AnderSVFG</a> &amp;&amp; <span class="stringliteral">&quot;mod-ref query is only support with -ander and -svfg turned on&quot;</span>);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callInst);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>()-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">getModRefInfo</a>(cbn);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;}</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a81277c93b6a89c01a7a1f476bc3d744d"> 241</a></span>&#160;<a class="code" href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844">ModRefInfo</a> <a class="code" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">WPAPass::getModRefInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* callInst, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* V)</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;{</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>) &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">Options::AnderSVFG</a> &amp;&amp; <span class="stringliteral">&quot;mod-ref query is only support with -ander and -svfg turned on&quot;</span>);</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callInst);</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>()-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">getModRefInfo</a>(cbn, V);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classSVF_1_1WPAPass.html#a148cd86101e402e7ed8d3b3dae151d79"> 252</a></span>&#160;<a class="code" href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844">ModRefInfo</a> <a class="code" href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">WPAPass::getModRefInfo</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* callInst1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">CallInst</a>* callInst2)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">Options::PASelected</a>.isSet(<a class="code" href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85abf2f61ee9a5f6228db6587a8182ec9f2">PointerAnalysis::AndersenWaveDiff_WPA</a>) &amp;&amp; <a class="code" href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">Options::AnderSVFG</a> &amp;&amp; <span class="stringliteral">&quot;mod-ref query is only support with -ander and -svfg turned on&quot;</span>);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="classSVF_1_1ICFG.html">ICFG</a>* icfg = <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">getPAG</a>()-&gt;<a class="code" href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">getICFG</a>();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn1 = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callInst1);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn2 = icfg-&gt;<a class="code" href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">getCallICFGNode</a>(callInst2);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">_svfg</a>-&gt;<a class="code" href="classSVF_1_1SVFG.html#a49a910bc4ea6e98d1584e74a018badc9">getMSSA</a>()-&gt;<a class="code" href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">getMRGenerator</a>()-&gt;<a class="code" href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">getModRefInfo</a>(cbn1, cbn2);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;}</div><div class="ttc" id="TypeAnalysis_8h_html"><div class="ttname"><a href="TypeAnalysis_8h.html">TypeAnalysis.h</a></div></div>
70
+ <div class="ttc" id="classSVF_1_1Options_html_ab9db3ae038f26a350afc964952907bd7"><div class="ttname"><a href="classSVF_1_1Options.html#ab9db3ae038f26a350afc964952907bd7">SVF::Options::AliasRule</a></div><div class="ttdeci">static llvm::cl::bits&lt; WPAPass::AliasCheckRule &gt; AliasRule</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00245">Options.h:245</a></div></div>
72
71
  <div class="ttc" id="classSVF_1_1BVDataPTAImpl_html"><div class="ttname"><a href="classSVF_1_1BVDataPTAImpl.html">SVF::BVDataPTAImpl</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysisImpl_8h_source.html#l00042">PointerAnalysisImpl.h:42</a></div></div>
73
72
  <div class="ttc" id="Andersen_8h_html"><div class="ttname"><a href="Andersen_8h.html">Andersen.h</a></div></div>
74
73
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a0d9744b1b0e7a09a6f7af29188e243b7"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a0d9744b1b0e7a09a6f7af29188e243b7">SVF::GenericGraph::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdoc">Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00365">GenericGraph.h:365</a></div></div>
@@ -79,47 +78,45 @@ $(function() {
79
78
  <div class="ttc" id="classSVF_1_1SVFGBuilder_html_a54a713e3989597b11cee70864d0197bd"><div class="ttname"><a href="classSVF_1_1SVFGBuilder.html#a54a713e3989597b11cee70864d0197bd">SVF::SVFGBuilder::buildFullSVFG</a></div><div class="ttdeci">SVFG * buildFullSVFG(BVDataPTAImpl *pta)</div><div class="ttdef"><b>Definition:</b> <a href="SVFGBuilder_8cpp_source.html#l00052">SVFGBuilder.cpp:52</a></div></div>
80
79
  <div class="ttc" id="classSVF_1_1WPAPass_html_ac0f6d1221ee66ac17d0b201d73d7e28a"><div class="ttname"><a href="classSVF_1_1WPAPass.html#ac0f6d1221ee66ac17d0b201d73d7e28a">SVF::WPAPass::_svfg</a></div><div class="ttdeci">SVFG * _svfg</div><div class="ttdoc">svfg generated through -ander pointer analysis </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8h_source.html#l00117">WPAPass.h:117</a></div></div>
81
80
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
82
- <div class="ttc" id="classSVF_1_1WPAPass_html_a7ea8006b7e9237a470dfd34ad633826b"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a7ea8006b7e9237a470dfd34ad633826b">SVF::WPAPass::~WPAPass</a></div><div class="ttdeci">virtual ~WPAPass()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00056">WPAPass.cpp:56</a></div></div>
81
+ <div class="ttc" id="classSVF_1_1WPAPass_html_a7ea8006b7e9237a470dfd34ad633826b"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a7ea8006b7e9237a470dfd34ad633826b">SVF::WPAPass::~WPAPass</a></div><div class="ttdeci">virtual ~WPAPass()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00055">WPAPass.cpp:55</a></div></div>
83
82
  <div class="ttc" id="classSVF_1_1AndersenWaveDiff_html"><div class="ttname"><a href="classSVF_1_1AndersenWaveDiff.html">SVF::AndersenWaveDiff</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00419">Andersen.h:419</a></div></div>
84
83
  <div class="ttc" id="namespaceSVF_html_adc8b60ca7d60cf6c81feae20e4a04c63"><div class="ttname"><a href="namespaceSVF.html#adc8b60ca7d60cf6c81feae20e4a04c63">SVF::CallInst</a></div><div class="ttdeci">llvm::CallInst CallInst</div><div class="ttdoc">LLVM Instructions. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00103">BasicTypes.h:103</a></div></div>
85
84
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ac7c033efd59e2b5fcded79fc3ebdb9d4">SVF::PointerAnalysis::AndersenLCD_WPA</a></div><div class="ttdoc">Lazy cycle detection andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00067">PointerAnalysis.h:67</a></div></div>
86
85
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00045">SVFVariables.h:45</a></div></div>
87
86
  <div class="ttc" id="classSVF_1_1WPAPass_html_a72a66ae158793f5d1bcb37b655db4446"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a72a66ae158793f5d1bcb37b655db4446">SVF::WPAPass::ptaVector</a></div><div class="ttdeci">PTAVector ptaVector</div><div class="ttdoc">all pointer analysis to be executed. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8h_source.html#l00115">WPAPass.h:115</a></div></div>
88
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a088dda60195ab259693977af8414f203"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a088dda60195ab259693977af8414f203">SVF::PointerAnalysis::FSTBHC_WPA</a></div><div class="ttdoc">Sparse flow-sensitive type-based heap cloning WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00079">PointerAnalysis.h:79</a></div></div>
89
87
  <div class="ttc" id="classSVF_1_1VFG_html_a7622e381fbc1601b3f9a8384df2751bd"><div class="ttname"><a href="classSVF_1_1VFG.html#a7622e381fbc1601b3f9a8384df2751bd">SVF::VFG::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdoc">Return SVFIR. </div><div class="ttdef"><b>Definition:</b> <a href="VFG_8h_source.html#l00133">VFG.h:133</a></div></div>
90
- <div class="ttc" id="classSVF_1_1FlowSensitiveTBHC_html"><div class="ttname"><a href="classSVF_1_1FlowSensitiveTBHC.html">SVF::FlowSensitiveTBHC</a></div><div class="ttdef"><b>Definition:</b> <a href="FlowSensitiveTBHC_8h_source.html#l00028">FlowSensitiveTBHC.h:28</a></div></div>
91
88
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_ae919327019b5014f64b754dbdeb07f75"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#ae919327019b5014f64b754dbdeb07f75">SVF::LLVMModuleSet::buildSVFModule</a></div><div class="ttdeci">SVFModule * buildSVFModule(Module &amp;mod)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8cpp_source.html#l00061">LLVMModule.cpp:61</a></div></div>
92
- <div class="ttc" id="classSVF_1_1WPAPass_html_a5a71ab4d4bd993ff52da60c730d7b57f"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a5a71ab4d4bd993ff52da60c730d7b57f">SVF::WPAPass::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00187">WPAPass.cpp:187</a></div></div>
89
+ <div class="ttc" id="classSVF_1_1WPAPass_html_a5a71ab4d4bd993ff52da60c730d7b57f"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a5a71ab4d4bd993ff52da60c730d7b57f">SVF::WPAPass::alias</a></div><div class="ttdeci">virtual AliasResult alias(const Value *V1, const Value *V2)</div><div class="ttdoc">Interface expose to users of our pointer analysis, given Value infos. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00183">WPAPass.cpp:183</a></div></div>
93
90
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
94
91
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943">SVF::AliasResult</a></div><div class="ttdeci">AliasResult</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00195">SVFBasicTypes.h:195</a></div></div>
95
92
  <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
96
- <div class="ttc" id="classSVF_1_1WPAPass_html_a2d6a270c3a71b5963eaed37839355fd3"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a2d6a270c3a71b5963eaed37839355fd3">SVF::WPAPass::runPointerAnalysis</a></div><div class="ttdeci">void runPointerAnalysis(SVFModule *svfModule, u32_t kind)</div><div class="ttdoc">Create pointer analysis according to specified kind and analyze the module. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00094">WPAPass.cpp:94</a></div></div>
97
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">SVF::PointerAnalysis::VFS_WPA</a></div><div class="ttdoc">Versioned sparse flow-sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00080">PointerAnalysis.h:80</a></div></div>
93
+ <div class="ttc" id="classSVF_1_1WPAPass_html_a2d6a270c3a71b5963eaed37839355fd3"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a2d6a270c3a71b5963eaed37839355fd3">SVF::WPAPass::runPointerAnalysis</a></div><div class="ttdeci">void runPointerAnalysis(SVFModule *svfModule, u32_t kind)</div><div class="ttdoc">Create pointer analysis according to specified kind and analyze the module. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00093">WPAPass.cpp:93</a></div></div>
94
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a412254a7738029bf3ee96f5c15a6bec9">SVF::PointerAnalysis::VFS_WPA</a></div><div class="ttdoc">Versioned sparse flow-sensitive WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00079">PointerAnalysis.h:79</a></div></div>
98
95
  <div class="ttc" id="classSVF_1_1MemSSA_html_ab2dfdcf6fb50ba6cacad1254350a5b09"><div class="ttname"><a href="classSVF_1_1MemSSA.html#ab2dfdcf6fb50ba6cacad1254350a5b09">SVF::MemSSA::getMRGenerator</a></div><div class="ttdeci">MRGenerator * getMRGenerator()</div><div class="ttdoc">Return MRGenerator. </div><div class="ttdef"><b>Definition:</b> <a href="MemSSA_8h_source.html#l00320">MemSSA.h:320</a></div></div>
99
96
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85ad24ef5326c26db858c73432aa7e67a0a">SVF::PointerAnalysis::Steensgaard_WPA</a></div><div class="ttdoc">Steensgaard PTA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00074">PointerAnalysis.h:74</a></div></div>
100
97
  <div class="ttc" id="WPAPass_8h_html"><div class="ttname"><a href="WPAPass_8h.html">WPAPass.h</a></div></div>
101
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">SVF::PointerAnalysis::Default_PTA</a></div><div class="ttdoc">default pta without any analysis </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00094">PointerAnalysis.h:94</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85adb3d4cbd8c38c1c498bc51198626a790">SVF::PointerAnalysis::Default_PTA</a></div><div class="ttdoc">default pta without any analysis </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00093">PointerAnalysis.h:93</a></div></div>
102
99
  <div class="ttc" id="classSVF_1_1ICFG_html_adc66b547720b9271e6805edea0b9d01f"><div class="ttname"><a href="classSVF_1_1ICFG.html#adc66b547720b9271e6805edea0b9d01f">SVF::ICFG::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8cpp_source.html#l00240">ICFG.cpp:240</a></div></div>
103
100
  <div class="ttc" id="classSVF_1_1GenericGraph_html_a4bef15157423cef48dc7333a803cd27d"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#a4bef15157423cef48dc7333a803cd27d">SVF::GenericGraph::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>
104
101
  <div class="ttc" id="classSVF_1_1WPAPass_html_a0b57d86a5305aefcd6c8ae4e328d3ab0"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a0b57d86a5305aefcd6c8ae4e328d3ab0">SVF::WPAPass::_pta</a></div><div class="ttdeci">PointerAnalysis * _pta</div><div class="ttdoc">pointer analysis to be executed. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8h_source.html#l00116">WPAPass.h:116</a></div></div>
105
- <div class="ttc" id="classSVF_1_1Options_html_a1211da4c36f1fcc65235891f31d87038"><div class="ttname"><a href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">SVF::Options::PASelected</a></div><div class="ttdeci">static llvm::cl::bits&lt; PointerAnalysis::PTATY &gt; PASelected</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00251">Options.h:251</a></div></div>
102
+ <div class="ttc" id="classSVF_1_1Options_html_a1211da4c36f1fcc65235891f31d87038"><div class="ttname"><a href="classSVF_1_1Options.html#a1211da4c36f1fcc65235891f31d87038">SVF::Options::PASelected</a></div><div class="ttdeci">static llvm::cl::bits&lt; PointerAnalysis::PTATY &gt; PASelected</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00244">Options.h:244</a></div></div>
106
103
  <div class="ttc" id="classSVF_1_1SVFIRBuilder_html"><div class="ttname"><a href="classSVF_1_1SVFIRBuilder.html">SVF::SVFIRBuilder</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIRBuilder_8h_source.html#l00046">SVFIRBuilder.h:46</a></div></div>
107
104
  <div class="ttc" id="classSVF_1_1GenericGraph_html_ac213302cf5c7cdf3b66f7b18649d0fbc"><div class="ttname"><a href="classSVF_1_1GenericGraph.html#ac213302cf5c7cdf3b66f7b18649d0fbc">SVF::GenericGraph&lt; SVFVar, SVFStmt &gt;::iterator</a></div><div class="ttdeci">IDToNodeMapTy::iterator iterator</div><div class="ttdoc">Node Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00342">GenericGraph.h:342</a></div></div>
108
105
  <div class="ttc" id="classSVF_1_1AndersenHCD_html"><div class="ttname"><a href="classSVF_1_1AndersenHCD.html">SVF::AndersenHCD</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00548">Andersen.h:548</a></div></div>
109
106
  <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00070">BasicTypes.h:70</a></div></div>
110
- <div class="ttc" id="classSVF_1_1Options_html_a30cbb0b3633c769c92f4625680ec17e3"><div class="ttname"><a href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">SVF::Options::AnderSVFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; AnderSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00248">Options.h:248</a></div></div>
107
+ <div class="ttc" id="classSVF_1_1Options_html_a30cbb0b3633c769c92f4625680ec17e3"><div class="ttname"><a href="classSVF_1_1Options.html#a30cbb0b3633c769c92f4625680ec17e3">SVF::Options::AnderSVFG</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; AnderSVFG</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00241">Options.h:241</a></div></div>
111
108
  <div class="ttc" id="classSVF_1_1AndersenLCD_html"><div class="ttname"><a href="classSVF_1_1AndersenLCD.html">SVF::AndersenLCD</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00469">Andersen.h:469</a></div></div>
112
109
  <div class="ttc" id="classSVF_1_1AndersenSCD_html"><div class="ttname"><a href="classSVF_1_1AndersenSCD.html">SVF::AndersenSCD</a></div><div class="ttdef"><b>Definition:</b> <a href="AndersenSFR_8h_source.html#l00044">AndersenSFR.h:44</a></div></div>
113
110
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a46f5e74d5f4b0a2d134e68d262079c3f">SVF::PointerAnalysis::AndersenHCD_WPA</a></div><div class="ttdoc">Hybird cycle detection andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00068">PointerAnalysis.h:68</a></div></div>
114
- <div class="ttc" id="classSVF_1_1Options_html_a1b1d1ad6b3a6c48a9fa07161b582c7fe"><div class="ttname"><a href="classSVF_1_1Options.html#a1b1d1ad6b3a6c48a9fa07161b582c7fe">SVF::Options::PrintAliases</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintAliases</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00250">Options.h:250</a></div></div>
115
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00206">PointerAnalysis.h:206</a></div></div>
116
- <div class="ttc" id="classSVF_1_1WPAPass_html_abb6e0c5cc5de312ee0285d1854550752"><div class="ttname"><a href="classSVF_1_1WPAPass.html#abb6e0c5cc5de312ee0285d1854550752">SVF::WPAPass::PrintAliasPairs</a></div><div class="ttdeci">virtual void PrintAliasPairs(PointerAnalysis *pta)</div><div class="ttdoc">Print all alias pairs. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00159">WPAPass.cpp:159</a></div></div>
111
+ <div class="ttc" id="classSVF_1_1Options_html_a1b1d1ad6b3a6c48a9fa07161b582c7fe"><div class="ttname"><a href="classSVF_1_1Options.html#a1b1d1ad6b3a6c48a9fa07161b582c7fe">SVF::Options::PrintAliases</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; PrintAliases</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00243">Options.h:243</a></div></div>
112
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a240219c2dc4f5cc5f85445e18c79b83b"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a240219c2dc4f5cc5f85445e18c79b83b">SVF::PointerAnalysis::getPAG</a></div><div class="ttdeci">SVFIR * getPAG() const</div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00205">PointerAnalysis.h:205</a></div></div>
113
+ <div class="ttc" id="classSVF_1_1WPAPass_html_abb6e0c5cc5de312ee0285d1854550752"><div class="ttname"><a href="classSVF_1_1WPAPass.html#abb6e0c5cc5de312ee0285d1854550752">SVF::WPAPass::PrintAliasPairs</a></div><div class="ttdeci">virtual void PrintAliasPairs(PointerAnalysis *pta)</div><div class="ttdoc">Print all alias pairs. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00155">WPAPass.cpp:155</a></div></div>
117
114
  <div class="ttc" id="classSVF_1_1Steensgaard_html"><div class="ttname"><a href="classSVF_1_1Steensgaard.html">SVF::Steensgaard</a></div><div class="ttdef"><b>Definition:</b> <a href="Steensgaard_8h_source.html#l00020">Steensgaard.h:20</a></div></div>
118
115
  <div class="ttc" id="namespaceSVF_html_a3e2b6638b0fbca37846e953142bcc844"><div class="ttname"><a href="namespaceSVF.html#a3e2b6638b0fbca37846e953142bcc844">SVF::ModRefInfo</a></div><div class="ttdeci">ModRefInfo</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00187">SVFBasicTypes.h:187</a></div></div>
119
116
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85a99d50c1712075e4c3278fc4fa4c9cd2f">SVF::PointerAnalysis::AndersenHLCD_WPA</a></div><div class="ttdoc">Hybird lazy cycle detection andersen-style WPA. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00069">PointerAnalysis.h:69</a></div></div>
120
117
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943aef15fd8989d8dd9576b3fbb2aabc118f">SVF::MayAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00198">SVFBasicTypes.h:198</a></div></div>
121
118
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
122
- <div class="ttc" id="classSVF_1_1SVFVar_html_a53439a493963d16e5a1b5ed36ab6d33e"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a53439a493963d16e5a1b5ed36ab6d33e">SVF::SVFVar::getFunction</a></div><div class="ttdeci">virtual const Function * getFunction() const</div><div class="ttdoc">Return the function that this SVFVar resides in. Return nullptr if it is a global or constantexpr nod...</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00131">SVFVariables.h:131</a></div></div>
119
+ <div class="ttc" id="classSVF_1_1SVFVar_html_a53439a493963d16e5a1b5ed36ab6d33e"><div class="ttname"><a href="classSVF_1_1SVFVar.html#a53439a493963d16e5a1b5ed36ab6d33e">SVF::SVFVar::getFunction</a></div><div class="ttdeci">virtual const Function * getFunction() const</div><div class="ttdoc">Return the function that this SVFVar resides in. Return nullptr if it is a global or constantexpr nod...</div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00127">SVFVariables.h:127</a></div></div>
123
120
  <div class="ttc" id="classSVF_1_1IRGraph_html_aceb17dfbe137658625e16291127267d1"><div class="ttname"><a href="classSVF_1_1IRGraph.html#aceb17dfbe137658625e16291127267d1">SVF::IRGraph::hasValueNode</a></div><div class="ttdeci">bool hasValueNode(const Value *V)</div><div class="ttdef"><b>Definition:</b> <a href="IRGraph_8h_source.html#l00128">IRGraph.h:128</a></div></div>
124
121
  <div class="ttc" id="classSVF_1_1AndersenHLCD_html"><div class="ttname"><a href="classSVF_1_1AndersenHLCD.html">SVF::AndersenHLCD</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00624">Andersen.h:624</a></div></div>
125
122
  <div class="ttc" id="classSVF_1_1WPAPass_html_a2674527c92cdef223e655d449f0811d4"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a2674527c92cdef223e655d449f0811d4">SVF::WPAPass::ID</a></div><div class="ttdeci">static char ID</div><div class="ttdoc">Pass ID. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8h_source.html#l00060">WPAPass.h:60</a></div></div>
@@ -138,7 +135,7 @@ $(function() {
138
135
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
139
136
  <div class="ttc" id="Steensgaard_8h_html"><div class="ttname"><a href="Steensgaard_8h.html">Steensgaard.h</a></div></div>
140
137
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_acf40310917909e4234282c0695a43160"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">SVF::LLVMModuleSet::getLLVMModuleSet</a></div><div class="ttdeci">static LLVMModuleSet * getLLVMModuleSet()</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00070">LLVMModule.h:70</a></div></div>
141
- <div class="ttc" id="classSVF_1_1WPAPass_html_a567f818fa7b29142b18cb39e5c063a4e"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">SVF::WPAPass::getModRefInfo</a></div><div class="ttdeci">virtual ModRefInfo getModRefInfo(const CallInst *callInst)</div><div class="ttdoc">Interface of mod-ref analysis to determine whether a CallSite instruction can mod or ref any memory l...</div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00234">WPAPass.cpp:234</a></div></div>
138
+ <div class="ttc" id="classSVF_1_1WPAPass_html_a567f818fa7b29142b18cb39e5c063a4e"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a567f818fa7b29142b18cb39e5c063a4e">SVF::WPAPass::getModRefInfo</a></div><div class="ttdeci">virtual ModRefInfo getModRefInfo(const CallInst *callInst)</div><div class="ttdoc">Interface of mod-ref analysis to determine whether a CallSite instruction can mod or ref any memory l...</div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00230">WPAPass.cpp:230</a></div></div>
142
139
  <div class="ttc" id="FlowSensitive_8h_html"><div class="ttname"><a href="FlowSensitive_8h.html">FlowSensitive.h</a></div></div>
143
140
  <div class="ttc" id="classSVF_1_1SVFG_html"><div class="ttname"><a href="classSVF_1_1SVFG.html">SVF::SVFG</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFG_8h_source.html#l00065">SVFG.h:65</a></div></div>
144
141
  <div class="ttc" id="cuddInt_8c_html_a8b2e13c78efca330f06b6ddcd7464b41"><div class="ttname"><a href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a></div><div class="ttdeci">static int result</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l07466">cuddInt.c:7466</a></div></div>
@@ -154,11 +151,11 @@ $(function() {
154
151
  <div class="ttc" id="classSVF_1_1Andersen_html"><div class="ttname"><a href="classSVF_1_1Andersen.html">SVF::Andersen</a></div><div class="ttdef"><b>Definition:</b> <a href="Andersen_8h_source.html#l00149">Andersen.h:149</a></div></div>
155
152
  <div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
156
153
  <div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
157
- <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">SVF::PointerAnalysis::TypeCPP_WPA</a></div><div class="ttdoc">Type-based analysis for C++. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00085">PointerAnalysis.h:85</a></div></div>
154
+ <div class="ttc" id="classSVF_1_1PointerAnalysis_html_a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html#a0b182ac680cce0547dbe7714c870ca85acc2e7cbdd04a614a3b6189d2f01042f3">SVF::PointerAnalysis::TypeCPP_WPA</a></div><div class="ttdoc">Type-based analysis for C++. </div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00084">PointerAnalysis.h:84</a></div></div>
158
155
  <div class="ttc" id="classSVF_1_1MRGenerator_html_ac14c99ee6064fc9cf30120a83c78e702"><div class="ttname"><a href="classSVF_1_1MRGenerator.html#ac14c99ee6064fc9cf30120a83c78e702">SVF::MRGenerator::getModRefInfo</a></div><div class="ttdeci">ModRefInfo getModRefInfo(const CallICFGNode *cs)</div><div class="ttdef"><b>Definition:</b> <a href="MemRegion_8cpp_source.html#l00720">MemRegion.cpp:720</a></div></div>
159
156
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
160
157
  <div class="ttc" id="AndersenSFR_8h_html"><div class="ttname"><a href="AndersenSFR_8h.html">AndersenSFR.h</a></div></div>
161
- <div class="ttc" id="classSVF_1_1WPAPass_html_a394dcd976c1ef08d9cadcba8f5d07c75"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">SVF::WPAPass::runOnModule</a></div><div class="ttdeci">virtual void runOnModule(SVFModule *svfModule)</div><div class="ttdoc">Run pointer analysis on SVFModule. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00071">WPAPass.cpp:71</a></div></div>
158
+ <div class="ttc" id="classSVF_1_1WPAPass_html_a394dcd976c1ef08d9cadcba8f5d07c75"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">SVF::WPAPass::runOnModule</a></div><div class="ttdeci">virtual void runOnModule(SVFModule *svfModule)</div><div class="ttdoc">Run pointer analysis on SVFModule. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00070">WPAPass.cpp:70</a></div></div>
162
159
  <div class="ttc" id="classSVF_1_1AndersenSFR_html"><div class="ttname"><a href="classSVF_1_1AndersenSFR.html">SVF::AndersenSFR</a></div><div class="ttdef"><b>Definition:</b> <a href="AndersenSFR_8h_source.html#l00102">AndersenSFR.h:102</a></div></div>
163
160
  <div class="ttc" id="namespaceSVF_html_a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239"><div class="ttname"><a href="namespaceSVF.html#a61c01e2e687ab3a001fb806737583943afdd83ddff93d38902f07775cd36df239">SVF::NoAlias</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00197">SVFBasicTypes.h:197</a></div></div>
164
161
  <div class="ttc" id="classSVF_1_1PointerAnalysis_html"><div class="ttname"><a href="classSVF_1_1PointerAnalysis.html">SVF::PointerAnalysis</a></div><div class="ttdef"><b>Definition:</b> <a href="PointerAnalysis_8h_source.html#l00057">PointerAnalysis.h:57</a></div></div>