svf-tools 1.0.458 → 1.0.461

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 (410) hide show
  1. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +4 -4
  3. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +11 -11
  5. package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
  6. package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
  7. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
  8. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +3 -4
  9. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +14 -14
  10. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
  12. package/SVF-doxygen/html/html/CHG_8cpp_source.html +8 -8
  13. package/SVF-doxygen/html/html/CHG_8h_source.html +2 -2
  14. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +16 -16
  15. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  16. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +4 -4
  17. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/ConsG_8h_source.html +3 -3
  19. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +7 -7
  20. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +1 -1
  21. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +19 -19
  23. package/SVF-doxygen/html/html/DCHG_8h_source.html +8 -8
  24. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
  25. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/DDAPass_8h_source.html +2 -3
  27. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
  28. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +8 -8
  29. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +4 -4
  30. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +6 -6
  31. package/SVF-doxygen/html/html/ExeState_8cpp.html +1 -0
  32. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +26 -25
  33. package/SVF-doxygen/html/html/ExeState_8h_source.html +13 -13
  34. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +3 -3
  35. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +3 -3
  36. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
  37. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +4 -4
  39. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
  40. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +8 -8
  41. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +2 -2
  42. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +5 -5
  43. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +2 -2
  44. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +2 -2
  45. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
  46. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +7 -7
  47. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  48. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
  49. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
  51. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +6 -6
  52. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +7 -7
  53. package/SVF-doxygen/html/html/IRGraph_8h_source.html +21 -21
  54. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
  55. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +3 -3
  56. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +13 -13
  57. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +10 -10
  58. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +4 -4
  59. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +1 -1
  60. package/SVF-doxygen/html/html/LocationSet_8cpp.html +1 -0
  61. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +15 -14
  62. package/SVF-doxygen/html/html/LocationSet_8h_source.html +10 -10
  63. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +6 -6
  64. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
  65. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +10 -10
  66. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
  67. package/SVF-doxygen/html/html/MHP_8cpp.html +2 -2
  68. package/SVF-doxygen/html/html/MHP_8cpp_source.html +46 -46
  69. package/SVF-doxygen/html/html/MHP_8h.html +1 -0
  70. package/SVF-doxygen/html/html/MHP_8h_source.html +102 -101
  71. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
  72. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +4 -4
  73. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +4 -4
  74. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +14 -14
  75. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +10 -10
  76. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +9 -9
  77. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  78. package/SVF-doxygen/html/html/MTA_8cpp_source.html +5 -5
  79. package/SVF-doxygen/html/html/MTA_8h_source.html +4 -5
  80. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
  81. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  82. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +12 -12
  83. package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
  84. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +6 -6
  85. package/SVF-doxygen/html/html/MemSSA_8h_source.html +3 -3
  86. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +2 -2
  87. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
  88. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  89. package/SVF-doxygen/html/html/PCG_8cpp_source.html +4 -4
  90. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  91. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
  92. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  93. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +21 -21
  94. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +5 -5
  95. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +3 -3
  96. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  97. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +5 -5
  98. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +2 -2
  99. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +23 -23
  100. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +6 -6
  101. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +68 -50
  102. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +51 -50
  103. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +3 -4
  104. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +3 -3
  105. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  106. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +35 -41
  107. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  108. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +3 -3
  109. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
  110. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +9 -9
  111. package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
  112. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +52 -52
  113. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
  114. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +19 -19
  115. package/SVF-doxygen/html/html/SVFIR_8h_source.html +19 -19
  116. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  117. package/SVF-doxygen/html/html/SVFModule_8h_source.html +2 -2
  118. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
  119. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
  120. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +6 -7
  121. package/SVF-doxygen/html/html/SVFUtil_8h.html +6 -3
  122. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +12 -12
  123. package/SVF-doxygen/html/html/SVFVariables_8cpp.html +1 -0
  124. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +35 -32
  125. package/SVF-doxygen/html/html/SVFVariables_8h.html +0 -1
  126. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +141 -143
  127. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +2 -2
  128. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  129. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +6 -6
  130. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
  131. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
  132. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +54 -54
  133. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
  134. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp.html +1 -0
  135. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +99 -95
  136. package/SVF-doxygen/html/html/SymbolTableInfo_8h.html +0 -1
  137. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +144 -146
  138. package/SVF-doxygen/html/html/TCT_8cpp.html +1 -0
  139. package/SVF-doxygen/html/html/TCT_8cpp_source.html +41 -40
  140. package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
  141. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +5 -5
  142. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +4 -4
  143. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +6 -6
  144. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
  145. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +2 -2
  146. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +22 -22
  147. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +4 -4
  148. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +0 -4
  149. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +67 -69
  150. package/SVF-doxygen/html/html/VFGNode_8h_source.html +3 -3
  151. package/SVF-doxygen/html/html/VFG_8cpp_source.html +10 -10
  152. package/SVF-doxygen/html/html/VFG_8h_source.html +3 -3
  153. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +4 -4
  154. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +2 -2
  155. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +3 -3
  156. package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -4
  157. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +1 -1
  158. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +1 -1
  159. package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
  160. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +4 -4
  161. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +11 -11
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +2 -2
  163. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
  164. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +4 -4
  165. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +5 -5
  166. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  167. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +4 -4
  168. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +7 -7
  169. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +3 -3
  170. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +4 -4
  171. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs-members.html +1 -1
  172. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +6 -6
  173. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +20 -20
  174. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +6 -6
  175. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +3 -3
  176. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  177. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge-members.html +20 -22
  178. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +16 -20
  179. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  180. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar-members.html +1 -1
  181. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +15 -15
  182. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar-members.html +1 -1
  183. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +16 -16
  184. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar-members.html +1 -1
  185. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +16 -16
  186. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +3 -3
  187. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +11 -11
  188. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +53 -53
  189. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +1 -1
  190. package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
  191. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +9 -9
  192. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +1 -1
  193. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +2 -2
  194. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +1 -1
  195. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar-members.html +1 -1
  196. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +20 -20
  197. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar-members.html +1 -1
  198. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +18 -18
  199. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +40 -40
  200. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar-members.html +1 -1
  201. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +22 -22
  202. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +1 -1
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
  204. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +4 -4
  205. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +9 -9
  206. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +10 -10
  207. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +183 -183
  208. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +1 -1
  210. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
  211. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
  212. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar-members.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +45 -45
  214. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +2 -2
  215. package/SVF-doxygen/html/html/classSVF_1_1GepValVar-members.html +1 -1
  216. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +29 -29
  217. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +1 -1
  218. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +10 -10
  219. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +10 -10
  220. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +21 -21
  221. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge-members.html +31 -34
  222. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +12 -100
  223. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +1 -1
  224. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  225. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +1 -1
  226. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge-members.html +17 -19
  227. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +11 -15
  228. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +2 -2
  229. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +2 -2
  230. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +2 -2
  231. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +7 -7
  232. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +29 -29
  233. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +20 -20
  234. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +10 -11
  235. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +177 -177
  236. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +16 -16
  237. package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +1 -1
  238. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +13 -13
  239. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +10 -10
  240. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +25 -26
  241. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +5 -5
  242. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +8 -8
  243. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +91 -91
  244. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +9 -9
  245. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets-members.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +5 -5
  248. package/SVF-doxygen/html/html/classSVF_1_1MutablePTData.html +2 -2
  249. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +99 -99
  251. package/SVF-doxygen/html/html/classSVF_1_1ObjVar-members.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +35 -35
  253. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  254. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +9 -9
  255. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +4 -4
  256. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +3 -3
  257. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +1 -1
  258. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +2 -2
  259. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +24 -24
  260. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +9 -9
  261. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +2 -2
  262. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +2 -2
  263. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +38 -38
  264. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +4 -4
  265. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge-members.html +19 -21
  266. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +17 -21
  267. package/SVF-doxygen/html/html/classSVF_1_1RetPN-members.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +19 -19
  269. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +1 -1
  270. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +6 -6
  271. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
  272. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +32 -32
  273. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +12 -12
  274. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +3 -3
  275. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +9 -9
  276. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal-members.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +6 -6
  278. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +62 -62
  279. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +74 -74
  280. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  281. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
  282. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +7 -7
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFVar-members.html +1 -1
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +99 -107
  285. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +3 -3
  286. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +4 -4
  287. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +7 -7
  288. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +38 -38
  290. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +84 -84
  291. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +2 -2
  292. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +231 -247
  293. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +88 -88
  294. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +5 -5
  295. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
  296. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge-members.html +17 -19
  298. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +12 -16
  299. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +36 -36
  301. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +13 -13
  303. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  304. package/SVF-doxygen/html/html/classSVF_1_1ValVar-members.html +1 -1
  305. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +24 -24
  306. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN-members.html +1 -1
  307. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +19 -19
  308. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +3 -3
  309. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +4 -4
  310. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1WPAPass-members.html +1 -1
  312. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +8 -8
  313. package/SVF-doxygen/html/html/cuddInt_8c.html +4 -2
  314. package/SVF-doxygen/html/html/cuddInt_8c_source.html +2 -1
  315. package/SVF-doxygen/html/html/cuddInt_8h.html +4 -2
  316. package/SVF-doxygen/html/html/functions_a.html +5 -8
  317. package/SVF-doxygen/html/html/functions_c.html +9 -5
  318. package/SVF-doxygen/html/html/functions_f.html +6 -4
  319. package/SVF-doxygen/html/html/functions_func.html +10 -13
  320. package/SVF-doxygen/html/html/functions_func_g.html +11 -12
  321. package/SVF-doxygen/html/html/functions_func_h.html +1 -1
  322. package/SVF-doxygen/html/html/functions_func_i.html +1 -1
  323. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  324. package/SVF-doxygen/html/html/functions_g.html +11 -12
  325. package/SVF-doxygen/html/html/functions_h.html +1 -1
  326. package/SVF-doxygen/html/html/functions_i.html +1 -1
  327. package/SVF-doxygen/html/html/functions_l.html +3 -3
  328. package/SVF-doxygen/html/html/functions_m.html +1 -4
  329. package/SVF-doxygen/html/html/functions_n.html +3 -3
  330. package/SVF-doxygen/html/html/functions_o.html +14 -14
  331. package/SVF-doxygen/html/html/functions_p.html +11 -11
  332. package/SVF-doxygen/html/html/functions_r.html +7 -5
  333. package/SVF-doxygen/html/html/functions_s.html +7 -7
  334. package/SVF-doxygen/html/html/functions_t.html +6 -4
  335. package/SVF-doxygen/html/html/functions_v.html +3 -3
  336. package/SVF-doxygen/html/html/functions_vars_m.html +0 -3
  337. package/SVF-doxygen/html/html/globals_c.html +103 -100
  338. package/SVF-doxygen/html/html/globals_s.html +6 -10
  339. package/SVF-doxygen/html/html/globals_type.html +3 -0
  340. package/SVF-doxygen/html/html/namespaceSVF.html +31 -67
  341. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +105 -63
  342. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +27 -27
  343. package/SVF-doxygen/html/html/namespacemembers_c.html +0 -3
  344. package/SVF-doxygen/html/html/namespacemembers_func.html +4 -1
  345. package/SVF-doxygen/html/html/namespacemembers_g.html +1 -1
  346. package/SVF-doxygen/html/html/namespacemembers_s.html +3 -3
  347. package/SVF-doxygen/html/html/namespacemembers_type.html +0 -6
  348. package/SVF-doxygen/html/html/search/all_1.js +0 -1
  349. package/SVF-doxygen/html/html/search/all_10.js +8 -8
  350. package/SVF-doxygen/html/html/search/all_12.js +3 -3
  351. package/SVF-doxygen/html/html/search/all_13.js +10 -11
  352. package/SVF-doxygen/html/html/search/all_14.js +6 -6
  353. package/SVF-doxygen/html/html/search/all_16.js +1 -1
  354. package/SVF-doxygen/html/html/search/all_3.js +2 -2
  355. package/SVF-doxygen/html/html/search/all_6.js +1 -1
  356. package/SVF-doxygen/html/html/search/all_7.js +4 -4
  357. package/SVF-doxygen/html/html/search/all_8.js +1 -1
  358. package/SVF-doxygen/html/html/search/all_9.js +1 -1
  359. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  360. package/SVF-doxygen/html/html/search/all_d.js +0 -1
  361. package/SVF-doxygen/html/html/search/all_e.js +6 -6
  362. package/SVF-doxygen/html/html/search/all_f.js +3 -3
  363. package/SVF-doxygen/html/html/search/functions_0.js +0 -1
  364. package/SVF-doxygen/html/html/search/functions_10.js +3 -3
  365. package/SVF-doxygen/html/html/search/functions_6.js +4 -4
  366. package/SVF-doxygen/html/html/search/functions_7.js +1 -1
  367. package/SVF-doxygen/html/html/search/functions_8.js +1 -1
  368. package/SVF-doxygen/html/html/search/functions_e.js +1 -1
  369. package/SVF-doxygen/html/html/search/typedefs_11.js +0 -1
  370. package/SVF-doxygen/html/html/search/typedefs_2.js +1 -1
  371. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  372. package/SVF-doxygen/html/html/search/variables_d.js +0 -1
  373. package/SVF-doxygen/html/html/search/variables_e.js +3 -3
  374. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +3 -3
  375. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +3 -3
  376. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +3 -3
  377. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +1 -1
  378. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +2 -2
  379. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01TCT_01_5_01_4.html +14 -14
  380. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  381. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  382. package/SVF-doxygen/html/html/svf-ex_8cpp.html +4 -4
  383. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +3 -3
  384. package/include/DDA/DDAPass.h +1 -1
  385. package/include/Graphs/SVFGEdge.h +0 -12
  386. package/include/MTA/LockResultValidator.h +1 -1
  387. package/include/MTA/MHP.h +1 -0
  388. package/include/MTA/MTA.h +1 -1
  389. package/include/MTA/MTAAnnotator.h +1 -1
  390. package/include/MTA/MTAResultValidator.h +1 -1
  391. package/include/MemoryModel/SVFVariables.h +1 -8
  392. package/include/MemoryModel/SymbolTableInfo.h +2 -22
  393. package/include/SVF-FE/BasicTypes.h +1 -0
  394. package/include/SVF-FE/BreakConstantExpr.h +2 -2
  395. package/include/Util/BasicTypes.h +1 -3
  396. package/include/Util/SVFBasicTypes.h +1 -1
  397. package/include/Util/SVFUtil.h +16 -1
  398. package/include/WPA/WPAPass.h +1 -1
  399. package/lib/MTA/LockResultValidator.cpp +2 -2
  400. package/lib/MTA/MTAResultValidator.cpp +2 -2
  401. package/lib/MTA/TCT.cpp +1 -0
  402. package/lib/MemoryModel/LocationSet.cpp +1 -0
  403. package/lib/MemoryModel/SVFVariables.cpp +10 -1
  404. package/lib/MemoryModel/SymbolTableInfo.cpp +26 -0
  405. package/lib/SVF-FE/DCHG.cpp +8 -8
  406. package/lib/Util/ExeState.cpp +1 -0
  407. package/lib/Util/PTAStat.cpp +11 -3
  408. package/lib/Util/SVFUtil.cpp +3 -3
  409. package/lib/Util/ThreadAPI.cpp +12 -4
  410. package/package.json +1 -1
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">SVFUtil.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SVFUtil_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- SVFUtil.h -- Analysis helper functions----------------------------//</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"> * SVFUtil.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 11, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui, dye</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef AnalysisUtil_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define AnalysisUtil_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastcluster_8h.html">FastCluster/fastcluster.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMModule_8h.html">SVF-FE/LLVMModule.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * Util class to assist pointer analysis</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">namespace </span>SVFUtil</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61"> 49</a></span>&#160;<span class="keyword">inline</span> std::ostream &amp;<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</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="keywordflow">return</span> std::cout;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc"> 55</a></span>&#160;<span class="keyword">inline</span> std::ostream &amp;<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">errs</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; <span class="keywordflow">return</span> std::cerr;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> To, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> To, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3">dumpPointsToSet</a>(<span class="keywordtype">unsigned</span> node, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> To) ;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442">dumpSparseSet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; To);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61">dumpAliasSet</a>(<span class="keywordtype">unsigned</span> node, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> To) ;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">sucMsg</a>(std::string msg);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">wrnMsg</a>(std::string msg);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(std::string msg);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(std::string msg);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08">bugMsg1</a>(std::string msg);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">bugMsg2</a>(std::string msg);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553">bugMsg3</a>(std::string msg);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(std::string msg);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3">reportMemoryUsageKB</a>(<span class="keyword">const</span> std::string&amp; infor, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">getMemoryUsageKB</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>* vmrss_kb, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>* vmsize_kb);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">increaseStackSize</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aa5ce14119a6e3b0b6022753ddd5890f3"> 105</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa5ce14119a6e3b0b6022753ddd5890f3">cmpPts</a> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; lpts,<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() != rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>())</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() &lt; rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>());</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> bit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> rbit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), reit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span> (; bit != eit &amp;&amp; rbit != reit; bit++, rbit++)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (*bit != *rbit)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> (*bit &lt; *rbit);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;}</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a8f749354b7e882ef3e5bf5081fa715b5"> 123</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8f749354b7e882ef3e5bf5081fa715b5">cmpNodeBS</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; lpts,<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; rpts)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (lpts.count() != rpts.count())</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> (lpts.count() &lt; rpts.count());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; NodeBS::iterator bit = lpts.begin(), eit = lpts.end();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; NodeBS::iterator rbit = rpts.begin(), reit = rpts.end();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span> (; bit != eit &amp;&amp; rbit != reit; bit++, rbit++)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (*bit != *rbit)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> (*bit &lt; *rbit);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1equalPointsTo.html"> 141</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1equalPointsTo.html">equalPointsTo</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"><a class="line" href="structSVF_1_1SVFUtil_1_1equalPointsTo.html#a4a7e42b2cca7e54766ce7657fefb91f9"> 143</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1equalPointsTo.html#a4a7e42b2cca7e54766ce7657fefb91f9">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa5ce14119a6e3b0b6022753ddd5890f3">SVFUtil::cmpPts</a>(lhs, rhs);</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="namespaceSVF_1_1SVFUtil.html#a68302f07b13f6e1f39aace5699762c41">equalPointsTo</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1equalNodeBS.html"> 149</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1equalNodeBS.html">equalNodeBS</a></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1equalNodeBS.html#a023a5352ff198ab9f2e0dbc2a5eadc9e"> 151</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1equalNodeBS.html#a023a5352ff198ab9f2e0dbc2a5eadc9e">operator()</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8f749354b7e882ef3e5bf5081fa715b5">SVFUtil::cmpNodeBS</a>(lhs, rhs);</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;} <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c2b39ae857d78ed9dda83880e703b0f">equalNodeBS</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a86ebab122895189be57637b84adc7642"> 157</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86ebab122895189be57637b84adc7642">ptsToNodeBS</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;pts)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> nbs;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts) nbs.set(o);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> nbs;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2"> 164</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;PointsTo, equalPointsTo&gt;</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2">PointsToList</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af4ceddbe4d57b24e80201bc895f73810">dumpPointsToList</a>(<span class="keyword">const</span> PointsToList&amp; ptl);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ad2c53be5490882768d51aa894b37cbf1"> 167</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad2c53be5490882768d51aa894b37cbf1">isIntrinsicFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (func &amp;&amp; (func-&gt;getIntrinsicID() == llvm::Intrinsic::donothing ||</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_addr ||</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_declare ||</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_label ||</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_value))</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80"> 181</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">llvm::CallBase</a>* call = llvm::dyn_cast&lt;llvm::CallBase&gt;(inst))</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = call-&gt;getCalledFunction();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ad2c53be5490882768d51aa894b37cbf1">isIntrinsicFun</a>(func))</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;}</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526"> 196</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;CallBase&gt;(inst);</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"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854"> 201</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</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">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(val))</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91"> 209</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(inst))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(inst);</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;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9"> 217</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;not a callsite?&quot;</span>);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs(const_cast&lt;Instruction*&gt;(inst));</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> cs;</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="l00225"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757"> 225</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757">getFunction</a>(<a class="code" href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">StringRef</a> name)</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; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmModuleset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</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; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>(); ++i)</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="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> *mod = llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(i);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; fun = mod-&gt;getFunction(name);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span>(fun)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28"> 243</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">getGlobalRep</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;hasGlobalRep(gvar))</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">getGlobalRep</a>(gvar);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> val;</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="l00254"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637"> 254</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;{</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">if</span>(fun == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmModuleset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>();</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFun = llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration() &amp;&amp; llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#abc83c5da519d2d05133106d92df8053e">getDefinition</a>(fun);</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">return</span> svfFun;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;}</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d"> 266</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs)</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;{</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="comment">// FIXME: do we need to strip-off the casts here to discover more library functions</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>()-&gt;stripPointerCasts());</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(callee);</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;}</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af26c7636bfef7ab2a36cccdcf12c3538"> 273</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;{</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(inst))</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs(const_cast&lt;Instruction*&gt;(inst));</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;}</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Data&gt;</div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a36c91f952a69875c33d4bd0b05a27ff2"> 291</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a36c91f952a69875c33d4bd0b05a27ff2">mergePtsOccMaps</a>(<a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, unsigned&gt;</a> &amp;to, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, unsigned&gt;</a> from)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;{</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, unsigned&gt;::value_type</a> &amp;ptocc : from)</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; {</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; to[ptocc.first] += ptocc.second;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; }</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;}</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160">hclustMethodToString</a>(<a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dd">hclust_fast_methods</a> method);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet&gt;</div><div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7"> 304</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">insertKey</a>(<span class="keyword">const</span> Key &amp;key, KeySet &amp;keySet)</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;{</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; keySet.insert(key);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;}</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4f75b8313eb2b1e5a4c798a01cb99471"> 310</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">insertKey</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> &amp;key, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;keySet)</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;{</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; keySet.set(key);</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;}</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet&gt;</div><div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9"> 317</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">removeKey</a>(<span class="keyword">const</span> Key &amp;key, KeySet &amp;keySet)</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;{</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; keySet.erase(key);</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;}</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aa59af7fc01a534662b3b1524186ef97e"> 323</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">removeKey</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> &amp;key, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;keySet)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;{</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; keySet.reset(key);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;}</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">timeLimitReached</a>(<span class="keywordtype">int</span> signum);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70">startAnalysisLimitTimer</a>(<span class="keywordtype">unsigned</span> timeLimit);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5">stopAnalysisLimitTimer</a>(<span class="keywordtype">bool</span> limitTimerSet);</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;} <span class="comment">// End namespace SVFUtil</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* AnalysisUtil_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
69
+ <a href="SVFUtil_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- SVFUtil.h -- Analysis helper functions----------------------------//</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"> * SVFUtil.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 11, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui, dye</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef AnalysisUtil_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define AnalysisUtil_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fastcluster_8h.html">FastCluster/fastcluster.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMModule_8h.html">SVF-FE/LLVMModule.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;time.h&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;{</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> * Util class to assist pointer analysis</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">namespace </span>SVFUtil</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61"> 49</a></span>&#160;<span class="keyword">inline</span> std::ostream &amp;<a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</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="keywordflow">return</span> std::cout;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;}</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc"> 55</a></span>&#160;<span class="keyword">inline</span> std::ostream &amp;<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">errs</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; <span class="keywordflow">return</span> std::cerr;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;}</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> To, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> To, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3">dumpPointsToSet</a>(<span class="keywordtype">unsigned</span> node, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> To) ;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442">dumpSparseSet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; To);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61">dumpAliasSet</a>(<span class="keywordtype">unsigned</span> node, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> To) ;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">sucMsg</a>(std::string msg);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">wrnMsg</a>(std::string msg);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(std::string msg);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">errMsg</a>(std::string msg);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08">bugMsg1</a>(std::string msg);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">bugMsg2</a>(std::string msg);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553">bugMsg3</a>(std::string msg);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(std::string msg);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3">reportMemoryUsageKB</a>(<span class="keyword">const</span> std::string&amp; infor, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O = <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>());</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">getMemoryUsageKB</a>(<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>* vmrss_kb, <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>* vmsize_kb);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">increaseStackSize</a>();</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aa5ce14119a6e3b0b6022753ddd5890f3"> 105</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa5ce14119a6e3b0b6022753ddd5890f3">cmpPts</a> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; lpts,<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rpts)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;{</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordflow">if</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() != rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>())</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <span class="keywordflow">return</span> (lpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>() &lt; rpts.<a class="code" href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">count</a>());</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> bit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), eit = lpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classSVF_1_1PointsTo_1_1PointsToIterator.html">PointsTo::iterator</a> rbit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#aa53962e561399bf493d1f2b9137356f6">begin</a>(), reit = rpts.<a class="code" href="classSVF_1_1PointsTo.html#a8f741cdffbf3c5fe0f602cdca677dee6">end</a>();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">for</span> (; bit != eit &amp;&amp; rbit != reit; bit++, rbit++)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; {</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">if</span> (*bit != *rbit)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">return</span> (*bit &lt; *rbit);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;}</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div><div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a8f749354b7e882ef3e5bf5081fa715b5"> 123</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8f749354b7e882ef3e5bf5081fa715b5">cmpNodeBS</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; lpts,<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; rpts)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;{</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">if</span> (lpts.count() != rpts.count())</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">return</span> (lpts.count() &lt; rpts.count());</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; NodeBS::iterator bit = lpts.begin(), eit = lpts.end();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; NodeBS::iterator rbit = rpts.begin(), reit = rpts.end();</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span> (; bit != eit &amp;&amp; rbit != reit; bit++, rbit++)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span> (*bit != *rbit)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> (*bit &lt; *rbit);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; }</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;}</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1equalPointsTo.html"> 141</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1equalPointsTo.html">equalPointsTo</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"><a class="line" href="structSVF_1_1SVFUtil_1_1equalPointsTo.html#a4a7e42b2cca7e54766ce7657fefb91f9"> 143</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1equalPointsTo.html#a4a7e42b2cca7e54766ce7657fefb91f9">operator()</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa5ce14119a6e3b0b6022753ddd5890f3">SVFUtil::cmpPts</a>(lhs, rhs);</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="namespaceSVF_1_1SVFUtil.html#a68302f07b13f6e1f39aace5699762c41">equalPointsTo</a>;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1equalNodeBS.html"> 149</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1SVFUtil_1_1equalNodeBS.html">equalNodeBS</a></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;{</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="structSVF_1_1SVFUtil_1_1equalNodeBS.html#a023a5352ff198ab9f2e0dbc2a5eadc9e"> 151</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1SVFUtil_1_1equalNodeBS.html#a023a5352ff198ab9f2e0dbc2a5eadc9e">operator()</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; lhs, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8f749354b7e882ef3e5bf5081fa715b5">SVFUtil::cmpNodeBS</a>(lhs, rhs);</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;} <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5c2b39ae857d78ed9dda83880e703b0f">equalNodeBS</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a86ebab122895189be57637b84adc7642"> 157</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86ebab122895189be57637b84adc7642">ptsToNodeBS</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> &amp;pts)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;{</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> nbs;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> o : pts) nbs.set(o);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordflow">return</span> nbs;</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2"> 164</a></span>&#160;<span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">OrderedSet&lt;PointsTo, equalPointsTo&gt;</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2">PointsToList</a>;</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af4ceddbe4d57b24e80201bc895f73810">dumpPointsToList</a>(<span class="keyword">const</span> PointsToList&amp; ptl);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ad2c53be5490882768d51aa894b37cbf1"> 167</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad2c53be5490882768d51aa894b37cbf1">isIntrinsicFun</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func)</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;{</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">if</span> (func &amp;&amp; (func-&gt;getIntrinsicID() == llvm::Intrinsic::donothing ||</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_addr ||</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_declare ||</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_label ||</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; func-&gt;getIntrinsicID() == llvm::Intrinsic::dbg_value))</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;}</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80"> 181</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;{</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">llvm::CallBase</a>* call = llvm::dyn_cast&lt;llvm::CallBase&gt;(inst))</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = call-&gt;getCalledFunction();</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#ad2c53be5490882768d51aa894b37cbf1">isIntrinsicFun</a>(func))</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; {</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;}</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526"> 196</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;{</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> SVFUtil::isa&lt;CallBase&gt;(inst);</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"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a38bf8f7eaa18fc5a09711959b5417854"> 201</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</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">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = SVFUtil::dyn_cast&lt;Instruction&gt;(val))</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVFUtil::isCallSite</a>(inst);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91"> 209</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">isNonInstricCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;{</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#ab7f58caf27c30a1d414e06f60ca84d80">isIntrinsicInst</a>(inst))</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(inst);</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;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9"> 217</a></span>&#160;<span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">getLLVMCallSite</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst)</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; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(inst) &amp;&amp; <span class="stringliteral">&quot;not a callsite?&quot;</span>);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs(const_cast&lt;Instruction*&gt;(inst));</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">return</span> cs;</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="l00225"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aa09c2b313ff1c1abcc1e5cb3f9ef46a5"> 225</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#aa09c2b313ff1c1abcc1e5cb3f9ef46a5">getFunction</a>(std::string name)</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; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmModuleset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</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; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> i = 0; i &lt; llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#ae265a7f3cc7367d62013e0f15cf3d233">getModuleNum</a>(); ++i)</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="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">Module</a> *mod = llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">getModule</a>(i);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; fun = mod-&gt;getFunction(name);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">if</span>(fun)</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; {</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; <span class="keywordflow">return</span> llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; }</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b"> 243</a></span>&#160;<span class="keyword">inline</span> std::vector&lt;std::string&gt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">split</a>(<span class="keyword">const</span> std::string&amp; s, <span class="keywordtype">char</span> seperator)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;{</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; std::vector&lt;std::string&gt; output;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; std::string::size_type prev_pos = 0, pos = 0;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">while</span>((pos = s.find(seperator, pos)) != std::string::npos)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; std::string substring( s.substr(prev_pos, pos-prev_pos) );</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; output.push_back(substring);</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; prev_pos = ++pos;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; output.push_back(s.substr(prev_pos, pos-prev_pos));</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> output;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;}</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28"> 258</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">getGlobalRep</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;{</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">GlobalVariable</a>* gvar = SVFUtil::dyn_cast&lt;GlobalVariable&gt;(val))</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;hasGlobalRep(gvar))</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; val = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a757bf149437cce22163c764ea9993e12">getGlobalRep</a>(gvar);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; <span class="keywordflow">return</span> val;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;}</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637"> 269</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun)</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;{</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span>(fun == <span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classSVF_1_1LLVMModuleSet.html">LLVMModuleSet</a>* llvmModuleset = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>();</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svfFun = llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a547b3bc62de65b9dbfc6dee55c063dd7">getSVFFunction</a>(fun);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration() &amp;&amp; llvmModuleset-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#a32558da64f03452c502ec57d1e106427">hasDefinition</a>(fun))</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; svfFun = <a class="code" href="classSVF_1_1LLVMModuleSet.html#acf40310917909e4234282c0695a43160">LLVMModuleSet::getLLVMModuleSet</a>()-&gt;<a class="code" href="classSVF_1_1LLVMModuleSet.html#abc83c5da519d2d05133106d92df8053e">getDefinition</a>(fun);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">return</span> svfFun;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;}</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d"> 281</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;{</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// FIXME: do we need to strip-off the casts here to discover more library functions</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *callee = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>&gt;(cs.<a class="code" href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">getCalledValue</a>()-&gt;stripPointerCasts());</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">getDefFunForMultipleModule</a>(callee);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;}</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af26c7636bfef7ab2a36cccdcf12c3538"> 288</a></span>&#160;<span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">isCallSite</a>(inst))</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classSVF_1_1CallSite.html">CallSite</a> cs(const_cast&lt;Instruction*&gt;(inst));</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">getCallee</a>(cs);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;}</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *val);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#acc7b4cf736579c4d83be2316d5a9e5f2">F</a>);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="keyword">const</span> std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Data&gt;</div><div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a36c91f952a69875c33d4bd0b05a27ff2"> 306</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a36c91f952a69875c33d4bd0b05a27ff2">mergePtsOccMaps</a>(<a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, unsigned&gt;</a> &amp;to, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, unsigned&gt;</a> from)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;{</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">const</span> <span class="keyword">typename</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;Data, unsigned&gt;::value_type</a> &amp;ptocc : from)</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; {</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; to[ptocc.first] += ptocc.second;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; }</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;}</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;std::string <a class="code" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160">hclustMethodToString</a>(<a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dd">hclust_fast_methods</a> method);</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet&gt;</div><div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7"> 319</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">insertKey</a>(<span class="keyword">const</span> Key &amp;key, KeySet &amp;keySet)</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;{</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; keySet.insert(key);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;}</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4f75b8313eb2b1e5a4c798a01cb99471"> 325</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">insertKey</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> &amp;key, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;keySet)</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;{</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; keySet.set(key);</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;}</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Key, <span class="keyword">typename</span> KeySet&gt;</div><div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9"> 332</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">removeKey</a>(<span class="keyword">const</span> Key &amp;key, KeySet &amp;keySet)</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;{</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; keySet.erase(key);</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;}</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aa59af7fc01a534662b3b1524186ef97e"> 338</a></span>&#160;<span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">removeKey</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> &amp;key, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> &amp;keySet)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;{</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; keySet.reset(key);</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;}</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">timeLimitReached</a>(<span class="keywordtype">int</span> signum);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70">startAnalysisLimitTimer</a>(<span class="keywordtype">unsigned</span> timeLimit);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5">stopAnalysisLimitTimer</a>(<span class="keywordtype">bool</span> limitTimerSet);</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;} <span class="comment">// End namespace SVFUtil</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* AnalysisUtil_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a2e08ce822223842fa6a73fd659b1a526"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a2e08ce822223842fa6a73fd659b1a526">SVF::SVFUtil::isCallSite</a></div><div class="ttdeci">bool isCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a call or invoke instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00196">SVFUtil.h:196</a></div></div>
70
70
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeb570e9267fd7b189bd1bc877896d7ab"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVF::SVFUtil::dumpSet</a></div><div class="ttdeci">void dumpSet(NodeBS To, OutStream &amp;O=SVFUtil::outs())</div><div class="ttdoc">Dump sparse bitvector set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00149">SVFUtil.cpp:149</a></div></div>
71
71
  <div class="ttc" id="namespaceSVF_html_aa7a770b5dd5cd0e37d06a1088f252906"><div class="ttname"><a href="namespaceSVF.html#aa7a770b5dd5cd0e37d06a1088f252906">SVF::Module</a></div><div class="ttdeci">llvm::Module Module</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
72
72
  <div class="ttc" id="namespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set&lt; Key, Compare, Allocator &gt; OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00112">SVFBasicTypes.h:112</a></div></div>
@@ -78,15 +78,15 @@ $(function() {
78
78
  <div class="ttc" id="Util_2BasicTypes_8h_html"><div class="ttname"><a href="Util_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
79
79
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a86ebab122895189be57637b84adc7642"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a86ebab122895189be57637b84adc7642">SVF::SVFUtil::ptsToNodeBS</a></div><div class="ttdeci">NodeBS ptsToNodeBS(const PointsTo &amp;pts)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00157">SVFUtil.h:157</a></div></div>
80
80
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
81
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a142e650415cb81011eb59dadd3cb0637"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">SVF::SVFUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const SVFFunction * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00254">SVFUtil.h:254</a></div></div>
81
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a142e650415cb81011eb59dadd3cb0637"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a142e650415cb81011eb59dadd3cb0637">SVF::SVFUtil::getDefFunForMultipleModule</a></div><div class="ttdeci">const SVFFunction * getDefFunForMultipleModule(const Function *fun)</div><div class="ttdoc">Get the definition of a function across multiple modules. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00269">SVFUtil.h:269</a></div></div>
82
82
  <div class="ttc" id="namespaceSVF_html_a09f5fa3bc44bf53612a085e3a611cc4e"><div class="ttname"><a href="namespaceSVF.html#a09f5fa3bc44bf53612a085e3a611cc4e">SVF::GlobalVariable</a></div><div class="ttdeci">llvm::GlobalVariable GlobalVariable</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
83
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeecfaf26800dcebf0b079395126bc7f7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVF::SVFUtil::insertKey</a></div><div class="ttdeci">void insertKey(const Key &amp;key, KeySet &amp;keySet)</div><div class="ttdoc">Inserts an element into a Set/CondSet (with ::insert). </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00304">SVFUtil.h:304</a></div></div>
83
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aeecfaf26800dcebf0b079395126bc7f7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aeecfaf26800dcebf0b079395126bc7f7">SVF::SVFUtil::insertKey</a></div><div class="ttdeci">void insertKey(const Key &amp;key, KeySet &amp;keySet)</div><div class="ttdoc">Inserts an element into a Set/CondSet (with ::insert). </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00319">SVFUtil.h:319</a></div></div>
84
84
  <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>
85
- <div class="ttc" id="classSVF_1_1CallSite_html_a9526f6c3829f8897d1ca617feda8451a"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">SVF::CallSite::getCalledValue</a></div><div class="ttdeci">Value * getCalledValue() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00258">BasicTypes.h:258</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1CallSite_html_a9526f6c3829f8897d1ca617feda8451a"><div class="ttname"><a href="classSVF_1_1CallSite.html#a9526f6c3829f8897d1ca617feda8451a">SVF::CallSite::getCalledValue</a></div><div class="ttdeci">Value * getCalledValue() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00256">BasicTypes.h:256</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1PointsTo_1_1PointsToIterator_html"><div class="ttname"><a href="classSVF_1_1PointsTo_1_1PointsToIterator.html">SVF::PointsTo::PointsToIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00180">PointsTo.h:180</a></div></div>
87
87
  <div class="ttc" id="structSVF_1_1SVFUtil_1_1equalPointsTo_html_a4a7e42b2cca7e54766ce7657fefb91f9"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1equalPointsTo.html#a4a7e42b2cca7e54766ce7657fefb91f9">SVF::SVFUtil::equalPointsTo::operator()</a></div><div class="ttdeci">bool operator()(const PointsTo &amp;lhs, const PointsTo &amp;rhs) const</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00143">SVFUtil.h:143</a></div></div>
88
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00134">BasicTypes.h:134</a></div></div>
89
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4b55d5252da1f316f505cf6ce2078b28"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">SVF::SVFUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00243">SVFUtil.h:243</a></div></div>
88
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00132">BasicTypes.h:132</a></div></div>
89
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4b55d5252da1f316f505cf6ce2078b28"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4b55d5252da1f316f505cf6ce2078b28">SVF::SVFUtil::getGlobalRep</a></div><div class="ttdeci">const Value * getGlobalRep(const Value *val)</div><div class="ttdoc">find the unique defined global across multiple modules </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00258">SVFUtil.h:258</a></div></div>
90
90
  <div class="ttc" id="structSVF_1_1SVFUtil_1_1equalNodeBS_html"><div class="ttname"><a href="structSVF_1_1SVFUtil_1_1equalNodeBS.html">SVF::SVFUtil::equalNodeBS</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00149">SVFUtil.h:149</a></div></div>
91
91
  <div class="ttc" id="LLVMModule_8h_html"><div class="ttname"><a href="LLVMModule_8h.html">LLVMModule.h</a></div></div>
92
92
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a28c0ede7e4765d2a686fc8ae0f5641a4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVF::SVFUtil::getSourceLoc</a></div><div class="ttdeci">std::string getSourceLoc(const Value *val)</div><div class="ttdoc">Return source code including line number and file name from debug information. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00269">SVFUtil.cpp:269</a></div></div>
@@ -111,14 +111,15 @@ $(function() {
111
111
  <div class="ttc" id="classSVF_1_1PointsTo_html_a879783ba6629e500af9aa7dfcda2563d"><div class="ttname"><a href="classSVF_1_1PointsTo.html#a879783ba6629e500af9aa7dfcda2563d">SVF::PointsTo::count</a></div><div class="ttdeci">u32_t count(void) const</div><div class="ttdoc">Returns number of elements. </div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8cpp_source.html#l00107">PointsTo.cpp:107</a></div></div>
112
112
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_a8afb7ab3ee4632e78d546e549110e74c"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a8afb7ab3ee4632e78d546e549110e74c">SVF::LLVMModuleSet::getModule</a></div><div class="ttdeci">Module * getModule(u32_t idx) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00100">LLVMModule.h:100</a></div></div>
113
113
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4a15cc5570eed12dd6ee766213e11d61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61">SVF::SVFUtil::dumpAliasSet</a></div><div class="ttdeci">void dumpAliasSet(unsigned node, NodeBS To)</div><div class="ttdoc">Dump alias set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00139">SVFUtil.cpp:139</a></div></div>
114
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aa09c2b313ff1c1abcc1e5cb3f9ef46a5"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aa09c2b313ff1c1abcc1e5cb3f9ef46a5">SVF::SVFUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(std::string name)</div><div class="ttdoc">Get the corresponding Function based on its name. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00225">SVFUtil.h:225</a></div></div>
114
115
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4740b14abf7d308e7806a0d6d6c42ee2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2">SVF::SVFUtil::PointsToList</a></div><div class="ttdeci">OrderedSet&lt; PointsTo, equalPointsTo &gt; PointsToList</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00164">SVFUtil.h:164</a></div></div>
115
116
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a14a4c5124f2fd03ca3d898e2acd54160"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160">SVF::SVFUtil::hclustMethodToString</a></div><div class="ttdeci">std::string hclustMethodToString(hclust_fast_methods method)</div><div class="ttdoc">Returns a string representation of a hclust method. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00369">SVFUtil.cpp:369</a></div></div>
116
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00266">SVFUtil.h:266</a></div></div>
117
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af54e70082388bbd70868250aaa0bc86b"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af54e70082388bbd70868250aaa0bc86b">SVF::SVFUtil::split</a></div><div class="ttdeci">std::vector&lt; std::string &gt; split(const std::string &amp;s, char seperator)</div><div class="ttdoc">Split into two substrings around the first occurrence of a separator string. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00243">SVFUtil.h:243</a></div></div>
118
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a145abbd2958629718fbca41d25c3124d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a145abbd2958629718fbca41d25c3124d">SVF::SVFUtil::getCallee</a></div><div class="ttdeci">const SVFFunction * getCallee(const CallSite cs)</div><div class="ttdoc">Return callee of a callsite. Return null if this is an indirect call. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00281">SVFUtil.h:281</a></div></div>
117
119
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab65033f068bfbeb0a1c52dcec3beb6bc"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab65033f068bfbeb0a1c52dcec3beb6bc">SVF::SVFUtil::errs</a></div><div class="ttdeci">std::ostream &amp; errs()</div><div class="ttdoc">Overwrite llvm::errs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00055">SVFUtil.h:55</a></div></div>
118
120
  <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>
119
121
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
120
122
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00392">SVFUtil.cpp:392</a></div></div>
121
- <div class="ttc" id="namespaceSVF_html_a88fd7387fcf16caf70abe265cdcf90b9"><div class="ttname"><a href="namespaceSVF.html#a88fd7387fcf16caf70abe265cdcf90b9">SVF::StringRef</a></div><div class="ttdeci">llvm::StringRef StringRef</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
122
123
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6cfe12afa463d0ceddeee11540c33ab3"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3">SVF::SVFUtil::reportMemoryUsageKB</a></div><div class="ttdeci">void reportMemoryUsageKB(const std::string &amp;infor, OutStream &amp;O=SVFUtil::outs())</div><div class="ttdoc">Print memory usage in KB. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00169">SVFUtil.cpp:169</a></div></div>
123
124
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aa5ce14119a6e3b0b6022753ddd5890f3"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aa5ce14119a6e3b0b6022753ddd5890f3">SVF::SVFUtil::cmpPts</a></div><div class="ttdeci">bool cmpPts(const PointsTo &amp;lpts, const PointsTo &amp;rpts)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00105">SVFUtil.h:105</a></div></div>
124
125
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aabbca7c40d2da6bd2374ea53d5de0553"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553">SVF::SVFUtil::bugMsg3</a></div><div class="ttdeci">std::string bugMsg3(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00093">SVFUtil.cpp:93</a></div></div>
@@ -128,15 +129,14 @@ $(function() {
128
129
  <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>
129
130
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a202de7ad2bea0311e2f75894c030e7a9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a202de7ad2bea0311e2f75894c030e7a9">SVF::SVFUtil::getLLVMCallSite</a></div><div class="ttdeci">CallSite getLLVMCallSite(const Instruction *inst)</div><div class="ttdoc">Return LLVM callsite given a instruction. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00217">SVFUtil.h:217</a></div></div>
130
131
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
131
- <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00209">BasicTypes.h:209</a></div></div>
132
+ <div class="ttc" id="classSVF_1_1CallSite_html"><div class="ttname"><a href="classSVF_1_1CallSite.html">SVF::CallSite</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00207">BasicTypes.h:207</a></div></div>
132
133
  <div class="ttc" id="fastcluster_8h_html"><div class="ttname"><a href="fastcluster_8h.html">fastcluster.h</a></div></div>
133
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4f457db1cfa0d4f94762a306c0ac3757"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4f457db1cfa0d4f94762a306c0ac3757">SVF::SVFUtil::getFunction</a></div><div class="ttdeci">const SVFFunction * getFunction(StringRef name)</div><div class="ttdoc">Get the corresponding Function based on its name. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00225">SVFUtil.h:225</a></div></div>
134
134
  <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
135
135
  <div class="ttc" id="classSVF_1_1LLVMModuleSet_html_abc83c5da519d2d05133106d92df8053e"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#abc83c5da519d2d05133106d92df8053e">SVF::LLVMModuleSet::getDefinition</a></div><div class="ttdeci">const SVFFunction * getDefinition(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00132">LLVMModule.h:132</a></div></div>
136
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aee74719d33695e4da6fee5fc83f745d9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVF::SVFUtil::removeKey</a></div><div class="ttdeci">void removeKey(const Key &amp;key, KeySet &amp;keySet)</div><div class="ttdoc">Removes an element from a Set/CondSet (or anything implementing ::erase). </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00317">SVFUtil.h:317</a></div></div>
136
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aee74719d33695e4da6fee5fc83f745d9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aee74719d33695e4da6fee5fc83f745d9">SVF::SVFUtil::removeKey</a></div><div class="ttdeci">void removeKey(const Key &amp;key, KeySet &amp;keySet)</div><div class="ttdoc">Removes an element from a Set/CondSet (or anything implementing ::erase). </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00332">SVFUtil.h:332</a></div></div>
137
137
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
138
138
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8d8216a92140d982303f83ea424ddc91"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8d8216a92140d982303f83ea424ddc91">SVF::SVFUtil::isNonInstricCallSite</a></div><div class="ttdeci">bool isNonInstricCallSite(const Instruction *inst)</div><div class="ttdoc">Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls...</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00209">SVFUtil.h:209</a></div></div>
139
- <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a36c91f952a69875c33d4bd0b05a27ff2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a36c91f952a69875c33d4bd0b05a27ff2">SVF::SVFUtil::mergePtsOccMaps</a></div><div class="ttdeci">void mergePtsOccMaps(Map&lt; Data, unsigned &gt; &amp;to, const Map&lt; Data, unsigned &gt; from)</div><div class="ttdoc">Given a map mapping points-to sets to a count, adds from into to. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00291">SVFUtil.h:291</a></div></div>
139
+ <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a36c91f952a69875c33d4bd0b05a27ff2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a36c91f952a69875c33d4bd0b05a27ff2">SVF::SVFUtil::mergePtsOccMaps</a></div><div class="ttdeci">void mergePtsOccMaps(Map&lt; Data, unsigned &gt; &amp;to, const Map&lt; Data, unsigned &gt; from)</div><div class="ttdoc">Given a map mapping points-to sets to a count, adds from into to. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00306">SVFUtil.h:306</a></div></div>
140
140
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a630ff9c47f58f9b8df7c8a2b3711477c"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">SVF::SVFUtil::getMemoryUsageKB</a></div><div class="ttdeci">bool getMemoryUsageKB(u32_t *vmrss_kb, u32_t *vmsize_kb)</div><div class="ttdoc">Get memory usage from system file. Return TRUE if succeed. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00179">SVFUtil.cpp:179</a></div></div>
141
141
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a168f7f7a3a8c70dbf2b5b4269cd4c7c5"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5">SVF::SVFUtil::stopAnalysisLimitTimer</a></div><div class="ttdeci">void stopAnalysisLimitTimer(bool limitTimerSet)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00453">SVFUtil.cpp:453</a></div></div>
142
142
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6c06020737f7dff22a666b75c28c5e7d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">SVF::SVFUtil::wrnMsg</a></div><div class="ttdeci">std::string wrnMsg(std::string msg)</div><div class="ttdoc">Returns warning message by converting a string into yellow string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00064">SVFUtil.cpp:64</a></div></div>
@@ -68,6 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <div class="textblock"><code>#include &quot;<a class="el" href="SVFVariables_8h_source.html">MemoryModel/SVFVariables.h</a>&quot;</code><br />
70
70
  <code>#include &quot;<a class="el" href="Options_8h_source.html">Util/Options.h</a>&quot;</code><br />
71
+ <code>#include &quot;<a class="el" href="LLVMUtil_8h_source.html">SVF-FE/LLVMUtil.h</a>&quot;</code><br />
71
72
  </div>
72
73
  <p><a href="SVFVariables_8cpp_source.html">Go to the source code of this file.</a></p>
73
74
  </div><!-- contents -->