svf-tools 1.0.503 → 1.0.506

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 (533) hide show
  1. package/LICENSE.TXT +4 -2
  2. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +4 -4
  5. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +5 -5
  6. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +8 -7
  7. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +7 -7
  8. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +12 -6
  9. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +4 -4
  10. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +21 -17
  11. package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -9
  12. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +8 -4
  13. package/SVF-doxygen/html/html/BDDExpr_8h_source.html +5 -5
  14. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +4 -4
  15. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +2 -2
  16. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +6 -6
  18. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +5 -4
  19. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +7 -6
  20. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +2 -1
  23. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +6 -6
  24. package/SVF-doxygen/html/html/CHG_8cpp.html +1 -1
  25. package/SVF-doxygen/html/html/CHG_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/CHG_8h_source.html +5 -4
  27. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
  28. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/CSC_8cpp_source.html +5 -4
  31. package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
  32. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +12 -10
  33. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  34. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +3 -3
  35. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -4
  37. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -10
  38. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +8 -8
  39. package/SVF-doxygen/html/html/CoreBitVector_8cpp.html +1 -1
  40. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +4 -2
  41. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  42. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +8 -6
  44. package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -5
  45. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
  46. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  47. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +7 -7
  48. package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
  49. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +6 -4
  50. package/SVF-doxygen/html/html/DDAStat_8h_source.html +5 -5
  51. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +12 -8
  52. package/SVF-doxygen/html/html/DPItem_8h_source.html +4 -4
  53. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +2 -2
  55. package/SVF-doxygen/html/html/ExeState_8h_source.html +4 -4
  56. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
  57. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +2 -2
  59. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +17 -12
  60. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +6 -6
  61. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
  62. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
  63. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +12 -10
  64. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +19 -15
  65. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
  66. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  70. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  71. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +3 -3
  72. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  73. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
  75. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  76. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  78. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  79. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +3 -3
  80. package/SVF-doxygen/html/html/LLVMModule_8cpp.html +25 -7
  81. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +12 -7
  82. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +15 -14
  83. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  84. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +5 -3
  86. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
  87. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +7 -4
  88. package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -5
  89. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +7 -7
  90. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +8 -8
  91. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  92. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
  93. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  94. package/SVF-doxygen/html/html/MHP_8cpp_source.html +19 -13
  95. package/SVF-doxygen/html/html/MHP_8h_source.html +10 -6
  96. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  97. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +11 -8
  98. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  99. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -6
  100. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +4 -4
  101. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/MTA_8cpp_source.html +6 -6
  104. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  105. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +11 -2
  106. package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
  107. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +19 -11
  108. package/SVF-doxygen/html/html/MemRegion_8h_source.html +12 -7
  109. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +6 -6
  110. package/SVF-doxygen/html/html/MemSSA_8h_source.html +5 -5
  111. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +8 -4
  112. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +10 -10
  113. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +4 -4
  114. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +6 -2
  115. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  116. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  117. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  118. package/SVF-doxygen/html/html/PCG_8cpp_source.html +3 -3
  119. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  120. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +6 -4
  121. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +8 -7
  122. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -6
  123. package/SVF-doxygen/html/html/PTAStat_8h_source.html +4 -4
  124. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +7 -7
  125. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +5 -5
  126. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
  127. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  128. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +12 -10
  129. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +16 -13
  130. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +11 -11
  131. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +9 -9
  132. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +36 -24
  133. package/SVF-doxygen/html/html/PointsTo_8h.html +1 -0
  134. package/SVF-doxygen/html/html/PointsTo_8h_source.html +34 -33
  135. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +8 -5
  136. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +3 -3
  137. package/SVF-doxygen/html/html/SCC_8h_source.html +7 -4
  138. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +27 -29
  139. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +76 -73
  140. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
  141. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +4 -4
  142. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +5 -5
  143. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -5
  144. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -5
  145. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +8 -6
  146. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +6 -5
  147. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
  148. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +11 -9
  149. package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
  150. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
  151. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
  152. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -3
  153. package/SVF-doxygen/html/html/SVFIR_8h_source.html +7 -7
  154. package/SVF-doxygen/html/html/SVFLoop_8h_source.html +2 -2
  155. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  156. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  157. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
  158. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
  159. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -5
  160. package/SVF-doxygen/html/html/SVFUtil_8h.html +4 -4
  161. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +17 -11
  162. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
  163. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  164. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  165. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  166. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  167. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +3 -3
  168. package/SVF-doxygen/html/html/SparseBitVector_8h.html +201 -0
  169. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +179 -0
  170. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +10 -7
  171. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +4 -4
  172. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  173. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +3 -3
  174. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  175. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +5 -5
  176. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  177. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
  178. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +5 -5
  179. package/SVF-doxygen/html/html/TCT_8cpp_source.html +8 -7
  180. package/SVF-doxygen/html/html/TCT_8h_source.html +10 -7
  181. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
  182. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +2 -2
  183. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -5
  184. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +4 -4
  185. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  186. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  187. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +7 -7
  188. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  189. package/SVF-doxygen/html/html/VFGNode_8h_source.html +6 -6
  190. package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -5
  191. package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
  192. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +6 -6
  193. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +15 -10
  194. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +7 -7
  195. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +6 -3
  196. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +6 -6
  197. package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -3
  198. package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
  199. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  200. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  201. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  202. package/SVF-doxygen/html/html/annotated.html +169 -162
  203. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +4 -4
  204. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -4
  205. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +5 -4
  206. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +5 -4
  207. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +5 -4
  208. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +53 -41
  210. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +6 -6
  211. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +9 -9
  212. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +5 -5
  213. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +9 -9
  214. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +16 -16
  215. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +19 -17
  216. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -10
  217. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +11 -11
  218. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +17 -10
  220. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +26 -22
  221. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +5 -4
  222. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  224. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +5 -5
  225. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +6 -6
  226. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +13 -13
  228. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +8 -6
  230. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  232. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +5 -4
  233. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +8 -7
  234. package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet.html +2 -2
  235. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +14 -14
  237. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +12 -12
  238. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +25 -25
  239. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +5 -4
  240. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +6 -5
  241. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  242. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +18 -16
  244. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
  245. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +7 -7
  246. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +12 -10
  247. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +36 -33
  248. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +50 -42
  249. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  250. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +4 -3
  251. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
  252. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +2 -2
  253. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
  254. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +20 -20
  256. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +64 -51
  257. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +18 -15
  258. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +23 -21
  259. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +4 -4
  260. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -4
  261. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +6 -5
  262. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +6 -5
  263. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
  265. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +5 -4
  267. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +3 -3
  268. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +1 -1
  269. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +4 -4
  270. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
  271. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
  272. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  274. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +6 -6
  275. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +40 -39
  276. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +4 -4
  277. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +53 -48
  279. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  281. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +4 -4
  282. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  283. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +3 -3
  284. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +25 -24
  285. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +85 -45
  286. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  287. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +5 -4
  288. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +13 -9
  289. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +40 -40
  290. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  291. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +56 -43
  292. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +153 -125
  293. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +6 -6
  294. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +4 -4
  295. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +8 -8
  296. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +13 -10
  297. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +24 -15
  298. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +44 -36
  299. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +12 -8
  301. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +23 -23
  302. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +3 -3
  303. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +4 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +11 -11
  305. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +5 -4
  306. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +10 -7
  307. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  308. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +3 -3
  309. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +5 -4
  310. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +8 -6
  311. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +5 -3
  312. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +13 -10
  313. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +15 -15
  314. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  315. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  316. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
  317. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
  318. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  319. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +22 -22
  320. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +214 -206
  321. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +83 -75
  323. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +13 -7
  324. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
  325. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  326. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +11 -8
  327. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +8 -7
  328. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
  329. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  330. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +49 -40
  331. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  332. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +34 -29
  333. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +11 -9
  334. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
  335. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +11 -10
  336. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +46 -46
  337. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  338. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +3 -3
  339. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  340. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +16 -16
  341. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +117 -0
  342. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1358 -0
  343. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +95 -0
  344. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +594 -0
  345. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +13 -12
  346. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +1 -1
  347. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +4 -4
  348. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  349. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +4 -4
  350. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
  351. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +8 -8
  352. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +23 -23
  353. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  354. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +12 -9
  355. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  356. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  357. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +5 -4
  358. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +6 -6
  359. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +44 -39
  361. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +11 -10
  362. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +2 -1
  363. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +4 -3
  364. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +14 -11
  365. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +7 -7
  366. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +4 -3
  367. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  368. package/SVF-doxygen/html/html/classes.html +107 -106
  369. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  370. package/SVF-doxygen/html/html/files.html +8 -7
  371. package/SVF-doxygen/html/html/functions_a.html +12 -3
  372. package/SVF-doxygen/html/html/functions_b.html +27 -5
  373. package/SVF-doxygen/html/html/functions_c.html +25 -14
  374. package/SVF-doxygen/html/html/functions_e.html +20 -2
  375. package/SVF-doxygen/html/html/functions_eval_b.html +10 -0
  376. package/SVF-doxygen/html/html/functions_f.html +31 -13
  377. package/SVF-doxygen/html/html/functions_func.html +8 -2
  378. package/SVF-doxygen/html/html/functions_func_b.html +4 -3
  379. package/SVF-doxygen/html/html/functions_func_c.html +24 -16
  380. package/SVF-doxygen/html/html/functions_func_e.html +5 -2
  381. package/SVF-doxygen/html/html/functions_func_f.html +19 -1
  382. package/SVF-doxygen/html/html/functions_func_g.html +13 -10
  383. package/SVF-doxygen/html/html/functions_func_i.html +18 -8
  384. package/SVF-doxygen/html/html/functions_func_o.html +19 -8
  385. package/SVF-doxygen/html/html/functions_func_r.html +4 -2
  386. package/SVF-doxygen/html/html/functions_func_s.html +16 -5
  387. package/SVF-doxygen/html/html/functions_func_t.html +4 -0
  388. package/SVF-doxygen/html/html/functions_func_u.html +3 -0
  389. package/SVF-doxygen/html/html/functions_func_w.html +3 -0
  390. package/SVF-doxygen/html/html/functions_g.html +16 -13
  391. package/SVF-doxygen/html/html/functions_i.html +24 -12
  392. package/SVF-doxygen/html/html/functions_l.html +3 -3
  393. package/SVF-doxygen/html/html/functions_o.html +28 -17
  394. package/SVF-doxygen/html/html/functions_p.html +19 -17
  395. package/SVF-doxygen/html/html/functions_r.html +5 -5
  396. package/SVF-doxygen/html/html/functions_s.html +25 -11
  397. package/SVF-doxygen/html/html/functions_t.html +14 -8
  398. package/SVF-doxygen/html/html/functions_type_b.html +3 -0
  399. package/SVF-doxygen/html/html/functions_type_e.html +9 -0
  400. package/SVF-doxygen/html/html/functions_type_i.html +1 -0
  401. package/SVF-doxygen/html/html/functions_type_s.html +3 -0
  402. package/SVF-doxygen/html/html/functions_u.html +3 -0
  403. package/SVF-doxygen/html/html/functions_v.html +3 -3
  404. package/SVF-doxygen/html/html/functions_vars_a.html +3 -0
  405. package/SVF-doxygen/html/html/functions_vars_b.html +10 -0
  406. package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
  407. package/SVF-doxygen/html/html/functions_vars_e.html +6 -0
  408. package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
  409. package/SVF-doxygen/html/html/functions_vars_s.html +1 -1
  410. package/SVF-doxygen/html/html/functions_vars_w.html +3 -0
  411. package/SVF-doxygen/html/html/functions_w.html +11 -11
  412. package/SVF-doxygen/html/html/globals_defs_h.html +6 -0
  413. package/SVF-doxygen/html/html/globals_defs_s.html +5 -2
  414. package/SVF-doxygen/html/html/globals_h.html +8 -2
  415. package/SVF-doxygen/html/html/globals_s.html +14 -11
  416. package/SVF-doxygen/html/html/hierarchy.html +161 -154
  417. package/SVF-doxygen/html/html/menudata.js +2 -1
  418. package/SVF-doxygen/html/html/namespaceSVF.html +559 -70
  419. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +5 -5
  420. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +27 -23
  421. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +3 -3
  422. package/SVF-doxygen/html/html/namespacemembers_c.html +9 -0
  423. package/SVF-doxygen/html/html/namespacemembers_d.html +4 -1
  424. package/SVF-doxygen/html/html/namespacemembers_enum.html +3 -0
  425. package/SVF-doxygen/html/html/namespacemembers_eval.html +9 -0
  426. package/SVF-doxygen/html/html/namespacemembers_func.html +20 -2
  427. package/SVF-doxygen/html/html/namespacemembers_n.html +1 -1
  428. package/SVF-doxygen/html/html/namespacemembers_o.html +7 -1
  429. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  430. package/SVF-doxygen/html/html/namespacemembers_type.html +1 -4
  431. package/SVF-doxygen/html/html/namespacemembers_z.html +85 -0
  432. package/SVF-doxygen/html/html/search/all_1.js +3 -1
  433. package/SVF-doxygen/html/html/search/all_10.js +10 -8
  434. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  435. package/SVF-doxygen/html/html/search/all_13.js +16 -11
  436. package/SVF-doxygen/html/html/search/all_14.js +9 -8
  437. package/SVF-doxygen/html/html/search/all_15.js +2 -1
  438. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  439. package/SVF-doxygen/html/html/search/all_17.js +3 -2
  440. package/SVF-doxygen/html/html/search/all_1a.js +4 -0
  441. package/SVF-doxygen/html/html/search/all_2.js +8 -3
  442. package/SVF-doxygen/html/html/search/all_3.js +7 -3
  443. package/SVF-doxygen/html/html/search/all_4.js +1 -1
  444. package/SVF-doxygen/html/html/search/all_5.js +7 -3
  445. package/SVF-doxygen/html/html/search/all_6.js +8 -3
  446. package/SVF-doxygen/html/html/search/all_7.js +1 -0
  447. package/SVF-doxygen/html/html/search/all_8.js +3 -1
  448. package/SVF-doxygen/html/html/search/all_9.js +8 -6
  449. package/SVF-doxygen/html/html/search/all_c.js +2 -1
  450. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  451. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  452. package/SVF-doxygen/html/html/search/all_f.js +15 -15
  453. package/SVF-doxygen/html/html/search/classes_10.js +1 -0
  454. package/SVF-doxygen/html/html/search/classes_7.js +1 -1
  455. package/SVF-doxygen/html/html/search/classes_9.js +1 -0
  456. package/SVF-doxygen/html/html/search/classes_d.js +2 -0
  457. package/SVF-doxygen/html/html/search/classes_f.js +3 -0
  458. package/SVF-doxygen/html/html/search/defines_6.js +2 -0
  459. package/SVF-doxygen/html/html/search/defines_f.js +2 -1
  460. package/SVF-doxygen/html/html/search/enums_d.html +26 -0
  461. package/SVF-doxygen/html/html/search/enums_d.js +4 -0
  462. package/SVF-doxygen/html/html/search/enumvalues_1.js +3 -0
  463. package/SVF-doxygen/html/html/search/enumvalues_14.js +3 -2
  464. package/SVF-doxygen/html/html/search/files_d.js +1 -0
  465. package/SVF-doxygen/html/html/search/functions_0.js +2 -0
  466. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  467. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  468. package/SVF-doxygen/html/html/search/functions_11.js +4 -1
  469. package/SVF-doxygen/html/html/search/functions_12.js +2 -2
  470. package/SVF-doxygen/html/html/search/functions_13.js +1 -0
  471. package/SVF-doxygen/html/html/search/functions_15.js +1 -0
  472. package/SVF-doxygen/html/html/search/functions_2.js +6 -3
  473. package/SVF-doxygen/html/html/search/functions_3.js +1 -1
  474. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  475. package/SVF-doxygen/html/html/search/functions_5.js +6 -1
  476. package/SVF-doxygen/html/html/search/functions_6.js +1 -0
  477. package/SVF-doxygen/html/html/search/functions_8.js +4 -2
  478. package/SVF-doxygen/html/html/search/functions_e.js +12 -12
  479. package/SVF-doxygen/html/html/search/searchdata.js +2 -2
  480. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -0
  481. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  482. package/SVF-doxygen/html/html/search/typedefs_4.js +3 -0
  483. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  484. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  485. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  486. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  487. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  488. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  489. package/SVF-doxygen/html/html/search/variables_17.js +1 -0
  490. package/SVF-doxygen/html/html/search/variables_2.js +3 -1
  491. package/SVF-doxygen/html/html/search/variables_3.js +1 -0
  492. package/SVF-doxygen/html/html/search/variables_5.js +2 -1
  493. package/SVF-doxygen/html/html/search/variables_9.js +1 -0
  494. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  495. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
  496. package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
  497. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  498. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
  499. package/SVF-doxygen/html/html/structSVF_1_1LeadingZerosCounter-members.html +81 -0
  500. package/SVF-doxygen/html/html/structSVF_1_1LeadingZerosCounter.html +138 -0
  501. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter-members.html +81 -0
  502. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter.html +129 -0
  503. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter_3_01T_00_018_01_4-members.html +81 -0
  504. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter_3_01T_00_018_01_4.html +129 -0
  505. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalNodeBS.html +3 -3
  506. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +107 -0
  507. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +981 -0
  508. package/SVF-doxygen/html/html/structSVF_1_1TrailingZerosCounter-members.html +81 -0
  509. package/SVF-doxygen/html/html/structSVF_1_1TrailingZerosCounter.html +138 -0
  510. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  511. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  512. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  513. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +1 -1
  514. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
  515. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  516. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +3 -3
  517. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4-members.html +81 -0
  518. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +136 -0
  519. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  520. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +1 -1
  521. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  522. package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -6
  523. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +6 -6
  524. package/include/MemoryModel/PointsTo.h +3 -2
  525. package/include/SVF-FE/LLVMModule.h +3 -0
  526. package/include/Util/SVFBasicTypes.h +6 -5
  527. package/include/Util/SparseBitVector.h +1208 -0
  528. package/lib/MemoryModel/PointsTo.cpp +12 -12
  529. package/lib/SVF-FE/LLVMModule.cpp +157 -18
  530. package/lib/Util/CoreBitVector.cpp +2 -2
  531. package/lib/WPA/Andersen.cpp +1 -1
  532. package/lib/WPA/FlowSensitive.cpp +1 -1
  533. package/package.json +1 -1
