svf-tools 1.0.613 → 1.0.614

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 (538) hide show
  1. package/CMakeLists.txt +13 -0
  2. package/SVF-doxygen/html/html/AndersenPWC_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +2 -2
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +7 -6
  5. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +15 -15
  6. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
  7. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +22 -22
  8. package/SVF-doxygen/html/html/Andersen_8h_source.html +16 -16
  9. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +6 -6
  10. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +7 -7
  11. package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +6 -6
  12. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +1 -1
  13. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +1 -1
  14. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +11 -11
  16. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +1 -1
  17. package/SVF-doxygen/html/html/CFLVF_8cpp_source.html +2 -2
  18. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +5 -5
  19. package/SVF-doxygen/html/html/CHG_8h_source.html +1 -1
  20. package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
  21. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +14 -14
  22. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +1 -1
  23. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +3 -3
  24. package/SVF-doxygen/html/html/ConsG_8h_source.html +9 -9
  25. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +18 -18
  26. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +9 -9
  27. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +4 -4
  28. package/SVF-doxygen/html/html/DCHG_8h_source.html +1 -1
  29. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
  30. package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
  31. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +4 -6
  32. package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
  33. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +9 -9
  34. package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
  35. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +22 -22
  36. package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
  37. package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
  38. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
  39. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +21 -21
  40. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +3 -3
  41. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  42. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
  43. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +7 -7
  44. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +13 -13
  45. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +27 -28
  46. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +65 -65
  47. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  48. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
  49. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  50. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +3 -3
  51. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +3 -3
  52. package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
  53. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
  54. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +3 -3
  55. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +23 -28
  56. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +8 -8
  57. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  58. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +9 -9
  59. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
  60. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
  61. package/SVF-doxygen/html/html/LocationSet_8h_source.html +3 -3
  62. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +5 -5
  63. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +3 -3
  64. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +3 -3
  65. package/SVF-doxygen/html/html/MHP_8cpp_source.html +10 -10
  66. package/SVF-doxygen/html/html/MHP_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +17 -17
  68. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +8 -8
  69. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +3 -3
  70. package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -17
  71. package/SVF-doxygen/html/html/MTA_8h_source.html +3 -4
  72. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +10 -10
  73. package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +34 -34
  75. package/SVF-doxygen/html/html/MemRegion_8h_source.html +7 -7
  76. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +16 -15
  77. package/SVF-doxygen/html/html/MemSSA_8h_source.html +53 -52
  78. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +7 -8
  79. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +7 -7
  80. package/SVF-doxygen/html/html/Options_8cpp_source.html +52 -53
  81. package/SVF-doxygen/html/html/Options_8h_source.html +53 -54
  82. package/SVF-doxygen/html/html/PCG_8cpp_source.html +2 -2
  83. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +3 -3
  84. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +3 -3
  86. package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
  87. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +33 -33
  88. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +91 -95
  89. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +31 -39
  90. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +85 -92
  91. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +20 -20
  92. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +16 -16
  93. package/SVF-doxygen/html/html/PointsTo_8cpp.html +1 -0
  94. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +51 -51
  95. package/SVF-doxygen/html/html/PointsTo_8h_source.html +38 -38
  96. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +6 -6
  97. package/SVF-doxygen/html/html/SCC_8h_source.html +4 -4
  98. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +11 -22
  99. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +14 -17
  100. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
  101. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
  102. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -7
  103. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +21 -19
  104. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +5 -5
  105. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +18 -18
  106. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +49 -62
  107. package/SVF-doxygen/html/html/SVFG_8h_source.html +45 -45
  108. package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +12 -12
  109. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +8 -8
  110. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +3 -3
  111. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +10 -16
  112. package/SVF-doxygen/html/html/SVFIR_8h_source.html +83 -83
  113. package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +19 -19
  114. package/SVF-doxygen/html/html/SVFType_8h.html +22 -22
  115. package/SVF-doxygen/html/html/SVFType_8h_source.html +76 -77
  116. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +5 -5
  117. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +11 -11
  118. package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +5 -5
  119. package/SVF-doxygen/html/html/SVFValue_8h_source.html +4 -4
  120. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
  121. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +6 -6
  123. package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +4 -4
  124. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +15 -15
  125. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -3
  126. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +69 -71
  127. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +13 -13
  128. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +39 -39
  129. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
  130. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +7 -7
  131. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +49 -51
  132. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +13 -13
  133. package/SVF-doxygen/html/html/TCT_8cpp_source.html +4 -4
  134. package/SVF-doxygen/html/html/TCT_8h_source.html +4 -4
  135. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -8
  136. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  137. package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
  138. package/SVF-doxygen/html/html/VFG_8cpp_source.html +17 -17
  139. package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
  140. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +8 -8
  141. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +33 -33
  142. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +4 -4
  143. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +11 -11
  144. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +12 -12
  145. package/SVF-doxygen/html/html/WPAPass_8h_source.html +2 -2
  146. package/SVF-doxygen/html/html/WPASolver_8h_source.html +25 -25
  147. package/SVF-doxygen/html/html/Z3Expr_8cpp_source.html +1 -1
  148. package/SVF-doxygen/html/html/cfl_8cpp.html +1 -5
  149. package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -5
  150. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
  151. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
  152. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
  153. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +2 -2
  154. package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +187 -188
  155. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +104 -107
  156. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +163 -164
  157. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +47 -50
  158. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +194 -195
  159. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +45 -48
  160. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +204 -205
  161. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +35 -38
  162. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +17 -17
  163. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +191 -192
  164. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +29 -32
  165. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +122 -123
  166. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +158 -219
  167. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  168. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +137 -138
  169. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +57 -49
  170. package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +138 -139
  171. package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +34 -34
  172. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +7 -7
  173. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  174. package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +140 -141
  175. package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +30 -30
  176. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +8 -8
  177. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +2 -2
  178. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  179. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +114 -114
  180. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +6 -6
  181. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  182. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +28 -28
  183. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  184. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +6 -6
  185. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
  186. package/SVF-doxygen/html/html/classSVF_1_1DDAPass-members.html +1 -1
  187. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +17 -31
  188. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +10 -10
  189. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +40 -40
  190. package/SVF-doxygen/html/html/classSVF_1_1DFPTData.html +15 -15
  191. package/SVF-doxygen/html/html/classSVF_1_1DiffPTData.html +4 -4
  192. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +11 -11
  193. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +5 -5
  194. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +16 -16
  195. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +2 -2
  196. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +1 -1
  197. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +228 -229
  198. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +62 -65
  199. package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +5 -5
  200. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +17 -17
  201. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +194 -195
  202. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +55 -55
  203. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +219 -220
  204. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +335 -342
  205. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +57 -57
  206. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +6 -6
  207. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +2 -2
  208. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +2 -2
  209. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +4 -4
  210. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +2 -2
  211. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
  212. package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +1 -1
  213. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
  214. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
  215. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +4 -4
  216. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +4 -4
  217. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  218. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +8 -8
  219. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis-members.html +1 -1
  220. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +20 -14
  221. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +4 -4
  222. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +106 -92
  223. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +5 -5
  224. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +36 -36
  225. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
  226. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +12 -12
  227. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +25 -25
  228. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +3 -3
  229. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +26 -26
  230. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +87 -87
  231. package/SVF-doxygen/html/html/classSVF_1_1MTA-members.html +2 -2
  232. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +27 -33
  233. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +21 -21
  234. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +14 -14
  235. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder-members.html +41 -43
  236. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +57 -80
  237. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +3 -3
  238. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +54 -54
  239. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +4 -4
  240. package/SVF-doxygen/html/html/classSVF_1_1MemSSA-members.html +4 -3
  241. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +170 -143
  242. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +16 -16
  243. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +2 -2
  244. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData-members.html +3 -3
  245. package/SVF-doxygen/html/html/classSVF_1_1MutableDiffPTData.html +13 -15
  246. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +7 -7
  247. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
  248. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +8 -8
  249. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +17 -18
  251. package/SVF-doxygen/html/html/classSVF_1_1Options.html +53 -79
  252. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  253. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +2 -2
  254. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +3 -3
  256. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
  257. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +4 -4
  258. package/SVF-doxygen/html/html/classSVF_1_1PTData.html +11 -11
  259. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData-members.html +28 -28
  260. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +174 -177
  261. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData-members.html +17 -17
  262. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +99 -102
  263. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData-members.html +30 -30
  264. package/SVF-doxygen/html/html/classSVF_1_1PersistentIncDFPTData.html +125 -127
  265. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData-members.html +13 -13
  266. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +83 -86
  267. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache-members.html +1 -1
  268. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +122 -122
  269. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData-members.html +22 -22
  270. package/SVF-doxygen/html/html/classSVF_1_1PersistentVersionedPTData.html +137 -140
  271. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +56 -56
  272. package/SVF-doxygen/html/html/classSVF_1_1PointsTo-members.html +16 -16
  273. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +183 -178
  274. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +7 -7
  275. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +87 -65
  276. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +6 -6
  277. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +3 -3
  278. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +1 -1
  279. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument-members.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +4 -4
  281. package/SVF-doxygen/html/html/classSVF_1_1SVFArrayType.html +6 -6
  282. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock-members.html +3 -3
  283. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +13 -16
  284. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue-members.html +1 -1
  285. package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +2 -2
  286. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst-members.html +1 -1
  287. package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +2 -2
  288. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant-members.html +1 -1
  289. package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +3 -3
  290. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData-members.html +1 -1
  291. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +2 -2
  292. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP-members.html +1 -1
  293. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +2 -2
  294. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt-members.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +2 -2
  296. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr-members.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +2 -2
  298. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +1 -1
  299. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +5 -7
  300. package/SVF-doxygen/html/html/classSVF_1_1SVFFunctionType.html +9 -9
  301. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +2 -2
  302. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +211 -236
  303. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder-members.html +7 -9
  304. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +50 -138
  305. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +9 -9
  306. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +82 -82
  307. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +5 -5
  308. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue-members.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +2 -2
  310. package/SVF-doxygen/html/html/classSVF_1_1SVFIR-members.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +203 -215
  312. package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +13 -13
  313. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +79 -79
  314. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction-members.html +1 -1
  315. package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +4 -4
  316. package/SVF-doxygen/html/html/classSVF_1_1SVFIntergerType.html +5 -5
  317. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue-members.html +1 -1
  318. package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +2 -2
  319. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +0 -4
  320. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +5 -5
  321. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue-members.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +3 -3
  323. package/SVF-doxygen/html/html/classSVF_1_1SVFPointerType.html +9 -9
  324. package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +19 -19
  325. package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +5 -5
  326. package/SVF-doxygen/html/html/classSVF_1_1SVFType.html +38 -38
  327. package/SVF-doxygen/html/html/classSVF_1_1SVFValue-members.html +1 -1
  328. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +4 -5
  329. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +1 -1
  330. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst-members.html +1 -1
  331. package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +2 -2
  332. package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +9 -9
  333. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder-members.html +12 -14
  334. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +42 -68
  335. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +1 -1
  336. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +108 -109
  337. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +1 -1
  338. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +50 -50
  339. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +6 -6
  340. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +146 -146
  341. package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +5 -5
  342. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +48 -61
  343. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +178 -179
  344. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +35 -38
  345. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +1 -1
  346. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
  347. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +42 -46
  348. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +10 -10
  349. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +8 -8
  350. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +169 -170
  351. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +29 -32
  352. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  353. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +28 -28
  354. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +263 -264
  355. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +112 -115
  356. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +41 -41
  357. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +1 -1
  358. package/SVF-doxygen/html/html/classSVF_1_1VersionedPTData.html +9 -9
  359. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver-members.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +9 -9
  361. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver-members.html +2 -2
  362. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +15 -15
  363. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +25 -25
  364. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver-members.html +2 -2
  365. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +17 -17
  366. package/SVF-doxygen/html/html/classSVF_1_1WPASolver-members.html +2 -2
  367. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +76 -81
  368. package/SVF-doxygen/html/html/classSVF_1_1Z3Expr.html +2 -2
  369. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  370. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  371. package/SVF-doxygen/html/html/functions.html +1 -1
  372. package/SVF-doxygen/html/html/functions_0x7e.html +16 -16
  373. package/SVF-doxygen/html/html/functions_a.html +7 -7
  374. package/SVF-doxygen/html/html/functions_b.html +6 -6
  375. package/SVF-doxygen/html/html/functions_c.html +27 -27
  376. package/SVF-doxygen/html/html/functions_d.html +10 -11
  377. package/SVF-doxygen/html/html/functions_e.html +2 -2
  378. package/SVF-doxygen/html/html/functions_f.html +6 -6
  379. package/SVF-doxygen/html/html/functions_func.html +6 -6
  380. package/SVF-doxygen/html/html/functions_func_0x7e.html +16 -16
  381. package/SVF-doxygen/html/html/functions_func_b.html +6 -6
  382. package/SVF-doxygen/html/html/functions_func_c.html +27 -27
  383. package/SVF-doxygen/html/html/functions_func_d.html +10 -11
  384. package/SVF-doxygen/html/html/functions_func_e.html +2 -2
  385. package/SVF-doxygen/html/html/functions_func_f.html +5 -5
  386. package/SVF-doxygen/html/html/functions_func_g.html +22 -22
  387. package/SVF-doxygen/html/html/functions_func_h.html +3 -3
  388. package/SVF-doxygen/html/html/functions_func_i.html +2 -2
  389. package/SVF-doxygen/html/html/functions_func_o.html +3 -3
  390. package/SVF-doxygen/html/html/functions_func_p.html +5 -5
  391. package/SVF-doxygen/html/html/functions_func_r.html +5 -8
  392. package/SVF-doxygen/html/html/functions_func_s.html +5 -5
  393. package/SVF-doxygen/html/html/functions_func_t.html +1 -1
  394. package/SVF-doxygen/html/html/functions_func_u.html +23 -23
  395. package/SVF-doxygen/html/html/functions_g.html +25 -28
  396. package/SVF-doxygen/html/html/functions_h.html +3 -3
  397. package/SVF-doxygen/html/html/functions_i.html +5 -5
  398. package/SVF-doxygen/html/html/functions_m.html +1 -1
  399. package/SVF-doxygen/html/html/functions_o.html +13 -13
  400. package/SVF-doxygen/html/html/functions_p.html +19 -19
  401. package/SVF-doxygen/html/html/functions_r.html +11 -12
  402. package/SVF-doxygen/html/html/functions_s.html +32 -35
  403. package/SVF-doxygen/html/html/functions_t.html +12 -12
  404. package/SVF-doxygen/html/html/functions_type_t.html +1 -1
  405. package/SVF-doxygen/html/html/functions_u.html +26 -23
  406. package/SVF-doxygen/html/html/functions_v.html +6 -6
  407. package/SVF-doxygen/html/html/functions_vars.html +1 -1
  408. package/SVF-doxygen/html/html/functions_vars_f.html +1 -1
  409. package/SVF-doxygen/html/html/functions_vars_g.html +0 -3
  410. package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
  411. package/SVF-doxygen/html/html/functions_vars_m.html +1 -1
  412. package/SVF-doxygen/html/html/functions_vars_p.html +2 -2
  413. package/SVF-doxygen/html/html/functions_vars_s.html +5 -8
  414. package/SVF-doxygen/html/html/functions_vars_t.html +1 -1
  415. package/SVF-doxygen/html/html/functions_vars_u.html +3 -0
  416. package/SVF-doxygen/html/html/functions_w.html +3 -7
  417. package/SVF-doxygen/html/html/include_2MTA_2MTAResultValidator_8h_source.html +1 -1
  418. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  419. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  420. package/SVF-doxygen/html/html/namespaceSVF.html +35 -35
  421. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +2 -2
  422. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +4 -4
  423. package/SVF-doxygen/html/html/saber_8cpp.html +1 -5
  424. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -5
  425. package/SVF-doxygen/html/html/search/all_0.js +1 -1
  426. package/SVF-doxygen/html/html/search/all_1.js +4 -4
  427. package/SVF-doxygen/html/html/search/all_10.js +15 -15
  428. package/SVF-doxygen/html/html/search/all_11.js +1 -2
  429. package/SVF-doxygen/html/html/search/all_12.js +19 -20
  430. package/SVF-doxygen/html/html/search/all_13.js +8 -8
  431. package/SVF-doxygen/html/html/search/all_14.js +13 -12
  432. package/SVF-doxygen/html/html/search/all_15.js +4 -4
  433. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  434. package/SVF-doxygen/html/html/search/all_19.js +16 -16
  435. package/SVF-doxygen/html/html/search/all_2.js +6 -6
  436. package/SVF-doxygen/html/html/search/all_3.js +14 -14
  437. package/SVF-doxygen/html/html/search/all_4.js +5 -5
  438. package/SVF-doxygen/html/html/search/all_5.js +2 -2
  439. package/SVF-doxygen/html/html/search/all_6.js +5 -5
  440. package/SVF-doxygen/html/html/search/all_7.js +11 -12
  441. package/SVF-doxygen/html/html/search/all_8.js +3 -3
  442. package/SVF-doxygen/html/html/search/all_9.js +3 -3
  443. package/SVF-doxygen/html/html/search/all_b.js +1 -1
  444. package/SVF-doxygen/html/html/search/all_c.js +3 -3
  445. package/SVF-doxygen/html/html/search/all_d.js +3 -3
  446. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  447. package/SVF-doxygen/html/html/search/all_f.js +5 -5
  448. package/SVF-doxygen/html/html/search/functions_0.js +4 -4
  449. package/SVF-doxygen/html/html/search/functions_1.js +6 -6
  450. package/SVF-doxygen/html/html/search/functions_10.js +1 -2
  451. package/SVF-doxygen/html/html/search/functions_11.js +10 -10
  452. package/SVF-doxygen/html/html/search/functions_12.js +1 -1
  453. package/SVF-doxygen/html/html/search/functions_13.js +12 -12
  454. package/SVF-doxygen/html/html/search/functions_17.js +16 -16
  455. package/SVF-doxygen/html/html/search/functions_2.js +14 -14
  456. package/SVF-doxygen/html/html/search/functions_3.js +5 -5
  457. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  458. package/SVF-doxygen/html/html/search/functions_5.js +4 -4
  459. package/SVF-doxygen/html/html/search/functions_6.js +11 -11
  460. package/SVF-doxygen/html/html/search/functions_7.js +3 -3
  461. package/SVF-doxygen/html/html/search/functions_8.js +2 -2
  462. package/SVF-doxygen/html/html/search/functions_d.js +1 -1
  463. package/SVF-doxygen/html/html/search/functions_e.js +3 -3
  464. package/SVF-doxygen/html/html/search/functions_f.js +5 -5
  465. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  466. package/SVF-doxygen/html/html/search/variables_0.js +1 -1
  467. package/SVF-doxygen/html/html/search/variables_10.js +2 -2
  468. package/SVF-doxygen/html/html/search/variables_12.js +5 -6
  469. package/SVF-doxygen/html/html/search/variables_13.js +3 -3
  470. package/SVF-doxygen/html/html/search/variables_14.js +1 -0
  471. package/SVF-doxygen/html/html/search/variables_6.js +1 -1
  472. package/SVF-doxygen/html/html/search/variables_7.js +0 -1
  473. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  474. package/SVF-doxygen/html/html/search/variables_d.js +1 -1
  475. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  476. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +14 -14
  477. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +2 -2
  478. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
  479. package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +1 -1
  480. package/SVF-doxygen/html/html/structSVF_1_1GenericGraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  481. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  482. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +1 -1
  483. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +47 -57
  484. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  485. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +1 -1
  486. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +5 -5
  487. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  488. package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -7
  489. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  490. package/SVF-doxygen/html/html/tools_2MTA_2MTAResultValidator_8h_source.html +1 -1
  491. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  492. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  493. package/build.sh +2 -2
  494. package/include/DDA/DDAPass.h +1 -1
  495. package/include/DDA/FlowDDA.h +1 -1
  496. package/include/Graphs/ICFG.h +1 -1
  497. package/include/Graphs/SVFG.h +3 -4
  498. package/include/Graphs/SVFGOPT.h +7 -7
  499. package/include/MSSA/MemSSA.h +2 -0
  500. package/include/MSSA/SVFGBuilder.h +5 -14
  501. package/include/MTA/MTA.h +2 -2
  502. package/include/MemoryModel/MutablePointsToDS.h +3 -3
  503. package/include/MemoryModel/PersistentPointsToCache.h +7 -8
  504. package/include/MemoryModel/PersistentPointsToDS.h +93 -93
  505. package/include/MemoryModel/PointerAnalysisImpl.h +17 -28
  506. package/include/MemoryModel/PointsTo.h +24 -24
  507. package/include/SABER/SrcSnkDDA.h +10 -13
  508. package/include/SVF-LLVM/LLVMLoopAnalysis.h +2 -1
  509. package/include/SVF-LLVM/LLVMModule.h +6 -6
  510. package/include/SVFIR/SVFIR.h +3 -5
  511. package/include/SVFIR/SVFType.h +6 -8
  512. package/include/SVFIR/SVFValue.h +3 -3
  513. package/include/Util/Options.h +0 -1
  514. package/include/Util/SparseBitVector.h +6 -14
  515. package/include/WPA/FlowSensitive.h +13 -20
  516. package/include/WPA/WPASolver.h +5 -9
  517. package/lib/DDA/DDAPass.cpp +4 -4
  518. package/lib/Graphs/CFLGraph.cpp +3 -0
  519. package/lib/Graphs/SVFG.cpp +1 -1
  520. package/lib/MSSA/MemSSA.cpp +5 -3
  521. package/lib/MSSA/SVFGBuilder.cpp +9 -27
  522. package/lib/MTA/MTA.cpp +4 -4
  523. package/lib/MemoryModel/PointerAnalysisImpl.cpp +10 -10
  524. package/lib/MemoryModel/PointsTo.cpp +23 -19
  525. package/lib/SVF-LLVM/LLVMLoopAnalysis.cpp +3 -4
  526. package/lib/SVF-LLVM/LLVMModule.cpp +32 -21
  527. package/lib/SVFIR/SVFIR.cpp +1 -1
  528. package/lib/SVFIR/SymbolTableInfo.cpp +4 -15
  529. package/lib/Util/Options.cpp +0 -6
  530. package/lib/WPA/AndersenSFR.cpp +1 -1
  531. package/lib/WPA/FlowSensitive.cpp +1 -1
  532. package/package.json +1 -1
  533. package/tools/CFL/cfl.cpp +5 -4
  534. package/tools/DDA/dda.cpp +3 -2
  535. package/tools/Example/svf-ex.cpp +3 -2
  536. package/tools/MTA/mta.cpp +6 -4
  537. package/tools/SABER/saber.cpp +7 -5
  538. package/tools/WPA/wpa.cpp +3 -2
@@ -66,12 +66,12 @@ $(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;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;sys/resource.h&gt;</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="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9"> 39</a></span>&#160;<span class="preprocessor">#define KNRM &quot;\x1B[1;0m&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a66290957baed5df3930ada4cb8caccf1"> 40</a></span>&#160;<span class="preprocessor">#define KRED &quot;\x1B[1;31m&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#ac081c83b067273757f7a2e54a5957d41"> 41</a></span>&#160;<span class="preprocessor">#define KGRN &quot;\x1B[1;32m&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a"> 42</a></span>&#160;<span class="preprocessor">#define KYEL &quot;\x1B[1;33m&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a3f838f2fc3a9a3b434be606fc908964b"> 43</a></span>&#160;<span class="preprocessor">#define KBLU &quot;\x1B[1;34m&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a326cbc9ef8d75aa44a591bf476c9835b"> 44</a></span>&#160;<span class="preprocessor">#define KPUR &quot;\x1B[1;35m&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#add84f76d7bfbbc2b00215d7195f8d3bd"> 45</a></span>&#160;<span class="preprocessor">#define KCYA &quot;\x1B[1;36m&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#af0036c8022c9980079ab17e5c87fd478"> 46</a></span>&#160;<span class="preprocessor">#define KWHT &quot;\x1B[1;37m&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4"> 53</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="l00054"></a><span class="lineno"> 54</span>&#160;{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</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="l00056"></a><span class="lineno"> 56</span>&#160;}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d"> 61</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="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d"> 66</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="l00067"></a><span class="lineno"> 67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ab4206ecb79fdcd2d5211bfbd2537cacb">Options::DisableWarn</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</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="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01"> 75</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="l00076"></a><span class="lineno"> 76</span>&#160;{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">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="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08"> 80</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="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</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="l00083"></a><span class="lineno"> 83</span>&#160;}</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7"> 85</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="l00086"></a><span class="lineno"> 86</span>&#160;{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553"> 90</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="l00091"></a><span class="lineno"> 91</span>&#160;{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738"> 98</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="l00099"></a><span class="lineno"> 99</span>&#160;{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</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="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3"> 106</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="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="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="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</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;}\n&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">// For use from the debugger.</span></div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442"> 114</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="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;{&quot;</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</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;}\n&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;}</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af4ceddbe4d57b24e80201bc895f73810"> 121</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="l00122"></a><span class="lineno"> 122</span>&#160;{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (PointsToList::const_iterator ii = ptl.begin(), ie = ptl.end();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">auto</span> bs = *ii;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61"> 136</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="l00137"></a><span class="lineno"> 137</span>&#160;{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</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="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</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;}\n&quot;</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab"> 146</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="l00147"></a><span class="lineno"> 147</span>&#160;{</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</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="l00149"></a><span class="lineno"> 149</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 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="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a04aa23b4982662d98c56af3e8ba16cb1"> 155</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="l00156"></a><span class="lineno"> 156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> : pt)</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; 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="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;}</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3"> 166</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="l00167"></a><span class="lineno"> 167</span>&#160;{</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vmrss, vmsize;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</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="l00170"></a><span class="lineno"> 170</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="l00171"></a><span class="lineno"> 171</span>&#160;}</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c"> 176</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="l00177"></a><span class="lineno"> 177</span>&#160;{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">/* Get the the current process&#39; status file from the proc filesystem */</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordtype">char</span> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>[8192];</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</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="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span>(procfile)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> result = fread(buffer, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>), 8192, procfile);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (result == 0)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; fputs (<span class="stringliteral">&quot;Reading error\n&quot;</span>,stderr);</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; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">else</span></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; fputs (<span class="stringliteral">&quot;/proc/self/status file not exit\n&quot;</span>,stderr);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; fclose(procfile);</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; <span class="comment">/* Look through proc status contents line by line */</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">char</span> delims[] = <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">char</span>* line = strtok(buffer, delims);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">bool</span> found_vmrss = <span class="keyword">false</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordtype">bool</span> found_vmsize = <span class="keyword">false</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">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="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">if</span> (strstr(line, <span class="stringliteral">&quot;VmRSS:&quot;</span>) != <span class="keyword">nullptr</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; sscanf(line, <span class="stringliteral">&quot;%*s %u&quot;</span>, vmrss_kb);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; found_vmrss = <span class="keyword">true</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (strstr(line, <span class="stringliteral">&quot;VmSize:&quot;</span>) != <span class="keyword">nullptr</span>)</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; sscanf(line, <span class="stringliteral">&quot;%*s %u&quot;</span>, vmsize_kb);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; found_vmsize = <span class="keyword">true</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; line = strtok(<span class="keyword">nullptr</span>, delims);</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;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> (found_vmrss &amp;&amp; found_vmsize);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;}</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1"> 226</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="l00227"></a><span class="lineno"> 227</span>&#160;{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</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="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">struct </span>rlimit rl;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">int</span> result = getrlimit(RLIMIT_STACK, &amp;rl);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (result == 0)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (rl.rlim_cur &lt; kStackSize)</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; rl.rlim_cur = kStackSize;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; result = setrlimit(RLIMIT_STACK, &amp;rl);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> (result != 0)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</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="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17"> 246</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17">SVFUtil::isIntrinsicInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* call = SVFUtil::dyn_cast&lt;SVFCallInst&gt;(inst))</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = call-&gt;getCalledFunction();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (func &amp;&amp; func-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a7b4c6c7143d012802ea5ee962bec2deb">isIntrinsic</a>())</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160"> 259</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="l00260"></a><span class="lineno"> 260</span>&#160;{</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913ddad16cc6362447cc32292c4af4c6fe8024">HCLUST_METHOD_SINGLE</a>:</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;single&quot;</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;complete&quot;</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</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="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;average&quot;</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</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="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;median&quot;</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</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="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;svf-best&quot;</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;SVFUtil::hclustMethodToString: unknown method&quot;</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; abort();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;}</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9"> 279</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="l00280"></a><span class="lineno"> 280</span>&#160;{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">// TODO: output does not indicate which time limit is reached.</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// This can be better in the future.</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</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="l00285"></a><span class="lineno"> 285</span>&#160; exit(101);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;}</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70"> 288</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="l00289"></a><span class="lineno"> 289</span>&#160;{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (timeLimit == 0) <span class="keywordflow">return</span> <span class="keyword">false</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; <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="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// is part of another which has a time limit.</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">unsigned</span> remainingSeconds = alarm(0);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (remainingSeconds != 0)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// Continue the previous alarm and move on.</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; alarm(remainingSeconds);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</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; signal(SIGALRM, &amp;<a class="code" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">timeLimitReached</a>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; alarm(timeLimit);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="l00309"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5"> 309</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="l00310"></a><span class="lineno"> 310</span>&#160;{</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (limitTimerSet) alarm(0);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</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#l00536">SparseBitVector.h:536</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;<span class="preprocessor">#include &quot;<a class="code" href="PointsTo_8h.html">MemoryModel/PointsTo.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &lt;sys/resource.h&gt;</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="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a137aa83ec74421d226a90c92ec032ac9"> 39</a></span>&#160;<span class="preprocessor">#define KNRM &quot;\x1B[1;0m&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a66290957baed5df3930ada4cb8caccf1"> 40</a></span>&#160;<span class="preprocessor">#define KRED &quot;\x1B[1;31m&quot;</span></div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#ac081c83b067273757f7a2e54a5957d41"> 41</a></span>&#160;<span class="preprocessor">#define KGRN &quot;\x1B[1;32m&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a897b10d246533c95ba86cb79f92e465a"> 42</a></span>&#160;<span class="preprocessor">#define KYEL &quot;\x1B[1;33m&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a3f838f2fc3a9a3b434be606fc908964b"> 43</a></span>&#160;<span class="preprocessor">#define KBLU &quot;\x1B[1;34m&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#a326cbc9ef8d75aa44a591bf476c9835b"> 44</a></span>&#160;<span class="preprocessor">#define KPUR &quot;\x1B[1;35m&quot;</span></div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#add84f76d7bfbbc2b00215d7195f8d3bd"> 45</a></span>&#160;<span class="preprocessor">#define KCYA &quot;\x1B[1;36m&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="SVFUtil_8cpp.html#af0036c8022c9980079ab17e5c87fd478"> 46</a></span>&#160;<span class="preprocessor">#define KWHT &quot;\x1B[1;37m&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6a55f1f8598998a3ffbbc67d32eaf8c4"> 53</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="l00054"></a><span class="lineno"> 54</span>&#160;{</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</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="l00056"></a><span class="lineno"> 56</span>&#160;}</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6c06020737f7dff22a666b75c28c5e7d"> 61</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="l00062"></a><span class="lineno"> 62</span>&#160;{</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</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="l00064"></a><span class="lineno"> 64</span>&#160;}</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d"> 66</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="l00067"></a><span class="lineno"> 67</span>&#160;{</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="classSVF_1_1Options.html#ab4206ecb79fdcd2d5211bfbd2537cacb">Options::DisableWarn</a>) <span class="keywordflow">return</span>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</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="l00070"></a><span class="lineno"> 70</span>&#160;}</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a5d4bb92f5df30417f414397f8e58cf01"> 75</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="l00076"></a><span class="lineno"> 76</span>&#160;{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">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="l00078"></a><span class="lineno"> 78</span>&#160;}</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af6c66553e2559eebfe4f98c0c7ec4b08"> 80</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="l00081"></a><span class="lineno"> 81</span>&#160;{</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</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="l00083"></a><span class="lineno"> 83</span>&#160;}</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a054c3e668ce8b265bbc5d923f6243ce7"> 85</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="l00086"></a><span class="lineno"> 86</span>&#160;{</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</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="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553"> 90</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="l00091"></a><span class="lineno"> 91</span>&#160;{</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</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="l00093"></a><span class="lineno"> 93</span>&#160;}</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738"> 98</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="l00099"></a><span class="lineno"> 99</span>&#160;{</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</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="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#abd0a9ee845a455f9354d24a8b84a0bb3"> 106</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="l00107"></a><span class="lineno"> 107</span>&#160;{</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="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="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</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;}\n&quot;</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;}</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">// For use from the debugger.</span></div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442"> 114</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="l00115"></a><span class="lineno"> 115</span>&#160;{</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <span class="stringliteral">&quot;{&quot;</span>;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</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;}\n&quot;</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;}</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#af4ceddbe4d57b24e80201bc895f73810"> 121</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="l00122"></a><span class="lineno"> 122</span>&#160;{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</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="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keywordflow">for</span> (PointsToList::const_iterator ii = ptl.begin(), ie = ptl.end();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">auto</span> bs = *ii;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</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="l00131"></a><span class="lineno"> 131</span>&#160;}</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61"> 136</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="l00137"></a><span class="lineno"> 137</span>&#160;{</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</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="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab">dumpSet</a>(bs);</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;}\n&quot;</span>;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;}</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#aeb570e9267fd7b189bd1bc877896d7ab"> 146</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="l00147"></a><span class="lineno"> 147</span>&#160;{</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</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="l00149"></a><span class="lineno"> 149</span>&#160; ii != ie; ii++)</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; {</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; 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="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a04aa23b4982662d98c56af3e8ba16cb1"> 155</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="l00156"></a><span class="lineno"> 156</span>&#160;{</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">NodeID</a> <a class="code" href="cJSON_8cpp.html#ab6e2ea6dc7bd57d1483413449998230a">n</a> : pt)</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; 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="l00160"></a><span class="lineno"> 160</span>&#160; }</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;}</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a6cfe12afa463d0ceddeee11540c33ab3"> 166</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="l00167"></a><span class="lineno"> 167</span>&#160;{</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> vmrss, vmsize;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</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="l00170"></a><span class="lineno"> 170</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="l00171"></a><span class="lineno"> 171</span>&#160;}</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a630ff9c47f58f9b8df7c8a2b3711477c"> 176</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="l00177"></a><span class="lineno"> 177</span>&#160;{</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="comment">/* Get the the current process&#39; status file from the proc filesystem */</span></div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordtype">char</span> <a class="code" href="cJSON_8h.html#a503753140aa27b00f99a3501280b2746">buffer</a>[8192];</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</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="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">if</span>(procfile)</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> result = fread(buffer, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>), 8192, procfile);</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">if</span> (result == 0)</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; {</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; fputs (<span class="stringliteral">&quot;Reading error\n&quot;</span>,stderr);</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; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">else</span></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; fputs (<span class="stringliteral">&quot;/proc/self/status file not exit\n&quot;</span>,stderr);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; }</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; fclose(procfile);</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; <span class="comment">/* Look through proc status contents line by line */</span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordtype">char</span> delims[] = <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordtype">char</span>* line = strtok(buffer, delims);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; <span class="keywordtype">bool</span> found_vmrss = <span class="keyword">false</span>;</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordtype">bool</span> found_vmsize = <span class="keyword">false</span>;</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">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="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">if</span> (strstr(line, <span class="stringliteral">&quot;VmRSS:&quot;</span>) != <span class="keyword">nullptr</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; sscanf(line, <span class="stringliteral">&quot;%*s %u&quot;</span>, vmrss_kb);</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; found_vmrss = <span class="keyword">true</span>;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (strstr(line, <span class="stringliteral">&quot;VmSize:&quot;</span>) != <span class="keyword">nullptr</span>)</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; sscanf(line, <span class="stringliteral">&quot;%*s %u&quot;</span>, vmsize_kb);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; found_vmsize = <span class="keyword">true</span>;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; }</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; line = strtok(<span class="keyword">nullptr</span>, delims);</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;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> (found_vmrss &amp;&amp; found_vmsize);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;}</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a0d7588578735679773493ff2d5e458e1"> 226</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="l00227"></a><span class="lineno"> 227</span>&#160;{</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</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="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">struct </span>rlimit rl;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordtype">int</span> result = getrlimit(RLIMIT_STACK, &amp;rl);</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">if</span> (result == 0)</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; {</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <span class="keywordflow">if</span> (rl.rlim_cur &lt; kStackSize)</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; rl.rlim_cur = kStackSize;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; result = setrlimit(RLIMIT_STACK, &amp;rl);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">if</span> (result != 0)</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</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="l00239"></a><span class="lineno"> 239</span>&#160; }</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; }</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;}</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17"> 246</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1SVFUtil.html#abb2bbf6e0dc5adae2140a519259e6f17">SVFUtil::isIntrinsicInst</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFInstruction.html">SVFInstruction</a>* inst)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;{</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFCallInst.html">SVFCallInst</a>* call = SVFUtil::dyn_cast&lt;SVFCallInst&gt;(inst))</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; {</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* func = call-&gt;getCalledFunction();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">if</span> (func &amp;&amp; func-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#a7b4c6c7143d012802ea5ee962bec2deb">isIntrinsic</a>())</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; }</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;}</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a14a4c5124f2fd03ca3d898e2acd54160"> 259</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="l00260"></a><span class="lineno"> 260</span>&#160;{</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; <span class="keywordflow">switch</span> (method)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; <span class="keywordflow">case</span> <a class="code" href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913ddad16cc6362447cc32292c4af4c6fe8024">HCLUST_METHOD_SINGLE</a>:</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;single&quot;</span>;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</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="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;complete&quot;</span>;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</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="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;average&quot;</span>;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</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="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;median&quot;</span>;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</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="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keywordflow">return</span> <span class="stringliteral">&quot;svf-best&quot;</span>;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">default</span>:</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; assert(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;SVFUtil::hclustMethodToString: unknown method&quot;</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; abort();</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;}</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div><div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9"> 279</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="l00280"></a><span class="lineno"> 280</span>&#160;{</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>().flush();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">// TODO: output does not indicate which time limit is reached.</span></div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">// This can be better in the future.</span></div><div class="line"><a name="l00284"></a><span class="lineno"> 284</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="l00285"></a><span class="lineno"> 285</span>&#160; exit(101);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;}</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a757815a2c758695176120509ceb0ce70"> 288</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="l00289"></a><span class="lineno"> 289</span>&#160;{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">if</span> (timeLimit == 0) <span class="keywordflow">return</span> <span class="keyword">false</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; <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="l00293"></a><span class="lineno"> 293</span>&#160; <span class="comment">// is part of another which has a time limit.</span></div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="keywordtype">unsigned</span> remainingSeconds = alarm(0);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">if</span> (remainingSeconds != 0)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// Continue the previous alarm and move on.</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; alarm(remainingSeconds);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; }</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; signal(SIGALRM, &amp;<a class="code" href="namespaceSVF_1_1SVFUtil.html#add4cd21115988f9f5eec12e268ddf1d9">timeLimitReached</a>);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; alarm(timeLimit);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="l00309"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1SVFUtil.html#a168f7f7a3a8c70dbf2b5b4269cd4c7c5"> 309</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="l00310"></a><span class="lineno"> 310</span>&#160;{</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">if</span> (limitTimerSet) alarm(0);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</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#l00528">SparseBitVector.h:528</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1SVFInstruction_html"><div class="ttname"><a href="classSVF_1_1SVFInstruction.html">SVF::SVFInstruction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00570">SVFValue.h:570</a></div></div>
71
71
  <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#l00146">SVFUtil.cpp:146</a></div></div>
72
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#l00279">SVFUtil.cpp:279</a></div></div>
73
73
  <div class="ttc" id="namespaceSVF_html_a350ae9bf8606bdfe23c8679681b969dc"><div class="ttname"><a href="namespaceSVF.html#a350ae9bf8606bdfe23c8679681b969dc">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="include_2MTA_2MTAResultValidator_8h_source.html#l00020">MTAResultValidator.h:20</a></div></div>
74
- <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#l00228">Options.h:228</a></div></div>
74
+ <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>
75
75
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ab30a35713852a0a525c52ae5dd463442"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab30a35713852a0a525c52ae5dd463442">SVF::SVFUtil::dumpSparseSet</a></div><div class="ttdeci">void dumpSparseSet(const NodeBS &amp;To)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00114">SVFUtil.cpp:114</a></div></div>
76
76
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00098">SVFUtil.cpp:98</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8h_source.html#l00257">SVFValue.h:257</a></div></div>
@@ -95,7 +95,7 @@ $(function() {
95
95
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a4a15cc5570eed12dd6ee766213e11d61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4a15cc5570eed12dd6ee766213e11d61">SVF::SVFUtil::dumpAliasSet</a></div><div class="ttdeci">void dumpAliasSet(unsigned node, NodeBS To)</div><div class="ttdoc">Dump alias set. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00136">SVFUtil.cpp:136</a></div></div>
96
96
  <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>
97
97
  <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#l00259">SVFUtil.cpp:259</a></div></div>
98
- <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#l01120">SparseBitVector.h:1120</a></div></div>
98
+ <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#l01112">SparseBitVector.h:1112</a></div></div>
99
99
  <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>
100
100
  <div class="ttc" id="PointsTo_8h_html"><div class="ttname"><a href="PointsTo_8h.html">PointsTo.h</a></div></div>
101
101
  <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>
@@ -103,9 +103,9 @@ $(function() {
103
103
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aabbca7c40d2da6bd2374ea53d5de0553"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aabbca7c40d2da6bd2374ea53d5de0553">SVF::SVFUtil::bugMsg3</a></div><div class="ttdeci">std::string bugMsg3(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00090">SVFUtil.cpp:90</a></div></div>
104
104
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
105
105
  <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>
106
- <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#l01115">SparseBitVector.h:1115</a></div></div>
106
+ <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#l01107">SparseBitVector.h:1107</a></div></div>
107
107
  <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#l00106">SVFUtil.cpp:106</a></div></div>
108
- <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#l00462">SparseBitVector.h:462</a></div></div>
108
+ <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#l00454">SparseBitVector.h:454</a></div></div>
109
109
  <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#l00040">SVFUtil.cpp:40</a></div></div>
110
110
  <div class="ttc" id="fastcluster_8h_html_a4205a14ad66b3320d2e94c61d74913dda3ab72664fc61704a1ba46bddbc347115"><div class="ttname"><a href="fastcluster_8h.html#a4205a14ad66b3320d2e94c61d74913dda3ab72664fc61704a1ba46bddbc347115">HCLUST_METHOD_AVERAGE</a></div><div class="ttdef"><b>Definition:</b> <a href="fastcluster_8h_source.html#l00072">fastcluster.h:72</a></div></div>
111
111
  <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="AbstractValue_8h_source.html#l00037">AbstractValue.h:37</a></div></div>