@@ -66,7 +66,8 @@ $(function() {
66
66
  <div class="title">SVFUtil.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="SVFUtil_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- AnalysisUtil.cpp -- Helper functions for pointer analysis--------------//</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"> * AnalysisUtil.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 11, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="BDDExpr_8h.html">Util/BDDExpr.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="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;sys/resource.h&gt;</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9"> 41</a></span>&#160;<span class="preprocessor">#define KNRM &quot;\x1B[1;0m&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a66290957baed5df3930ada4cb8caccf1"> 42</a></span>&#160;<span class="preprocessor">#define KRED &quot;\x1B[1;31m&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#ac081c83b067273757f7a2e54a5957d41"> 43</a></span>&#160;<span class="preprocessor">#define KGRN &quot;\x1B[1;32m&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a"> 44</a></span>&#160;<span class="preprocessor">#define KYEL &quot;\x1B[1;33m&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a3f838f2fc3a9a3b434be606fc908964b"> 45</a></span>&#160;<span class="preprocessor">#define KBLU &quot;\x1B[1;34m&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a326cbc9ef8d75aa44a591bf476c9835b"> 46</a></span>&#160;<span class="preprocessor">#define KPUR &quot;\x1B[1;35m&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#add84f76d7bfbbc2b00215d7195f8d3bd"> 47</a></span>&#160;<span class="preprocessor">#define KCYA &quot;\x1B[1;36m&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#af0036c8022c9980079ab17e5c87fd478"> 48</a></span>&#160;<span class="preprocessor">#define KWHT &quot;\x1B[1;37m&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4"> 55</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVFUtil::sucMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</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> <a class="code" href="SVFUtil_8cpp.html#ac081c83b067273757f7a2e54a5957d41">KGRN</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</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="l00063"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d"> 63</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">SVFUtil::wrnMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a">KYEL</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d"> 68</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ab4206ecb79fdcd2d5211bfbd2537cacb">Options::DisableWarn</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">wrnMsg</a>(msg) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01"> 77</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVFUtil::errMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a66290957baed5df3930ada4cb8caccf1">KRED</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08"> 82</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08">SVFUtil::bugMsg1</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a">KYEL</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7"> 87</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">SVFUtil::bugMsg2</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a326cbc9ef8d75aa44a591bf476c9835b">KPUR</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553"> 92</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553">SVFUtil::bugMsg3</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#add84f76d7bfbbc2b00215d7195f8d3bd">KCYA</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738"> 100</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a3f838f2fc3a9a3b434be606fc908964b">KBLU</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3"> 108</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3">SVFUtil::dumpPointsToSet</a>(<span class="keywordtype">unsigned</span> node, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> bs)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;node &quot;</span> &lt;&lt; node &lt;&lt; <span class="stringliteral">&quot; points-to: {&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">// For use from the debugger.</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442"> 116</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442">SVFUtil::dumpSparseSet</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a>&amp; bs)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;{&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</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#af4ceddbe4d57b24e80201bc895f73810"> 123</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af4ceddbe4d57b24e80201bc895f73810">SVFUtil::dumpPointsToList</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2">PointsToList</a>&amp; ptl)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;{&quot;</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (PointsToList::const_iterator ii = ptl.begin(), ie = ptl.end();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; ii != ie; ii++)</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; <span class="keyword">auto</span> bs = *ii;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61"> 138</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61">SVFUtil::dumpAliasSet</a>(<span class="keywordtype">unsigned</span> node, <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> bs)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;node &quot;</span> &lt;&lt; node &lt;&lt; <span class="stringliteral">&quot; alias set: {&quot;</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab"> 148</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> bs, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (NodeBS::iterator ii = bs.begin(), ie = bs.end();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; O &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *ii &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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;}</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#a04aa23b4982662d98c56af3e8ba16cb1"> 157</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pt, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;o)</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; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> : pt)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; o &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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"> 164</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3"> 168</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3">SVFUtil::reportMemoryUsageKB</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; infor, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vmrss, vmsize;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">getMemoryUsageKB</a>(&amp;vmrss, &amp;vmsize))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; O &lt;&lt; infor &lt;&lt; <span class="stringliteral">&quot;\tVmRSS: &quot;</span> &lt;&lt; vmrss &lt;&lt; <span class="stringliteral">&quot;\tVmSize: &quot;</span> &lt;&lt; vmsize &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c"> 178</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">SVFUtil::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="l00179"></a><span class="lineno"> 179</span>&#160;{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">/* Get the the current process&#39; status file from the proc filesystem */</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">char</span> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>[8192];</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; FILE* procfile = fopen(<span class="stringliteral">&quot;/proc/self/status&quot;</span>, <span class="stringliteral">&quot;r&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(procfile)</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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = fread(buffer, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>), 8192, procfile);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (result == 0)</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; fputs (<span class="stringliteral">&quot;Reading error\n&quot;</span>,stderr);</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">else</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; fputs (<span class="stringliteral">&quot;/proc/self/status file not exit\n&quot;</span>,stderr);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; fclose(procfile);</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="comment">/* Look through proc status contents line by line */</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">char</span> delims[] = <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">char</span>* line = <a class="code" href="util_8h.html#a8bf943e1f78acc0236f9075a94765663">strtok</a>(buffer, delims);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">bool</span> found_vmrss = <span class="keyword">false</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">bool</span> found_vmsize = <span class="keyword">false</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">while</span> (line != <span class="keyword">nullptr</span> &amp;&amp; (found_vmrss == <span class="keyword">false</span> || found_vmsize == <span class="keyword">false</span>))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="util_8h.html#aaaaf5365ac473a2e91c3326c08d4eeb2">strstr</a>(line, <span class="stringliteral">&quot;VmRSS:&quot;</span>) != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; sscanf(line, <span class="stringliteral">&quot;%*s %u&quot;</span>, vmrss_kb);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; found_vmrss = <span class="keyword">true</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="util_8h.html#aaaaf5365ac473a2e91c3326c08d4eeb2">strstr</a>(line, <span class="stringliteral">&quot;VmSize:&quot;</span>) != <span class="keyword">nullptr</span>)</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; sscanf(line, <span class="stringliteral">&quot;%*s %u&quot;</span>, vmsize_kb);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; found_vmsize = <span class="keyword">true</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; line = <a class="code" href="util_8h.html#a8bf943e1f78acc0236f9075a94765663">strtok</a>(<span class="keyword">nullptr</span>, delims);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> (found_vmrss &amp;&amp; found_vmsize);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;}</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1"> 228</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVFUtil::increaseStackSize</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="keyword">const</span> rlim_t kStackSize = 256L * 1024L * 1024L; <span class="comment">// min stack size = 256 Mb</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">struct </span>rlimit rl;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">int</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = getrlimit(RLIMIT_STACK, &amp;rl);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (result == 0)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (rl.rlim_cur &lt; kStackSize)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; rl.rlim_cur = kStackSize;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; result = setrlimit(RLIMIT_STACK, &amp;rl);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (result != 0)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;setrlimit returned result !=0 \n&quot;</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</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;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2"> 249</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">SVFUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> * looks like the relevant</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = F-&gt;getSubprogram())</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(F))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;in line: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot; file: &quot;</span> &lt;&lt; SP-&gt;getFilename();</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">return</span> rawstr.str();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4"> 268</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;{</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</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="l00277"></a><span class="lineno"> 277</span>&#160; {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(const_cast&lt;Instruction*&gt;(inst)))</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</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; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ln: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot; fl: &quot;</span> &lt;&lt; DIVar-&gt;getFilename();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">break</span>;</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"> 288</span>&#160; }</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">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; Line = inlineLoc-&gt;getLine();</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; Column = inlineLoc-&gt;getColumn();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; File = inlineLoc-&gt;getFilename().str();</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; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ln: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot; cl: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot; fl: &quot;</span> &lt;&lt; File;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">getSourceLocOfFunction</a>(argument-&gt;getParent());</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">else</span> <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="l00324"></a><span class="lineno"> 324</span>&#160; {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</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; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ln: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot; fl: &quot;</span> &lt;&lt; DGV-&gt;getFilename();</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;</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="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(val))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">getSourceLocOfFunction</a>(func);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;basic block: &quot;</span> &lt;&lt; bb-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</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; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">else</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; rawstr &lt;&lt; <span class="stringliteral">&quot;Can only get source location for instruction, argument, global var, function or constant data.&quot;</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;}</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160"> 368</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160">SVFUtil::hclustMethodToString</a>(<a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dd">hclust_fast_methods</a> method)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;{</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913ddad16cc6362447cc32292c4af4c6fe8024">HCLUST_METHOD_SINGLE</a>:</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;single&quot;</span>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dda44ce22fdfc560f27242e9b8f8e7009f4">HCLUST_METHOD_COMPLETE</a>:</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;complete&quot;</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dda3ab72664fc61704a1ba46bddbc347115">HCLUST_METHOD_AVERAGE</a>:</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;average&quot;</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913ddaa453b79910d9c6f7f57a179bcdf63474">HCLUST_METHOD_MEDIAN</a>:</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;median&quot;</span>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dda66ab3fde95842ef6da0dae1f702a9618">HCLUST_METHOD_SVF_BEST</a>:</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;svf-best&quot;</span>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;SVFUtil::hclustMethodToString: unknown method&quot;</span>);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;}</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191"> 391</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;{</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span>(value)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; fun-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *value &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(value);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#a10bba41af683e8902f65aa1b736411dd"> 406</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFFunction.html#a10bba41af683e8902f65aa1b736411dd">SVFFunction::viewCFG</a>()</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">fun</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">fun</a>-&gt;viewCFG();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#af9dfd6804b5ebda0d4a963b1ce5e6887"> 414</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFFunction.html#af9dfd6804b5ebda0d4a963b1ce5e6887">SVFFunction::viewCFGOnly</a>()</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">fun</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">fun</a>-&gt;viewCFGOnly();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;}</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9"> 422</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">SVFUtil::timeLimitReached</a>(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;{</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="comment">// TODO: output does not indicate which time limit is reached.</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">// This can be better in the future.</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;WPA: time limit reached\n&quot;</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>(101);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70"> 431</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70">SVFUtil::startAnalysisLimitTimer</a>(<span class="keywordtype">unsigned</span> timeLimit)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;{</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">if</span> (timeLimit == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="comment">// If an alarm is already set, don&#39;t set another. That means this analysis</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// is part of another which has a time limit.</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordtype">unsigned</span> remainingSeconds = alarm(0);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (remainingSeconds != 0)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// Continue the previous alarm and move on.</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; alarm(remainingSeconds);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; signal(SIGALRM, &amp;<a class="code" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">timeLimitReached</a>);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; alarm(timeLimit);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;}</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5"> 452</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5">SVFUtil::stopAnalysisLimitTimer</a>(<span class="keywordtype">bool</span> limitTimerSet)</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">if</span> (limitTimerSet) alarm(0);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518"> 457</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518">SVFUtil::type2String</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">llvm::raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;Given null type!&quot;</span>);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; rawstr &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;}</div><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#l00148">SVFUtil.cpp:148</a></div></div>
69
+ <a href="SVFUtil_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- AnalysisUtil.cpp -- Helper functions for pointer analysis--------------//</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"> * AnalysisUtil.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 11, 2013</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yulei Sui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="BDDExpr_8h.html">Util/BDDExpr.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="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor">#include &lt;sys/resource.h&gt;</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9"> 41</a></span>&#160;<span class="preprocessor">#define KNRM &quot;\x1B[1;0m&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a66290957baed5df3930ada4cb8caccf1"> 42</a></span>&#160;<span class="preprocessor">#define KRED &quot;\x1B[1;31m&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#ac081c83b067273757f7a2e54a5957d41"> 43</a></span>&#160;<span class="preprocessor">#define KGRN &quot;\x1B[1;32m&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a"> 44</a></span>&#160;<span class="preprocessor">#define KYEL &quot;\x1B[1;33m&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a3f838f2fc3a9a3b434be606fc908964b"> 45</a></span>&#160;<span class="preprocessor">#define KBLU &quot;\x1B[1;34m&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a326cbc9ef8d75aa44a591bf476c9835b"> 46</a></span>&#160;<span class="preprocessor">#define KPUR &quot;\x1B[1;35m&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#add84f76d7bfbbc2b00215d7195f8d3bd"> 47</a></span>&#160;<span class="preprocessor">#define KCYA &quot;\x1B[1;36m&quot;</span></div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#af0036c8022c9980079ab17e5c87fd478"> 48</a></span>&#160;<span class="preprocessor">#define KWHT &quot;\x1B[1;37m&quot;</span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4"> 55</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVFUtil::sucMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</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> <a class="code" href="SVFUtil_8cpp.html#ac081c83b067273757f7a2e54a5957d41">KGRN</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</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="l00063"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d"> 63</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">SVFUtil::wrnMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a">KYEL</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d"> 68</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVFUtil::writeWrnMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;{</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ab4206ecb79fdcd2d5211bfbd2537cacb">Options::DisableWarn</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d">wrnMsg</a>(msg) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;}</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01"> 77</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVFUtil::errMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;{</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a66290957baed5df3930ada4cb8caccf1">KRED</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08"> 82</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08">SVFUtil::bugMsg1</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;{</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a">KYEL</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;}</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7"> 87</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">SVFUtil::bugMsg2</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a326cbc9ef8d75aa44a591bf476c9835b">KPUR</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;}</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553"> 92</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553">SVFUtil::bugMsg3</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;{</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#add84f76d7bfbbc2b00215d7195f8d3bd">KCYA</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738"> 100</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVFUtil::pasMsg</a>(<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> msg)</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;{</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="SVFUtil_8cpp.html#a3f838f2fc3a9a3b434be606fc908964b">KBLU</a> + msg + <a class="code" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a>;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;}</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3"> 108</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3">SVFUtil::dumpPointsToSet</a>(<span class="keywordtype">unsigned</span> node, <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> bs)</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;{</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;node &quot;</span> &lt;&lt; node &lt;&lt; <span class="stringliteral">&quot; points-to: {&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;}</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">// For use from the debugger.</span></div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442"> 116</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442">SVFUtil::dumpSparseSet</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a>&amp; bs)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;{&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</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#af4ceddbe4d57b24e80201bc895f73810"> 123</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#af4ceddbe4d57b24e80201bc895f73810">SVFUtil::dumpPointsToList</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4740b14abf7d308e7806a0d6d6c42ee2">PointsToList</a>&amp; ptl)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;{&quot;</span>;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">for</span> (PointsToList::const_iterator ii = ptl.begin(), ie = ptl.end();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; ii != ie; ii++)</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; <span class="keyword">auto</span> bs = *ii;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;}</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61"> 138</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61">SVFUtil::dumpAliasSet</a>(<span class="keywordtype">unsigned</span> node, <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> bs)</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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;node &quot;</span> &lt;&lt; node &lt;&lt; <span class="stringliteral">&quot; alias set: {&quot;</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;}\n&quot;</span>;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;}</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab"> 148</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> bs, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;{</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">NodeBS::iterator</a> ii = bs.<a class="code" href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">begin</a>(), ie = bs.<a class="code" href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">end</a>();</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; O &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *ii &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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;}</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#a04aa23b4982662d98c56af3e8ba16cb1"> 157</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">SVFUtil::dumpSet</a>(<a class="code" href="classSVF_1_1PointsTo.html">PointsTo</a> pt, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp;o)</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; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> : pt)</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; o &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</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"> 164</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3"> 168</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3">SVFUtil::reportMemoryUsageKB</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a>&amp; infor, <a class="code" href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">OutStream</a> &amp; O)</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;{</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vmrss, vmsize;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">getMemoryUsageKB</a>(&amp;vmrss, &amp;vmsize))</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; O &lt;&lt; infor &lt;&lt; <span class="stringliteral">&quot;\tVmRSS: &quot;</span> &lt;&lt; vmrss &lt;&lt; <span class="stringliteral">&quot;\tVmSize: &quot;</span> &lt;&lt; vmsize &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c"> 178</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c">SVFUtil::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="l00179"></a><span class="lineno"> 179</span>&#160;{</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="comment">/* Get the the current process&#39; status file from the proc filesystem */</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordtype">char</span> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>[8192];</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; FILE* procfile = fopen(<span class="stringliteral">&quot;/proc/self/status&quot;</span>, <span class="stringliteral">&quot;r&quot;</span>);</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keywordflow">if</span>(procfile)</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; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = fread(buffer, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>), 8192, procfile);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (result == 0)</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; fputs (<span class="stringliteral">&quot;Reading error\n&quot;</span>,stderr);</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">else</span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; fputs (<span class="stringliteral">&quot;/proc/self/status file not exit\n&quot;</span>,stderr);</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; }</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; fclose(procfile);</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="comment">/* Look through proc status contents line by line */</span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordtype">char</span> delims[] = <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">char</span>* line = <a class="code" href="util_8h.html#a8bf943e1f78acc0236f9075a94765663">strtok</a>(buffer, delims);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordtype">bool</span> found_vmrss = <span class="keyword">false</span>;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordtype">bool</span> found_vmsize = <span class="keyword">false</span>;</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">while</span> (line != <span class="keyword">nullptr</span> &amp;&amp; (found_vmrss == <span class="keyword">false</span> || found_vmsize == <span class="keyword">false</span>))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; {</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="util_8h.html#aaaaf5365ac473a2e91c3326c08d4eeb2">strstr</a>(line, <span class="stringliteral">&quot;VmRSS:&quot;</span>) != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; sscanf(line, <span class="stringliteral">&quot;%*s %u&quot;</span>, vmrss_kb);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; found_vmrss = <span class="keyword">true</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="util_8h.html#aaaaf5365ac473a2e91c3326c08d4eeb2">strstr</a>(line, <span class="stringliteral">&quot;VmSize:&quot;</span>) != <span class="keyword">nullptr</span>)</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; sscanf(line, <span class="stringliteral">&quot;%*s %u&quot;</span>, vmsize_kb);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; found_vmsize = <span class="keyword">true</span>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; line = <a class="code" href="util_8h.html#a8bf943e1f78acc0236f9075a94765663">strtok</a>(<span class="keyword">nullptr</span>, delims);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="keywordflow">return</span> (found_vmrss &amp;&amp; found_vmsize);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;}</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1"> 228</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVFUtil::increaseStackSize</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="keyword">const</span> rlim_t kStackSize = 256L * 1024L * 1024L; <span class="comment">// min stack size = 256 Mb</span></div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keyword">struct </span>rlimit rl;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordtype">int</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a> = getrlimit(RLIMIT_STACK, &amp;rl);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (result == 0)</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; {</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <span class="keywordflow">if</span> (rl.rlim_cur &lt; kStackSize)</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; {</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; rl.rlim_cur = kStackSize;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; result = setrlimit(RLIMIT_STACK, &amp;rl);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">if</span> (result != 0)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;setrlimit returned result !=0 \n&quot;</span>);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; }</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;}</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;</div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2"> 249</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">SVFUtil::getSourceLocOfFunction</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a>)</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;{</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="comment">/*</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> * https://reviews.llvm.org/D18074?id=50385</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> * looks like the relevant</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">llvm::DISubprogram</a> *SP = F-&gt;getSubprogram())</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">if</span> (SP-&gt;describes(F))</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;in line: &quot;</span> &lt;&lt; SP-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot; file: &quot;</span> &lt;&lt; SP-&gt;getFilename();</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">return</span> rawstr.str();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4"> 268</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">SVFUtil::getSourceLoc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* val)</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;{</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">if</span>(val==<span class="keyword">nullptr</span>) <span class="keywordflow">return</span> <span class="stringliteral">&quot;{ empty val }&quot;</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;{ &quot;</span>;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</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="l00277"></a><span class="lineno"> 277</span>&#160; {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">if</span> (SVFUtil::isa&lt;AllocaInst&gt;(inst))</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; {</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">for</span> (llvm::DbgInfoIntrinsic *DII : FindDbgAddrUses(const_cast&lt;Instruction*&gt;(inst)))</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; {</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (llvm::DbgDeclareInst *DDI = SVFUtil::dyn_cast&lt;llvm::DbgDeclareInst&gt;(DII))</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; llvm::DIVariable *DIVar = SVFUtil::cast&lt;llvm::DIVariable&gt;(DDI-&gt;getVariable());</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ln: &quot;</span> &lt;&lt; DIVar-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot; fl: &quot;</span> &lt;&lt; DIVar-&gt;getFilename();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">break</span>;</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"> 288</span>&#160; }</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">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">MDNode</a> *N = inst-&gt;getMetadata(<span class="stringliteral">&quot;dbg&quot;</span>)) <span class="comment">// Here I is an LLVM instruction</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; {</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; llvm::DILocation* Loc = SVFUtil::cast&lt;llvm::DILocation&gt;(N); <span class="comment">// DILocation is in DebugInfo.h</span></div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordtype">unsigned</span> Line = Loc-&gt;getLine();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">unsigned</span> Column = Loc-&gt;getColumn();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> File = Loc-&gt;getFilename().str();</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">//StringRef Dir = Loc.getDirectory();</span></div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span>(File.empty() || Line == 0)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">auto</span> inlineLoc = Loc-&gt;getInlinedAt();</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span>(inlineLoc)</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; Line = inlineLoc-&gt;getLine();</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; Column = inlineLoc-&gt;getColumn();</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; File = inlineLoc-&gt;getFilename().str();</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; }</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ln: &quot;</span> &lt;&lt; Line &lt;&lt; <span class="stringliteral">&quot; cl: &quot;</span> &lt;&lt; Column &lt;&lt; <span class="stringliteral">&quot; fl: &quot;</span> &lt;&lt; File;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; }</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* argument = SVFUtil::dyn_cast&lt;Argument&gt;(val))</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 1)</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;st&quot;</span>;</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 2)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;nd&quot;</span>;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (argument-&gt;getArgNo()%10 == 3)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;rd&quot;</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; rawstr &lt;&lt; argument-&gt;getArgNo() &lt;&lt; <span class="stringliteral">&quot;th&quot;</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; arg &quot;</span> &lt;&lt; argument-&gt;getParent()-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">getSourceLocOfFunction</a>(argument-&gt;getParent());</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; }</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">else</span> <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="l00324"></a><span class="lineno"> 324</span>&#160; {</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;Glob &quot;</span>;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <a class="code" href="namespaceSVF.html#a3011dbac9102f044ad5f36a4ad3d4a71">NamedMDNode</a>* CU_Nodes = gvar-&gt;getParent()-&gt;getNamedMetadata(<span class="stringliteral">&quot;llvm.dbg.cu&quot;</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">if</span>(CU_Nodes)</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; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = CU_Nodes-&gt;getNumOperands(); i != e; ++i)</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; {</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; llvm::DICompileUnit *CUNode = SVFUtil::cast&lt;llvm::DICompileUnit&gt;(CU_Nodes-&gt;getOperand(i));</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">for</span> (llvm::DIGlobalVariableExpression *GV : CUNode-&gt;getGlobalVariables())</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; llvm::DIGlobalVariable * DGV = GV-&gt;getVariable();</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <span class="keywordflow">if</span>(DGV-&gt;getName() == gvar-&gt;getName())</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; {</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;ln: &quot;</span> &lt;&lt; DGV-&gt;getLine() &lt;&lt; <span class="stringliteral">&quot; fl: &quot;</span> &lt;&lt; DGV-&gt;getFilename();</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;</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="l00343"></a><span class="lineno"> 343</span>&#160; }</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* func = SVFUtil::dyn_cast&lt;Function&gt;(val))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; {</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">getSourceLocOfFunction</a>(func);</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; }</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = SVFUtil::dyn_cast&lt;BasicBlock&gt;(val))</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; {</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;basic block: &quot;</span> &lt;&lt; bb-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(bb-&gt;getFirstNonPHI());</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; }</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code" href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVFUtil::isConstantData</a>(val))</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; rawstr &lt;&lt; <span class="stringliteral">&quot;constant data&quot;</span>;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; }</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <span class="keywordflow">else</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; rawstr &lt;&lt; <span class="stringliteral">&quot;Can only get source location for instruction, argument, global var, function or constant data.&quot;</span>;</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }&quot;</span>;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span>(rawstr.str()==<span class="stringliteral">&quot;{ }&quot;</span>)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;}</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;</div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160"> 368</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160">SVFUtil::hclustMethodToString</a>(<a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dd">hclust_fast_methods</a> method)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;{</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; {</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913ddad16cc6362447cc32292c4af4c6fe8024">HCLUST_METHOD_SINGLE</a>:</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;single&quot;</span>;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dda44ce22fdfc560f27242e9b8f8e7009f4">HCLUST_METHOD_COMPLETE</a>:</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;complete&quot;</span>;</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dda3ab72664fc61704a1ba46bddbc347115">HCLUST_METHOD_AVERAGE</a>:</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;average&quot;</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913ddaa453b79910d9c6f7f57a179bcdf63474">HCLUST_METHOD_MEDIAN</a>:</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;median&quot;</span>;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dda66ab3fde95842ef6da0dae1f702a9618">HCLUST_METHOD_SVF_BEST</a>:</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;svf-best&quot;</span>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;SVFUtil::hclustMethodToString: unknown method&quot;</span>);</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160; }</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;}</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191"> 391</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value)</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;{</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160; <span class="keywordflow">if</span>(value)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; {</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a>* fun = SVFUtil::dyn_cast&lt;Function&gt;(value))</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; fun-&gt;getName() &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; *value &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; rawstr &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a28c0ede7e4765d2a686fc8ae0f5641a4">getSourceLoc</a>(value);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160; }</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;}</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;</div><div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#a10bba41af683e8902f65aa1b736411dd"> 406</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFFunction.html#a10bba41af683e8902f65aa1b736411dd">SVFFunction::viewCFG</a>()</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;{</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">fun</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">fun</a>-&gt;viewCFG();</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; }</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;}</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;</div><div class="line"><a name="l00414"></a><span class="lineno"><a class="line" href="classSVF_1_1SVFFunction.html#af9dfd6804b5ebda0d4a963b1ce5e6887"> 414</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1SVFFunction.html#af9dfd6804b5ebda0d4a963b1ce5e6887">SVFFunction::viewCFGOnly</a>()</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;{</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">fun</a> != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; {</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; <a class="code" href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">fun</a>-&gt;viewCFGOnly();</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; }</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;}</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;</div><div class="line"><a name="l00422"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9"> 422</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">SVFUtil::timeLimitReached</a>(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;{</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; <span class="comment">// TODO: output does not indicate which time limit is reached.</span></div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="comment">// This can be better in the future.</span></div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;WPA: time limit reached\n&quot;</span>;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a>(101);</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;}</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70"> 431</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70">SVFUtil::startAnalysisLimitTimer</a>(<span class="keywordtype">unsigned</span> timeLimit)</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;{</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">if</span> (timeLimit == 0) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="comment">// If an alarm is already set, don&#39;t set another. That means this analysis</span></div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; <span class="comment">// is part of another which has a time limit.</span></div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <span class="keywordtype">unsigned</span> remainingSeconds = alarm(0);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <span class="keywordflow">if</span> (remainingSeconds != 0)</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; {</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="comment">// Continue the previous alarm and move on.</span></div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; alarm(remainingSeconds);</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; signal(SIGALRM, &amp;<a class="code" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">timeLimitReached</a>);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; alarm(timeLimit);</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;}</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5"> 452</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5">SVFUtil::stopAnalysisLimitTimer</a>(<span class="keywordtype">bool</span> limitTimerSet)</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;{</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="keywordflow">if</span> (limitTimerSet) alarm(0);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;}</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div><div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518"> 457</a></span>&#160;<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518">SVFUtil::type2String</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;{</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">llvm::raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(type != <span class="keyword">nullptr</span> &amp;&amp; <span class="stringliteral">&quot;Given null type!&quot;</span>);</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; rawstr &lt;&lt; *<a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>;</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;}</div><div class="ttc" id="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html">SVF::SparseBitVector::SparseBitVectorIterator</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00534">SparseBitVector.h:534</a></div></div>
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#l00148">SVFUtil.cpp:148</a></div></div>
70
71
  <div class="ttc" id="util_8h_html_a43b6ea6be735bb828bc062c70cadeff8"><div class="ttname"><a href="util_8h.html#a43b6ea6be735bb828bc062c70cadeff8">exit</a></div><div class="ttdeci">VOID_OR_INT exit()</div></div>
71
72
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_add4cd21115988f9f5eec12e268ddf1d9"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">SVF::SVFUtil::timeLimitReached</a></div><div class="ttdeci">void timeLimitReached(int signum)</div><div class="ttdoc">Function to call when alarm for time limit hits. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00422">SVFUtil.cpp:422</a></div></div>
72
73
  <div class="ttc" id="classSVF_1_1Options_html_ab4206ecb79fdcd2d5211bfbd2537cacb"><div class="ttname"><a href="classSVF_1_1Options.html#ab4206ecb79fdcd2d5211bfbd2537cacb">SVF::Options::DisableWarn</a></div><div class="ttdeci">static const llvm::cl::opt&lt; bool &gt; DisableWarn</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00227">Options.h:227</a></div></div>
@@ -84,7 +85,7 @@ $(function() {
84
85
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a054c3e668ce8b265bbc5d923f6243ce7"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7">SVF::SVFUtil::bugMsg2</a></div><div class="ttdeci">std::string bugMsg2(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00087">SVFUtil.cpp:87</a></div></div>
85
86
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a6a55f1f8598998a3ffbbc67d32eaf8c4"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4">SVF::SVFUtil::sucMsg</a></div><div class="ttdeci">std::string sucMsg(std::string msg)</div><div class="ttdoc">Returns successful message by converting a string into green string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00055">SVFUtil.cpp:55</a></div></div>
86
87
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_af4ceddbe4d57b24e80201bc895f73810"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#af4ceddbe4d57b24e80201bc895f73810">SVF::SVFUtil::dumpPointsToList</a></div><div class="ttdeci">void dumpPointsToList(const PointsToList &amp;ptl)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00123">SVFUtil.cpp:123</a></div></div>
87
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
88
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
88
89
  <div class="ttc" id="SVFUtil_8cpp_html_a897b10d246533c95ba86cb79f92e465a"><div class="ttname"><a href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a">KYEL</a></div><div class="ttdeci">#define KYEL</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00044">SVFUtil.cpp:44</a></div></div>
89
90
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00068">SVFUtil.cpp:68</a></div></div>
90
91
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a86c1c8bdfc1075c07c631525555194d2"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a86c1c8bdfc1075c07c631525555194d2">SVF::SVFUtil::getSourceLocOfFunction</a></div><div class="ttdeci">std::string getSourceLocOfFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00249">SVFUtil.cpp:249</a></div></div>
@@ -105,6 +106,7 @@ $(function() {
105
106
  <div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
106
107
  <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>
107
108
  <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#l00368">SVFUtil.cpp:368</a></div></div>
109
+ <div class="ttc" id="classSVF_1_1SparseBitVector_html_a1b5abe09fd0fcd337385653cb47343c1"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a1b5abe09fd0fcd337385653cb47343c1">SVF::SparseBitVector::end</a></div><div class="ttdeci">iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01118">SparseBitVector.h:1118</a></div></div>
108
110
  <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>
109
111
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
110
112
  <div class="ttc" id="fastcluster_8h_html_a4205a14ad66b3320d2e94c61d74913ddad16cc6362447cc32292c4af4c6fe8024"><div class="ttname"><a href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913ddad16cc6362447cc32292c4af4c6fe8024">HCLUST_METHOD_SINGLE</a></div><div class="ttdef"><b>Definition:</b> <a href="fastcluster_8h_source.html#l00068">fastcluster.h:68</a></div></div>
@@ -115,9 +117,11 @@ $(function() {
115
117
  <div class="ttc" id="namespaceSVF_html_a89c7208bfc0b57873dfa574f52050295"><div class="ttname"><a href="namespaceSVF.html#a89c7208bfc0b57873dfa574f52050295">SVF::DISubprogram</a></div><div class="ttdeci">llvm::DISubprogram DISubprogram</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
116
118
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
117
119
  <div class="ttc" id="cJSON_8h_html_a503753140aa27b00f99a3501280b2746"><div class="ttname"><a href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a></div><div class="ttdeci">char * buffer</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00163">cJSON.h:163</a></div></div>
120
+ <div class="ttc" id="classSVF_1_1SparseBitVector_html_abf76d8157c49ddba24bdc9dab3655772"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abf76d8157c49ddba24bdc9dab3655772">SVF::SparseBitVector::begin</a></div><div class="ttdeci">iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01113">SparseBitVector.h:1113</a></div></div>
118
121
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_abd0a9ee845a455f9354d24a8b84a0bb3"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3">SVF::SVFUtil::dumpPointsToSet</a></div><div class="ttdeci">void dumpPointsToSet(unsigned node, NodeBS To)</div><div class="ttdoc">Dump points-to set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00108">SVFUtil.cpp:108</a></div></div>
119
122
  <div class="ttc" id="namespaceSVF_html_ad3d3cec1813411f039211c86236f7adb"><div class="ttname"><a href="namespaceSVF.html#ad3d3cec1813411f039211c86236f7adb">SVF::MDNode</a></div><div class="ttdeci">llvm::MDNode MDNode</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
120
123
  <div class="ttc" id="util_8h_html_aaaaf5365ac473a2e91c3326c08d4eeb2"><div class="ttname"><a href="util_8h.html#aaaaf5365ac473a2e91c3326c08d4eeb2">strstr</a></div><div class="ttdeci">char * strstr()</div></div>
124
+ <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
121
125
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a9e85d445e8b7b205134acd3874bba388"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a9e85d445e8b7b205134acd3874bba388">SVF::SVFUtil::isConstantData</a></div><div class="ttdeci">bool isConstantData(const Value *val)</div><div class="ttdoc">Return true if the value refers to constant data, e.g., i32 0. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00451">SVFUtil.h:451</a></div></div>
122
126
  <div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
123
127
  <div class="ttc" id="SVFUtil_8cpp_html_a66290957baed5df3930ada4cb8caccf1"><div class="ttname"><a href="SVFUtil_8cpp.html#a66290957baed5df3930ada4cb8caccf1">KRED</a></div><div class="ttdeci">#define KRED</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00042">SVFUtil.cpp:42</a></div></div>
@@ -125,7 +129,6 @@ $(function() {
125
129
  <div class="ttc" id="cuddInt_8c_html_a8b2e13c78efca330f06b6ddcd7464b41"><div class="ttname"><a href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a></div><div class="ttdeci">static int result</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l07466">cuddInt.c:7466</a></div></div>
126
130
  <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>
127
131
  <div class="ttc" id="CFLGrammar_8txt_html_a00967427d1c110ffcc82ea2a966f4564"><div class="ttname"><a href="CFLGrammar_8txt.html#a00967427d1c110ffcc82ea2a966f4564">F</a></div><div class="ttdeci">V Fbar V F</div><div class="ttdef"><b>Definition:</b> <a href="CFLGrammar_8txt_source.html#l00016">CFLGrammar.txt:16</a></div></div>
128
- <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>
129
132
  <div class="ttc" id="classSVF_1_1SVFFunction_html_af33c2824b5ca3a44e0467655ae890623"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#af33c2824b5ca3a44e0467655ae890623">SVF::SVFFunction::fun</a></div><div class="ttdeci">Function * fun</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00131">BasicTypes.h:131</a></div></div>
130
133
  <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#l00178">SVFUtil.cpp:178</a></div></div>
131
134
  <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#l00452">SVFUtil.cpp:452</a></div></div>
@@ -133,8 +136,8 @@ $(function() {
133
136
  <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#l00063">SVFUtil.cpp:63</a></div></div>
134
137
  <div class="ttc" id="util_8h_html_a8bf943e1f78acc0236f9075a94765663"><div class="ttname"><a href="util_8h.html#a8bf943e1f78acc0236f9075a94765663">strtok</a></div><div class="ttdeci">char * strtok()</div></div>
135
138
  <div class="ttc" id="SVFUtil_8cpp_html_a137aa83ec74421d226a90c92ec032ac9"><div class="ttname"><a href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9">KNRM</a></div><div class="ttdeci">#define KNRM</div><div class="ttdoc">Color for output format. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00041">SVFUtil.cpp:41</a></div></div>
136
- <div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00027">PointsTo.h:27</a></div></div>
137
- <div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00082">SVFBasicTypes.h:82</a></div></div>
139
+ <div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00028">PointsTo.h:28</a></div></div>
140
+ <div class="ttc" id="namespaceSVF_html_a8bd74fdcb0e58d0249003df9c3fb8b31"><div class="ttname"><a href="namespaceSVF.html#a8bd74fdcb0e58d0249003df9c3fb8b31">SVF::OutStream</a></div><div class="ttdeci">std::ostream OutStream</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00083">SVFBasicTypes.h:83</a></div></div>
138
141
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a5d4bb92f5df30417f414397f8e58cf01"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01">SVF::SVFUtil::errMsg</a></div><div class="ttdeci">std::string errMsg(std::string msg)</div><div class="ttdoc">Print error message by converting a string into red string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00077">SVFUtil.cpp:77</a></div></div>
139
142
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a0d7588578735679773493ff2d5e458e1"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1">SVF::SVFUtil::increaseStackSize</a></div><div class="ttdeci">void increaseStackSize()</div><div class="ttdoc">Increase the stack size limit. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00228">SVFUtil.cpp:228</a></div></div>
140
143
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>