svf-tools 1.0.503 → 1.0.506

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/LICENSE.TXT +4 -2
  2. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  3. package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +4 -4
  4. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +4 -4
  5. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +5 -5
  6. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +8 -7
  7. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +7 -7
  8. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +12 -6
  9. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +4 -4
  10. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +21 -17
  11. package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -9
  12. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +8 -4
  13. package/SVF-doxygen/html/html/BDDExpr_8h_source.html +5 -5
  14. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +4 -4
  15. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +2 -2
  16. package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +3 -3
  17. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +6 -6
  18. package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +5 -4
  19. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +7 -6
  20. package/SVF-doxygen/html/html/CFLGraphBuilder_8cpp_source.html +2 -2
  21. package/SVF-doxygen/html/html/CFLGraphBuilder_8h_source.html +1 -1
  22. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +2 -1
  23. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +6 -6
  24. package/SVF-doxygen/html/html/CHG_8cpp.html +1 -1
  25. package/SVF-doxygen/html/html/CHG_8cpp_source.html +2 -2
  26. package/SVF-doxygen/html/html/CHG_8h_source.html +5 -4
  27. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
  28. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +3 -3
  29. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
  30. package/SVF-doxygen/html/html/CSC_8cpp_source.html +5 -4
  31. package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
  32. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +12 -10
  33. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  34. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +3 -3
  35. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
  36. package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -4
  37. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +10 -10
  38. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +8 -8
  39. package/SVF-doxygen/html/html/CoreBitVector_8cpp.html +1 -1
  40. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +4 -2
  41. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  42. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
  43. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +8 -6
  44. package/SVF-doxygen/html/html/DCHG_8h_source.html +5 -5
  45. package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +8 -8
  46. package/SVF-doxygen/html/html/DDAClient_8h_source.html +3 -3
  47. package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +7 -7
  48. package/SVF-doxygen/html/html/DDAPass_8h_source.html +3 -3
  49. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +6 -4
  50. package/SVF-doxygen/html/html/DDAStat_8h_source.html +5 -5
  51. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +12 -8
  52. package/SVF-doxygen/html/html/DPItem_8h_source.html +4 -4
  53. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
  54. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +2 -2
  55. package/SVF-doxygen/html/html/ExeState_8h_source.html +4 -4
  56. package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
  57. package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +3 -3
  58. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +2 -2
  59. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +17 -12
  60. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +6 -6
  61. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +10 -10
  62. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +4 -4
  63. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +12 -10
  64. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +19 -15
  65. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +6 -6
  66. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +1 -1
  68. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
  69. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
  70. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
  71. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +3 -3
  72. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +2 -2
  73. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  74. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +6 -6
  75. package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
  76. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
  77. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
  78. package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
  79. package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +3 -3
  80. package/SVF-doxygen/html/html/LLVMModule_8cpp.html +25 -7
  81. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +12 -7
  82. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +15 -14
  83. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +2 -2
  84. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
  85. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +5 -3
  86. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
  87. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +7 -4
  88. package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -5
  89. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +7 -7
  90. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +8 -8
  91. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
  92. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +3 -3
  93. package/SVF-doxygen/html/html/MHP_8cpp.html +1 -1
  94. package/SVF-doxygen/html/html/MHP_8cpp_source.html +19 -13
  95. package/SVF-doxygen/html/html/MHP_8h_source.html +10 -6
  96. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
  97. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +11 -8
  98. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +3 -3
  99. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +12 -6
  100. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +4 -4
  101. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
  102. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  103. package/SVF-doxygen/html/html/MTA_8cpp_source.html +6 -6
  104. package/SVF-doxygen/html/html/MTA_8h_source.html +2 -2
  105. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +11 -2
  106. package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
  107. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +19 -11
  108. package/SVF-doxygen/html/html/MemRegion_8h_source.html +12 -7
  109. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +6 -6
  110. package/SVF-doxygen/html/html/MemSSA_8h_source.html +5 -5
  111. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +8 -4
  112. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +10 -10
  113. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +4 -4
  114. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +6 -2
  115. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  116. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  117. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  118. package/SVF-doxygen/html/html/PCG_8cpp_source.html +3 -3
  119. package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
  120. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +6 -4
  121. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +8 -7
  122. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -6
  123. package/SVF-doxygen/html/html/PTAStat_8h_source.html +4 -4
  124. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +7 -7
  125. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +5 -5
  126. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
  127. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  128. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +12 -10
  129. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +16 -13
  130. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +11 -11
  131. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +9 -9
  132. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +36 -24
  133. package/SVF-doxygen/html/html/PointsTo_8h.html +1 -0
  134. package/SVF-doxygen/html/html/PointsTo_8h_source.html +34 -33
  135. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +8 -5
  136. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +3 -3
  137. package/SVF-doxygen/html/html/SCC_8h_source.html +7 -4
  138. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +27 -29
  139. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +76 -73
  140. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +2 -2
  141. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +4 -4
  142. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +5 -5
  143. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +7 -5
  144. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -5
  145. package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +8 -6
  146. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +6 -5
  147. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
  148. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +11 -9
  149. package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
  150. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +5 -5
  151. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
  152. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -3
  153. package/SVF-doxygen/html/html/SVFIR_8h_source.html +7 -7
  154. package/SVF-doxygen/html/html/SVFLoop_8h_source.html +2 -2
  155. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  156. package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
  157. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +2 -2
  158. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +6 -6
  159. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +8 -5
  160. package/SVF-doxygen/html/html/SVFUtil_8h.html +4 -4
  161. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +17 -11
  162. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +2 -2
  163. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
  164. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  165. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +2 -2
  166. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +8 -8
  167. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +3 -3
  168. package/SVF-doxygen/html/html/SparseBitVector_8h.html +201 -0
  169. package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +179 -0
  170. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +10 -7
  171. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +4 -4
  172. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  173. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +3 -3
  174. package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
  175. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +5 -5
  176. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
  177. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +6 -6
  178. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +5 -5
  179. package/SVF-doxygen/html/html/TCT_8cpp_source.html +8 -7
  180. package/SVF-doxygen/html/html/TCT_8h_source.html +10 -7
  181. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
  182. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +2 -2
  183. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +8 -5
  184. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +4 -4
  185. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
  186. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  187. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +7 -7
  188. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  189. package/SVF-doxygen/html/html/VFGNode_8h_source.html +6 -6
  190. package/SVF-doxygen/html/html/VFG_8cpp_source.html +7 -5
  191. package/SVF-doxygen/html/html/VFG_8h_source.html +5 -5
  192. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +6 -6
  193. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +15 -10
  194. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +7 -7
  195. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +6 -3
  196. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +6 -6
  197. package/SVF-doxygen/html/html/WPAPass_8h_source.html +3 -3
  198. package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
  199. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  200. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  201. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  202. package/SVF-doxygen/html/html/annotated.html +169 -162
  203. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +4 -4
  204. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +4 -4
  205. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +5 -4
  206. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +5 -4
  207. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +5 -4
  208. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  209. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +53 -41
  210. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +6 -6
  211. package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +9 -9
  212. package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +5 -5
  213. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +9 -9
  214. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +16 -16
  215. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +19 -17
  216. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +16 -10
  217. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +11 -11
  218. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +17 -10
  220. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +26 -22
  221. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +5 -4
  222. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
  223. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
  224. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +5 -5
  225. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +6 -6
  226. package/SVF-doxygen/html/html/classSVF_1_1CFLGraphBuilder.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +13 -13
  228. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +1 -1
  229. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +8 -6
  230. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +2 -2
  232. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +5 -4
  233. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +8 -7
  234. package/SVF-doxygen/html/html/classSVF_1_1CondPointsToSet.html +2 -2
  235. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +1 -1
  236. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +14 -14
  237. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +12 -12
  238. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +25 -25
  239. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +5 -4
  240. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +6 -5
  241. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +1 -1
  242. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +18 -16
  244. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
  245. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +7 -7
  246. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +12 -10
  247. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +36 -33
  248. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +50 -42
  249. package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
  250. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +4 -3
  251. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +3 -3
  252. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +2 -2
  253. package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
  254. package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +20 -20
  256. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +64 -51
  257. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +18 -15
  258. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +23 -21
  259. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +4 -4
  260. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +4 -4
  261. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +6 -5
  262. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +6 -5
  263. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +1 -1
  264. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +1 -1
  265. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
  266. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +5 -4
  267. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +3 -3
  268. package/SVF-doxygen/html/html/classSVF_1_1GrammarBase_1_1SymbolHash.html +1 -1
  269. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +4 -4
  270. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +2 -2
  271. package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +1 -1
  272. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +2 -2
  274. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +6 -6
  275. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +40 -39
  276. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +4 -4
  277. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  278. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +53 -48
  279. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
  280. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +2 -2
  281. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +4 -4
  282. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  283. package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +3 -3
  284. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +25 -24
  285. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +85 -45
  286. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  287. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +5 -4
  288. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +13 -9
  289. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +40 -40
  290. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
  291. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +56 -43
  292. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +153 -125
  293. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +6 -6
  294. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +4 -4
  295. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +8 -8
  296. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +13 -10
  297. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +24 -15
  298. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +44 -36
  299. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +2 -2
  300. package/SVF-doxygen/html/html/classSVF_1_1MemRegion.html +12 -8
  301. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +23 -23
  302. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +3 -3
  303. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +4 -2
  304. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +11 -11
  305. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +5 -4
  306. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +10 -7
  307. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  308. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +3 -3
  309. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +5 -4
  310. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +8 -6
  311. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +5 -3
  312. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +13 -10
  313. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +15 -15
  314. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  315. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  316. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
  317. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
  318. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
  319. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +22 -22
  320. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +214 -206
  321. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator-members.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +83 -75
  323. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +13 -7
  324. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +1 -1
  325. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +2 -2
  326. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection.html +11 -8
  327. package/SVF-doxygen/html/html/classSVF_1_1SCCDetection_1_1GNodeSCCInfo.html +8 -7
  328. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +2 -2
  329. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +4 -4
  330. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +49 -40
  331. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +4 -4
  332. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +34 -29
  333. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +11 -9
  334. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +2 -2
  335. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +11 -10
  336. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +46 -46
  337. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +2 -2
  338. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +3 -3
  339. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  340. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +16 -16
  341. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector-members.html +117 -0
  342. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1358 -0
  343. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator-members.html +95 -0
  344. package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector_1_1SparseBitVectorIterator.html +594 -0
  345. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +13 -12
  346. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +1 -1
  347. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +4 -4
  348. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  349. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +4 -4
  350. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +20 -20
  351. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +8 -8
  352. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +23 -23
  353. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +1 -1
  354. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +12 -9
  355. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +2 -2
  356. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  357. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +5 -4
  358. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +6 -6
  359. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +44 -39
  361. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +11 -10
  362. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive_1_1SCC.html +2 -1
  363. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +4 -3
  364. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +14 -11
  365. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +7 -7
  366. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +4 -3
  367. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  368. package/SVF-doxygen/html/html/classes.html +107 -106
  369. package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
  370. package/SVF-doxygen/html/html/files.html +8 -7
  371. package/SVF-doxygen/html/html/functions_a.html +12 -3
  372. package/SVF-doxygen/html/html/functions_b.html +27 -5
  373. package/SVF-doxygen/html/html/functions_c.html +25 -14
  374. package/SVF-doxygen/html/html/functions_e.html +20 -2
  375. package/SVF-doxygen/html/html/functions_eval_b.html +10 -0
  376. package/SVF-doxygen/html/html/functions_f.html +31 -13
  377. package/SVF-doxygen/html/html/functions_func.html +8 -2
  378. package/SVF-doxygen/html/html/functions_func_b.html +4 -3
  379. package/SVF-doxygen/html/html/functions_func_c.html +24 -16
  380. package/SVF-doxygen/html/html/functions_func_e.html +5 -2
  381. package/SVF-doxygen/html/html/functions_func_f.html +19 -1
  382. package/SVF-doxygen/html/html/functions_func_g.html +13 -10
  383. package/SVF-doxygen/html/html/functions_func_i.html +18 -8
  384. package/SVF-doxygen/html/html/functions_func_o.html +19 -8
  385. package/SVF-doxygen/html/html/functions_func_r.html +4 -2
  386. package/SVF-doxygen/html/html/functions_func_s.html +16 -5
  387. package/SVF-doxygen/html/html/functions_func_t.html +4 -0
  388. package/SVF-doxygen/html/html/functions_func_u.html +3 -0
  389. package/SVF-doxygen/html/html/functions_func_w.html +3 -0
  390. package/SVF-doxygen/html/html/functions_g.html +16 -13
  391. package/SVF-doxygen/html/html/functions_i.html +24 -12
  392. package/SVF-doxygen/html/html/functions_l.html +3 -3
  393. package/SVF-doxygen/html/html/functions_o.html +28 -17
  394. package/SVF-doxygen/html/html/functions_p.html +19 -17
  395. package/SVF-doxygen/html/html/functions_r.html +5 -5
  396. package/SVF-doxygen/html/html/functions_s.html +25 -11
  397. package/SVF-doxygen/html/html/functions_t.html +14 -8
  398. package/SVF-doxygen/html/html/functions_type_b.html +3 -0
  399. package/SVF-doxygen/html/html/functions_type_e.html +9 -0
  400. package/SVF-doxygen/html/html/functions_type_i.html +1 -0
  401. package/SVF-doxygen/html/html/functions_type_s.html +3 -0
  402. package/SVF-doxygen/html/html/functions_u.html +3 -0
  403. package/SVF-doxygen/html/html/functions_v.html +3 -3
  404. package/SVF-doxygen/html/html/functions_vars_a.html +3 -0
  405. package/SVF-doxygen/html/html/functions_vars_b.html +10 -0
  406. package/SVF-doxygen/html/html/functions_vars_c.html +3 -0
  407. package/SVF-doxygen/html/html/functions_vars_e.html +6 -0
  408. package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
  409. package/SVF-doxygen/html/html/functions_vars_s.html +1 -1
  410. package/SVF-doxygen/html/html/functions_vars_w.html +3 -0
  411. package/SVF-doxygen/html/html/functions_w.html +11 -11
  412. package/SVF-doxygen/html/html/globals_defs_h.html +6 -0
  413. package/SVF-doxygen/html/html/globals_defs_s.html +5 -2
  414. package/SVF-doxygen/html/html/globals_h.html +8 -2
  415. package/SVF-doxygen/html/html/globals_s.html +14 -11
  416. package/SVF-doxygen/html/html/hierarchy.html +161 -154
  417. package/SVF-doxygen/html/html/menudata.js +2 -1
  418. package/SVF-doxygen/html/html/namespaceSVF.html +559 -70
  419. package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +5 -5
  420. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +27 -23
  421. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +3 -3
  422. package/SVF-doxygen/html/html/namespacemembers_c.html +9 -0
  423. package/SVF-doxygen/html/html/namespacemembers_d.html +4 -1
  424. package/SVF-doxygen/html/html/namespacemembers_enum.html +3 -0
  425. package/SVF-doxygen/html/html/namespacemembers_eval.html +9 -0
  426. package/SVF-doxygen/html/html/namespacemembers_func.html +20 -2
  427. package/SVF-doxygen/html/html/namespacemembers_n.html +1 -1
  428. package/SVF-doxygen/html/html/namespacemembers_o.html +7 -1
  429. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  430. package/SVF-doxygen/html/html/namespacemembers_type.html +1 -4
  431. package/SVF-doxygen/html/html/namespacemembers_z.html +85 -0
  432. package/SVF-doxygen/html/html/search/all_1.js +3 -1
  433. package/SVF-doxygen/html/html/search/all_10.js +10 -8
  434. package/SVF-doxygen/html/html/search/all_12.js +2 -2
  435. package/SVF-doxygen/html/html/search/all_13.js +16 -11
  436. package/SVF-doxygen/html/html/search/all_14.js +9 -8
  437. package/SVF-doxygen/html/html/search/all_15.js +2 -1
  438. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  439. package/SVF-doxygen/html/html/search/all_17.js +3 -2
  440. package/SVF-doxygen/html/html/search/all_1a.js +4 -0
  441. package/SVF-doxygen/html/html/search/all_2.js +8 -3
  442. package/SVF-doxygen/html/html/search/all_3.js +7 -3
  443. package/SVF-doxygen/html/html/search/all_4.js +1 -1
  444. package/SVF-doxygen/html/html/search/all_5.js +7 -3
  445. package/SVF-doxygen/html/html/search/all_6.js +8 -3
  446. package/SVF-doxygen/html/html/search/all_7.js +1 -0
  447. package/SVF-doxygen/html/html/search/all_8.js +3 -1
  448. package/SVF-doxygen/html/html/search/all_9.js +8 -6
  449. package/SVF-doxygen/html/html/search/all_c.js +2 -1
  450. package/SVF-doxygen/html/html/search/all_d.js +2 -2
  451. package/SVF-doxygen/html/html/search/all_e.js +2 -2
  452. package/SVF-doxygen/html/html/search/all_f.js +15 -15
  453. package/SVF-doxygen/html/html/search/classes_10.js +1 -0
  454. package/SVF-doxygen/html/html/search/classes_7.js +1 -1
  455. package/SVF-doxygen/html/html/search/classes_9.js +1 -0
  456. package/SVF-doxygen/html/html/search/classes_d.js +2 -0
  457. package/SVF-doxygen/html/html/search/classes_f.js +3 -0
  458. package/SVF-doxygen/html/html/search/defines_6.js +2 -0
  459. package/SVF-doxygen/html/html/search/defines_f.js +2 -1
  460. package/SVF-doxygen/html/html/search/enums_d.html +26 -0
  461. package/SVF-doxygen/html/html/search/enums_d.js +4 -0
  462. package/SVF-doxygen/html/html/search/enumvalues_1.js +3 -0
  463. package/SVF-doxygen/html/html/search/enumvalues_14.js +3 -2
  464. package/SVF-doxygen/html/html/search/files_d.js +1 -0
  465. package/SVF-doxygen/html/html/search/functions_0.js +2 -0
  466. package/SVF-doxygen/html/html/search/functions_1.js +1 -1
  467. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  468. package/SVF-doxygen/html/html/search/functions_11.js +4 -1
  469. package/SVF-doxygen/html/html/search/functions_12.js +2 -2
  470. package/SVF-doxygen/html/html/search/functions_13.js +1 -0
  471. package/SVF-doxygen/html/html/search/functions_15.js +1 -0
  472. package/SVF-doxygen/html/html/search/functions_2.js +6 -3
  473. package/SVF-doxygen/html/html/search/functions_3.js +1 -1
  474. package/SVF-doxygen/html/html/search/functions_4.js +2 -2
  475. package/SVF-doxygen/html/html/search/functions_5.js +6 -1
  476. package/SVF-doxygen/html/html/search/functions_6.js +1 -0
  477. package/SVF-doxygen/html/html/search/functions_8.js +4 -2
  478. package/SVF-doxygen/html/html/search/functions_e.js +12 -12
  479. package/SVF-doxygen/html/html/search/searchdata.js +2 -2
  480. package/SVF-doxygen/html/html/search/typedefs_1.js +1 -0
  481. package/SVF-doxygen/html/html/search/typedefs_11.js +1 -1
  482. package/SVF-doxygen/html/html/search/typedefs_4.js +3 -0
  483. package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
  484. package/SVF-doxygen/html/html/search/typedefs_d.js +1 -1
  485. package/SVF-doxygen/html/html/search/variables_1.js +1 -1
  486. package/SVF-doxygen/html/html/search/variables_13.js +1 -1
  487. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  488. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  489. package/SVF-doxygen/html/html/search/variables_17.js +1 -0
  490. package/SVF-doxygen/html/html/search/variables_2.js +3 -1
  491. package/SVF-doxygen/html/html/search/variables_3.js +1 -0
  492. package/SVF-doxygen/html/html/search/variables_5.js +2 -1
  493. package/SVF-doxygen/html/html/search/variables_9.js +1 -0
  494. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  495. package/SVF-doxygen/html/html/structSVF_1_1GrammarBase_1_1Symbol.html +4 -4
  496. package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
  497. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  498. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
  499. package/SVF-doxygen/html/html/structSVF_1_1LeadingZerosCounter-members.html +81 -0
  500. package/SVF-doxygen/html/html/structSVF_1_1LeadingZerosCounter.html +138 -0
  501. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter-members.html +81 -0
  502. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter.html +129 -0
  503. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter_3_01T_00_018_01_4-members.html +81 -0
  504. package/SVF-doxygen/html/html/structSVF_1_1PopulationCounter_3_01T_00_018_01_4.html +129 -0
  505. package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1equalNodeBS.html +3 -3
  506. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement-members.html +107 -0
  507. package/SVF-doxygen/html/html/structSVF_1_1SparseBitVectorElement.html +981 -0
  508. package/SVF-doxygen/html/html/structSVF_1_1TrailingZerosCounter-members.html +81 -0
  509. package/SVF-doxygen/html/html/structSVF_1_1TrailingZerosCounter.html +138 -0
  510. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  511. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  512. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  513. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +1 -1
  514. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
  515. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  516. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1PointsTo_01_4.html +3 -3
  517. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4-members.html +81 -0
  518. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +136 -0
  519. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  520. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +1 -1
  521. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  522. package/SVF-doxygen/html/html/svf-ex_8cpp.html +6 -6
  523. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +6 -6
  524. package/include/MemoryModel/PointsTo.h +3 -2
  525. package/include/SVF-FE/LLVMModule.h +3 -0
  526. package/include/Util/SVFBasicTypes.h +6 -5
  527. package/include/Util/SparseBitVector.h +1208 -0
  528. package/lib/MemoryModel/PointsTo.cpp +12 -12
  529. package/lib/SVF-FE/LLVMModule.cpp +157 -18
  530. package/lib/Util/CoreBitVector.cpp +2 -2
  531. package/lib/WPA/Andersen.cpp +1 -1
  532. package/lib/WPA/FlowSensitive.cpp +1 -1
  533. package/package.json +1 -1
@@ -66,7 +66,7 @@ $(function() {
66
66
  <div class="title">LeakChecker.h</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="LeakChecker_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- LeakChecker.h -- Detecting memory leaks--------------------------------//</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"> * LeakChecker.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 1, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: rockysui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef LEAKCHECKER_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define LEAKCHECKER_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SrcSnkDDA_8h.html">SABER/SrcSnkDDA.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SaberCheckerAPI_8h.html">SABER/SaberCheckerAPI.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">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="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LeakChecker.html">LeakChecker</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html">SrcSnkDDA</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a90c7275babe222f006233d2f2d2b6700"> 46</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFGNode*,const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1LeakChecker.html#a90c7275babe222f006233d2f2d2b6700">SVFGNodeToCSIDMap</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#aa0d4c66929f8ae39cf5efc77e873f642"> 47</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1LeakChecker.html#aa0d4c66929f8ae39cf5efc77e873f642">CSWorkList</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#af1e1f0fd38f72dcdfb5daa3d8af9538b"> 48</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">ProgSlice::VFWorkList</a> <a class="code" href="classSVF_1_1LeakChecker.html#af1e1f0fd38f72dcdfb5daa3d8af9538b">WorkList</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a65b05e30410e40fe64d41f71516cd367"> 49</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1LeakChecker.html#a65b05e30410e40fe64d41f71516cd367">SVFGNodeBS</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842d"> 50</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842d">LEAK_TYPE</a></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da3ec849f333df9530fb0a6a285c26b86d"> 52</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da3ec849f333df9530fb0a6a285c26b86d">NEVER_FREE_LEAK</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da1524077f4425b7e2d6cc32917a02c356"> 53</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da1524077f4425b7e2d6cc32917a02c356">CONTEXT_LEAK</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da5ef9b70f9a245b7a6b94a4456daabcda"> 54</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da5ef9b70f9a245b7a6b94a4456daabcda">PATH_LEAK</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da20b4563d5fc09a0a076800cd02f238f1"> 55</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da20b4563d5fc09a0a076800cd02f238f1">GLOBAL_LEAK</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="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#af1140475e97947d193784d2b90809036"> 59</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#af1140475e97947d193784d2b90809036">LeakChecker</a>()</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a1c47ce036a7ffcd7cbe5d5e372a30208"> 63</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1LeakChecker.html#a1c47ce036a7ffcd7cbe5d5e372a30208">~LeakChecker</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"> 66</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#ab3bb79d88d73c8b881d714921e7b5e12"> 68</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LeakChecker.html#ab3bb79d88d73c8b881d714921e7b5e12">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">analyze</a>(module);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</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="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a273a7bfc3e81505ec971ca1d419bb565">initSrcs</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a36613a8c07cbc3d50a764c9f37162d6c">initSnks</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#afeee30f5f0c08d9aed59be3064bcc134"> 81</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LeakChecker.html#afeee30f5f0c08d9aed59be3064bcc134">isSourceLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> override</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-&gt;<a class="code" href="classSVF_1_1SaberCheckerAPI.html#a71cbe5fbf582d0801f604595d3dfb416">isMemAlloc</a>(fun);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#aa45d35a0dc5162e8cef8b27b92ff243d"> 86</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LeakChecker.html#aa45d35a0dc5162e8cef8b27b92ff243d">isSinkLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> override</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-&gt;<a class="code" href="classSVF_1_1SaberCheckerAPI.html#ab6d9c2435bdb1c01542cc75e9eef0a4e">isMemDealloc</a>(fun);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#aa8bd31ae91ed1e9890203f865982a065">reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice) <span class="keyword">override</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a7b6710c3b56141a249bfc29fb6181583">reportNeverFree</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a93486083c0f186b91e655cbef2382634">reportPartialLeak</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#aaf5d098e0d08929a108fb59bff46e424">testsValidation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a0aa051a956b61cad9ec5419f33829e6a">validateSuccessTests</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">validateExpectedFailureTests</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a155da7c60f3232b43a3996313b0496c7"> 107</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a155da7c60f3232b43a3996313b0496c7">addSrcToCSID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">srcToCSIDMap</a>[src] = cs;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846"> 111</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src)</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; SVFGNodeToCSIDMap::iterator it =<a class="code" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">srcToCSIDMap</a>.find(src);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=<a class="code" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">srcToCSIDMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;source node not at a callsite??&quot;</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852"> 119</a></span>&#160; SVFGNodeToCSIDMap <a class="code" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">srcToCSIDMap</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;};</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LEAKCHECKER_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LeakChecker_html"><div class="ttname"><a href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00042">LeakChecker.h:42</a></div></div>
69
+ <a href="LeakChecker_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">//===- LeakChecker.h -- Detecting memory leaks--------------------------------//</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"> * LeakChecker.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Created on: Apr 1, 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: rockysui</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#ifndef LEAKCHECKER_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define LEAKCHECKER_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SrcSnkDDA_8h.html">SABER/SrcSnkDDA.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SaberCheckerAPI_8h.html">SABER/SaberCheckerAPI.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">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="l00038"></a><span class="lineno"> 38</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html"> 42</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1LeakChecker.html">LeakChecker</a> : <span class="keyword">public</span> <a class="code" href="classSVF_1_1SrcSnkDDA.html">SrcSnkDDA</a></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;{</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a90c7275babe222f006233d2f2d2b6700"> 46</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map&lt;const SVFGNode*,const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1LeakChecker.html#a90c7275babe222f006233d2f2d2b6700">SVFGNodeToCSIDMap</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#aa0d4c66929f8ae39cf5efc77e873f642"> 47</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">FIFOWorkList&lt;const CallICFGNode*&gt;</a> <a class="code" href="classSVF_1_1LeakChecker.html#aa0d4c66929f8ae39cf5efc77e873f642">CSWorkList</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#af1e1f0fd38f72dcdfb5daa3d8af9538b"> 48</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1FIFOWorkList.html">ProgSlice::VFWorkList</a> <a class="code" href="classSVF_1_1LeakChecker.html#af1e1f0fd38f72dcdfb5daa3d8af9538b">WorkList</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a65b05e30410e40fe64d41f71516cd367"> 49</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1LeakChecker.html#a65b05e30410e40fe64d41f71516cd367">SVFGNodeBS</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842d"> 50</a></span>&#160; <span class="keyword">enum</span> <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842d">LEAK_TYPE</a></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; {</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da3ec849f333df9530fb0a6a285c26b86d"> 52</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da3ec849f333df9530fb0a6a285c26b86d">NEVER_FREE_LEAK</a>,</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da1524077f4425b7e2d6cc32917a02c356"> 53</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da1524077f4425b7e2d6cc32917a02c356">CONTEXT_LEAK</a>,</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da5ef9b70f9a245b7a6b94a4456daabcda"> 54</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da5ef9b70f9a245b7a6b94a4456daabcda">PATH_LEAK</a>,</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da20b4563d5fc09a0a076800cd02f238f1"> 55</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da20b4563d5fc09a0a076800cd02f238f1">GLOBAL_LEAK</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="l00059"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#af1140475e97947d193784d2b90809036"> 59</a></span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#af1140475e97947d193784d2b90809036">LeakChecker</a>()</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a1c47ce036a7ffcd7cbe5d5e372a30208"> 63</a></span>&#160; <span class="keyword">virtual</span> <a class="code" href="classSVF_1_1LeakChecker.html#a1c47ce036a7ffcd7cbe5d5e372a30208">~LeakChecker</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"> 66</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#ab3bb79d88d73c8b881d714921e7b5e12"> 68</a></span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LeakChecker.html#ab3bb79d88d73c8b881d714921e7b5e12">runOnModule</a>(<a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* module)</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classSVF_1_1SrcSnkDDA.html#ac12d813bcba4ec70de5e9048bbe16afc">analyze</a>(module);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</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="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a273a7bfc3e81505ec971ca1d419bb565">initSrcs</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a36613a8c07cbc3d50a764c9f37162d6c">initSnks</a>() <span class="keyword">override</span>;</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#afeee30f5f0c08d9aed59be3064bcc134"> 81</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LeakChecker.html#afeee30f5f0c08d9aed59be3064bcc134">isSourceLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> override</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-&gt;<a class="code" href="classSVF_1_1SaberCheckerAPI.html#a71cbe5fbf582d0801f604595d3dfb416">isMemAlloc</a>(fun);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#aa45d35a0dc5162e8cef8b27b92ff243d"> 86</a></span>&#160; <span class="keyword">virtual</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LeakChecker.html#aa45d35a0dc5162e8cef8b27b92ff243d">isSinkLikeFun</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun)<span class="keyword"> override</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SaberCheckerAPI::getCheckerAPI</a>()-&gt;<a class="code" href="classSVF_1_1SaberCheckerAPI.html#ab6d9c2435bdb1c01542cc75e9eef0a4e">isMemDealloc</a>(fun);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#aa8bd31ae91ed1e9890203f865982a065">reportBug</a>(<a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice) <span class="keyword">override</span>;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a7b6710c3b56141a249bfc29fb6181583">reportNeverFree</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a93486083c0f186b91e655cbef2382634">reportPartialLeak</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#aaf5d098e0d08929a108fb59bff46e424">testsValidation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1ProgSlice.html">ProgSlice</a>* slice);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a0aa051a956b61cad9ec5419f33829e6a">validateSuccessTests</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">validateExpectedFailureTests</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* source, <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;</div><div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a155da7c60f3232b43a3996313b0496c7"> 107</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LeakChecker.html#a155da7c60f3232b43a3996313b0496c7">addSrcToCSID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src, <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cs)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <a class="code" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">srcToCSIDMap</a>[src] = cs;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846"> 111</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1LeakChecker.html#a8cc561fddf3435b3b40ff4aace23b846">getSrcCSID</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1VFGNode.html">SVFGNode</a>* src)</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; SVFGNodeToCSIDMap::iterator it =<a class="code" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">srcToCSIDMap</a>.find(src);</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it!=<a class="code" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">srcToCSIDMap</a>.end() &amp;&amp; <span class="stringliteral">&quot;source node not at a callsite??&quot;</span>);</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852"> 119</a></span>&#160; SVFGNodeToCSIDMap <a class="code" href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">srcToCSIDMap</a>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;};</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* LEAKCHECKER_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LeakChecker_html"><div class="ttname"><a href="classSVF_1_1LeakChecker.html">SVF::LeakChecker</a></div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00042">LeakChecker.h:42</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a42f54433e5ca60928f3c329ab545842d"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842d">SVF::LeakChecker::LEAK_TYPE</a></div><div class="ttdeci">LEAK_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00050">LeakChecker.h:50</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1LeakChecker_html_af098d01a353a217bd54a90f92f62a45f"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#af098d01a353a217bd54a90f92f62a45f">SVF::LeakChecker::validateExpectedFailureTests</a></div><div class="ttdeci">void validateExpectedFailureTests(const SVFGNode *source, const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00256">LeakChecker.cpp:256</a></div></div>
72
72
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
@@ -79,7 +79,7 @@ $(function() {
79
79
  <div class="ttc" id="classSVF_1_1LeakChecker_html_aa8bd31ae91ed1e9890203f865982a065"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#aa8bd31ae91ed1e9890203f865982a065">SVF::LeakChecker::reportBug</a></div><div class="ttdeci">virtual void reportBug(ProgSlice *slice) override</div><div class="ttdoc">Report leaks. </div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00166">LeakChecker.cpp:166</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a7b6710c3b56141a249bfc29fb6181583"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a7b6710c3b56141a249bfc29fb6181583">SVF::LeakChecker::reportNeverFree</a></div><div class="ttdeci">void reportNeverFree(const SVFGNode *src)</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00152">LeakChecker.cpp:152</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1LeakChecker_html_afeee30f5f0c08d9aed59be3064bcc134"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#afeee30f5f0c08d9aed59be3064bcc134">SVF::LeakChecker::isSourceLikeFun</a></div><div class="ttdeci">virtual bool isSourceLikeFun(const SVFFunction *fun) override</div><div class="ttdoc">Whether the function is a heap allocator/reallocator (allocate memory) </div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00081">LeakChecker.h:81</a></div></div>
82
- <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00109">SVFBasicTypes.h:109</a></div></div>
82
+ <div class="ttc" id="namespaceSVF_html_a8234d4b959abc9123993bcff4eee34c1"><div class="ttname"><a href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">SVF::Map</a></div><div class="ttdeci">std::unordered_map&lt; Key, Value, Hash, KeyEqual, Allocator &gt; Map</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00110">SVFBasicTypes.h:110</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_acf41a2b6de063da9ed492ef0da129036"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#acf41a2b6de063da9ed492ef0da129036">SVF::SaberCheckerAPI::getCheckerAPI</a></div><div class="ttdeci">static SaberCheckerAPI * getCheckerAPI()</div><div class="ttdoc">Return a static reference. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00089">SaberCheckerAPI.h:89</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a90c7275babe222f006233d2f2d2b6700"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a90c7275babe222f006233d2f2d2b6700">SVF::LeakChecker::SVFGNodeToCSIDMap</a></div><div class="ttdeci">Map&lt; const SVFGNode *, const CallICFGNode * &gt; SVFGNodeToCSIDMap</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00046">LeakChecker.h:46</a></div></div>
85
85
  <div class="ttc" id="classSVF_1_1SaberCheckerAPI_html_ab6d9c2435bdb1c01542cc75e9eef0a4e"><div class="ttname"><a href="classSVF_1_1SaberCheckerAPI.html#ab6d9c2435bdb1c01542cc75e9eef0a4e">SVF::SaberCheckerAPI::isMemDealloc</a></div><div class="ttdeci">bool isMemDealloc(const SVFFunction *fun) const</div><div class="ttdoc">Return true if this call is a memory deallocation. </div><div class="ttdef"><b>Definition:</b> <a href="SaberCheckerAPI_8h_source.html#l00116">SaberCheckerAPI.h:116</a></div></div>
@@ -97,10 +97,10 @@ $(function() {
97
97
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a42f54433e5ca60928f3c329ab545842da3ec849f333df9530fb0a6a285c26b86d"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da3ec849f333df9530fb0a6a285c26b86d">SVF::LeakChecker::NEVER_FREE_LEAK</a></div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00052">LeakChecker.h:52</a></div></div>
98
98
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a65b05e30410e40fe64d41f71516cd367"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a65b05e30410e40fe64d41f71516cd367">SVF::LeakChecker::SVFGNodeBS</a></div><div class="ttdeci">NodeBS SVFGNodeBS</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00049">LeakChecker.h:49</a></div></div>
99
99
  <div class="ttc" id="classSVF_1_1CallICFGNode_html"><div class="ttname"><a href="classSVF_1_1CallICFGNode.html">SVF::CallICFGNode</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFGNode_8h_source.html#l00363">ICFGNode.h:363</a></div></div>
100
+ <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
100
101
  <div class="ttc" id="SaberCheckerAPI_8h_html"><div class="ttname"><a href="SaberCheckerAPI_8h.html">SaberCheckerAPI.h</a></div></div>
101
102
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a46b4447bf1bf34d3b8e56cce93e04852"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a46b4447bf1bf34d3b8e56cce93e04852">SVF::LeakChecker::srcToCSIDMap</a></div><div class="ttdeci">SVFGNodeToCSIDMap srcToCSIDMap</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00119">LeakChecker.h:119</a></div></div>
102
103
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
103
- <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
104
104
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a36613a8c07cbc3d50a764c9f37162d6c"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a36613a8c07cbc3d50a764c9f37162d6c">SVF::LeakChecker::initSnks</a></div><div class="ttdeci">virtual void initSnks() override</div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8cpp_source.html#l00108">LeakChecker.cpp:108</a></div></div>
105
105
  <div class="ttc" id="classSVF_1_1LeakChecker_html_a42f54433e5ca60928f3c329ab545842da1524077f4425b7e2d6cc32917a02c356"><div class="ttname"><a href="classSVF_1_1LeakChecker.html#a42f54433e5ca60928f3c329ab545842da1524077f4425b7e2d6cc32917a02c356">SVF::LeakChecker::CONTEXT_LEAK</a></div><div class="ttdef"><b>Definition:</b> <a href="LeakChecker_8h_source.html#l00053">LeakChecker.h:53</a></div></div>
106
106
  <div class="ttc" id="SrcSnkDDA_8h_html"><div class="ttname"><a href="SrcSnkDDA_8h.html">SrcSnkDDA.h</a></div></div>
@@ -66,22 +66,23 @@ $(function() {
66
66
  <div class="title">LocationSet.cpp</div> </div>
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
- <a href="LocationSet_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">//===- LocationSet.cpp -- Location set for modeling abstract memory object----//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * @file: LocationSet.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 26 Sep 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * LICENSE</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</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="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceLLVMUtil.html">LLVMUtil</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b"> 44</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">LocationSet::addOffsetValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* offsetVal, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;{</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; offsetValues.push_back(std::make_pair(offsetVal,type));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d"> 51</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">LocationSet::isConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it : offsetValues)</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">if</span>(SVFUtil::isa&lt;ConstantInt&gt;(it.first) == <span class="keyword">false</span>)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ac66b56e1fa180be9b09d7bfe653ff311"> 65</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1LocationSet.html#ac66b56e1fa180be9b09d7bfe653ff311">LocationSet::getElementNum</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ArrayType&gt;(type) || SVFUtil::isa&lt;StructType&gt;(type))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(type);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;isSingleValueType())</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pty = SVFUtil::dyn_cast&lt;PointerType&gt;(type))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> getElementNum(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(pty));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;GepIter Type&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518">type2String</a>(type) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;What other types for this gep?&quot;</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">// struct inner{ int rollNumber; float percentage;};</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">// struct Student { struct inner rollNumber; char studentName[10][3];}</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">// char x = studentRecord[1].studentName[3][2];</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ad8e250859aa1cf6ce18c6c0b7bbb2710"> 116</a></span>&#160;<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="classSVF_1_1LocationSet.html#ad8e250859aa1cf6ce18c6c0b7bbb2710">LocationSet::accumulateConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isConstantOffset() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(offsetValues.empty())</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> accumulateConstantFieldIdx();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> totalConstOffset = 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = offsetValues.size() - 1; i &gt;= 0; i--)</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">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = offsetValues[i].first;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = offsetValues[i].second;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *op = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>&gt;(value);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(op &amp;&amp; <span class="stringliteral">&quot;not a constant offset?&quot;</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>(type==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; totalConstOffset += op-&gt;getSExtValue();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pty = SVFUtil::dyn_cast&lt;PointerType&gt;(type))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; totalConstOffset += op-&gt;getSExtValue() * getElementNum(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(pty));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op-&gt;getSExtValue();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(type, offset);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; totalConstOffset += flattenOffset;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f"> 151</a></span>&#160;<a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">LocationSet::computeAllLocations</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; result.set(accumulateConstantFieldIdx());</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a67387c3b42fcc1bb3ee8fe85bda02ba8"> 158</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1LocationSet.html#a67387c3b42fcc1bb3ee8fe85bda02ba8">LocationSet::operator+ </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls(rhs);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd">fldIdx</a> += accumulateConstantFieldIdx();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; OffsetValueVec::const_iterator it = getOffsetValueVec().begin();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; OffsetValueVec::const_iterator eit = getOffsetValueVec().end();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">addOffsetValue</a>(it-&gt;first, it-&gt;second);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a511e8324d88624013eed04e8c2a6cbc4"> 171</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a511e8324d88624013eed04e8c2a6cbc4">LocationSet::operator&lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span> (fldIdx != rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd">fldIdx</a>)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> (fldIdx &lt; rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd">fldIdx</a>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; pairVec = getOffsetValueVec();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">else</span></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; OffsetValueVec::const_iterator it = pairVec.begin();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; OffsetValueVec::const_iterator rhsIt = rhsPairVec.begin();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;}</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10"> 195</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">SVF::LocationSet::LSRelation</a> <a class="code" href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10">LocationSet::checkRelation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; RHS)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (lhsLocations.intersects(rhsLocations))</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> Same;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.contains(rhsLocations))</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> Superset;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.contains(lhsLocations))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> Subset;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> Overlap;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> NonOverlap;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c"> 217</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c">LocationSet::dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LocationSet\tField_Index: &quot;</span> &lt;&lt; accumulateConstantFieldIdx();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; vec = getOffsetValueVec();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; OffsetValueVec::const_iterator it = vec.begin();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; OffsetValueVec::const_iterator eit = vec.end();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (value: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(it-&gt;first) &lt;&lt; <span class="stringliteral">&quot; type: &quot;</span> &lt;&lt; it-&gt;second &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</div><div class="ttc" id="classSVF_1_1LocationSet_html_a4a9185282308c50f86fdf66f7060373d"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">SVF::LocationSet::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00051">LocationSet.cpp:51</a></div></div>
69
+ <a href="LocationSet_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">//===- LocationSet.cpp -- Location set for modeling abstract memory object----//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// Copyright (C) &lt;2013-2017&gt; &lt;Yulei Sui&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * @file: LocationSet.cpp</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * @author: yesen</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * @date: 26 Sep 2014</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * LICENSE</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</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="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LocationSet_8h.html">MemoryModel/LocationSet.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="SVFUtil_8h.html">Util/SVFUtil.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="LLVMUtil_8h.html">SVF-FE/LLVMUtil.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVFUtil.html">SVFUtil</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceLLVMUtil.html">LLVMUtil</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b"> 44</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">LocationSet::addOffsetValue</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* offsetVal, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;{</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; offsetValues.push_back(std::make_pair(offsetVal,type));</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;}</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d"> 51</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">LocationSet::isConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">for</span>(<span class="keyword">auto</span> it : offsetValues)</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">if</span>(SVFUtil::isa&lt;ConstantInt&gt;(it.first) == <span class="keyword">false</span>)</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ac66b56e1fa180be9b09d7bfe653ff311"> 65</a></span>&#160;<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> <a class="code" href="classSVF_1_1LocationSet.html#ac66b56e1fa180be9b09d7bfe653ff311">LocationSet::getElementNum</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">if</span>(SVFUtil::isa&lt;ArrayType&gt;(type) || SVFUtil::isa&lt;StructType&gt;(type))</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">getNumOfFlattenElements</a>(type);</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (type-&gt;isSingleValueType())</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pty = SVFUtil::dyn_cast&lt;PointerType&gt;(type))</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">return</span> getElementNum(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(pty));</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">return</span> 1;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; }</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">else</span></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; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVFUtil::outs</a>() &lt;&lt; <span class="stringliteral">&quot;GepIter Type&quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518">type2String</a>(type) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(<span class="keyword">false</span> &amp;&amp; <span class="stringliteral">&quot;What other types for this gep?&quot;</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a>();</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;}</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">// struct inner{ int rollNumber; float percentage;};</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">// struct Student { struct inner rollNumber; char studentName[10][3];}</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">// char x = studentRecord[1].studentName[3][2];</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#ad8e250859aa1cf6ce18c6c0b7bbb2710"> 116</a></span>&#160;<a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="classSVF_1_1LocationSet.html#ad8e250859aa1cf6ce18c6c0b7bbb2710">LocationSet::accumulateConstantOffset</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(isConstantOffset() &amp;&amp; <span class="stringliteral">&quot;not a constant offset&quot;</span>);</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span>(offsetValues.empty())</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">return</span> accumulateConstantFieldIdx();</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> totalConstOffset = 0;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = offsetValues.size() - 1; i &gt;= 0; i--)</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">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* value = offsetValues[i].first;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a>* <a class="code" href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a> = offsetValues[i].second;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a> *op = <a class="code" href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVFUtil::dyn_cast</a>&lt;<a class="code" href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">ConstantInt</a>&gt;(value);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(op &amp;&amp; <span class="stringliteral">&quot;not a constant offset?&quot;</span>);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>(type==<span class="keyword">nullptr</span>)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; {</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; totalConstOffset += op-&gt;getSExtValue();</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">if</span>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">PointerType</a>* pty = SVFUtil::dyn_cast&lt;PointerType&gt;(type))</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; totalConstOffset += op-&gt;getSExtValue() * getElementNum(<a class="code" href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">getPtrElementType</a>(pty));</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> <a class="code" href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a> = op-&gt;getSExtValue();</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> flattenOffset = <a class="code" href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SymbolTableInfo::SymbolInfo</a>()-&gt;<a class="code" href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">getFlattenedElemIdx</a>(type, offset);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; totalConstOffset += flattenOffset;</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> totalConstOffset;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;}</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f"> 151</a></span>&#160;<a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">LocationSet::computeAllLocations</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; result.<a class="code" href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">set</a>(accumulateConstantFieldIdx());</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">return</span> <a class="code" href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a>;</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;}</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a67387c3b42fcc1bb3ee8fe85bda02ba8"> 158</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> <a class="code" href="classSVF_1_1LocationSet.html#a67387c3b42fcc1bb3ee8fe85bda02ba8">LocationSet::operator+ </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a> ls(rhs);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd">fldIdx</a> += accumulateConstantFieldIdx();</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; OffsetValueVec::const_iterator it = getOffsetValueVec().begin();</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; OffsetValueVec::const_iterator eit = getOffsetValueVec().end();</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; ls.<a class="code" href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">addOffsetValue</a>(it-&gt;first, it-&gt;second);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">return</span> ls;</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;}</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a511e8324d88624013eed04e8c2a6cbc4"> 171</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LocationSet.html#a511e8324d88624013eed04e8c2a6cbc4">LocationSet::operator&lt; </a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; rhs)<span class="keyword"> const</span></div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">if</span> (fldIdx != rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd">fldIdx</a>)</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> (fldIdx &lt; rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd">fldIdx</a>);</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; pairVec = getOffsetValueVec();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; rhsPairVec = rhs.<a class="code" href="classSVF_1_1LocationSet.html#a5a5ca0b81da0b34ab426bc6a28ed346c">getOffsetValueVec</a>();</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (pairVec.size() != rhsPairVec.size())</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">return</span> (pairVec.size() &lt; rhsPairVec.size());</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keywordflow">else</span></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; OffsetValueVec::const_iterator it = pairVec.begin();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; OffsetValueVec::const_iterator rhsIt = rhsPairVec.begin();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keywordflow">for</span> (; it != pairVec.end() &amp;&amp; rhsIt != rhsPairVec.end(); ++it, ++rhsIt)</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; {</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">return</span> (*it) &lt; (*rhsIt);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; }</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;}</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10"> 195</a></span>&#160;<a class="code" href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">SVF::LocationSet::LSRelation</a> <a class="code" href="classSVF_1_1LocationSet.html#a4e839125b32c7cb3ad07fbec6f203c10">LocationSet::checkRelation</a>(<span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; LHS, <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html">LocationSet</a>&amp; RHS)</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;{</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> lhsLocations = LHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>();</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <a class="code" href="classSVF_1_1SparseBitVector.html">NodeBS</a> rhsLocations = RHS.<a class="code" href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">computeAllLocations</a>();</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">intersects</a>(rhsLocations))</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; {</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">if</span> (lhsLocations == rhsLocations)</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">return</span> Same;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (lhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(rhsLocations))</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">return</span> Superset;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (rhsLocations.<a class="code" href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">contains</a>(lhsLocations))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">return</span> Subset;</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keywordflow">return</span> Overlap;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; }</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">return</span> NonOverlap;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; }</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c"> 217</a></span>&#160;<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="classSVF_1_1LocationSet.html#a53f1b2e417682a56d45dfb1f7d5ccd1c">LocationSet::dump</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> str;</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <a class="code" href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">raw_string_ostream</a> rawstr(str);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;LocationSet\tField_Index: &quot;</span> &lt;&lt; accumulateConstantFieldIdx();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot;,\tNum-Stride: {&quot;</span>;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">OffsetValueVec</a>&amp; vec = getOffsetValueVec();</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; OffsetValueVec::const_iterator it = vec.begin();</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; OffsetValueVec::const_iterator eit = vec.end();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">for</span> (; it != eit; ++it)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; {</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; (value: &quot;</span> &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">value2String</a>(it-&gt;first) &lt;&lt; <span class="stringliteral">&quot; type: &quot;</span> &lt;&lt; it-&gt;second &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; rawstr &lt;&lt; <span class="stringliteral">&quot; }\n&quot;</span>;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> rawstr.str();</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</div><div class="ttc" id="classSVF_1_1LocationSet_html_a4a9185282308c50f86fdf66f7060373d"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a4a9185282308c50f86fdf66f7060373d">SVF::LocationSet::isConstantOffset</a></div><div class="ttdeci">bool isConstantOffset() const</div><div class="ttdoc">Return TRUE if this is a constant location set. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00051">LocationSet.cpp:51</a></div></div>
70
70
  <div class="ttc" id="namespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdoc">LLVM Basic classes. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00065">BasicTypes.h:65</a></div></div>
71
71
  <div class="ttc" id="classSVF_1_1LocationSet_html_a9bb7e08f7cfb2859d25b0e68e21fec89"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a9bb7e08f7cfb2859d25b0e68e21fec89">SVF::LocationSet::OffsetValueVec</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; const Value *, const Type * &gt; &gt; OffsetValueVec</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00057">LocationSet.h:57</a></div></div>
72
72
  <div class="ttc" id="util_8h_html_a07d17d6d5d1074c0969bc5d3c3d1d84a"><div class="ttname"><a href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a></div><div class="ttdeci">#define assert(ex)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00141">util.h:141</a></div></div>
73
73
  <div class="ttc" id="namespaceLLVMUtil_html"><div class="ttname"><a href="namespaceLLVMUtil.html">LLVMUtil</a></div></div>
74
74
  <div class="ttc" id="namespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00089">BasicTypes.h:89</a></div></div>
75
75
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a8fc42c2b02317621d6aeb3c5f52d3ee8"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a8fc42c2b02317621d6aeb3c5f52d3ee8">SVF::SymbolTableInfo::getFlattenedElemIdx</a></div><div class="ttdeci">u32_t getFlattenedElemIdx(const Type *T, u32_t origId)</div><div class="ttdoc">Flatterned element idx of an array or struct by considering stride. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00375">SymbolTableInfo.cpp:375</a></div></div>
76
- <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
76
+ <div class="ttc" id="namespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00086">SVFBasicTypes.h:86</a></div></div>
77
77
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1LocationSet_html_a5c2c1baa17a70b997824002e4c159cbd"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a5c2c1baa17a70b997824002e4c159cbd">SVF::LocationSet::fldIdx</a></div><div class="ttdeci">s32_t fldIdx</div><div class="ttdoc">Accumulated Constant Offsets. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00132">LocationSet.h:132</a></div></div>
79
79
  <div class="ttc" id="namespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00094">BasicTypes.h:94</a></div></div>
80
80
  <div class="ttc" id="classSVF_1_1LocationSet_html_ad8e250859aa1cf6ce18c6c0b7bbb2710"><div class="ttname"><a href="classSVF_1_1LocationSet.html#ad8e250859aa1cf6ce18c6c0b7bbb2710">SVF::LocationSet::accumulateConstantOffset</a></div><div class="ttdeci">s32_t accumulateConstantOffset() const</div><div class="ttdoc">Return accumulated constant offset given OffsetValueVec. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00116">LocationSet.cpp:116</a></div></div>
81
81
  <div class="ttc" id="classSVF_1_1LocationSet_html_afc0f702b6cce26861b409130fe5e019f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#afc0f702b6cce26861b409130fe5e019f">SVF::LocationSet::computeAllLocations</a></div><div class="ttdeci">NodeBS computeAllLocations() const</div><div class="ttdoc">Compute all possible locations according to offset and number-stride pairs. </div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00151">LocationSet.cpp:151</a></div></div>
82
- <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00084">SVFBasicTypes.h:84</a></div></div>
82
+ <div class="ttc" id="namespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00085">SVFBasicTypes.h:85</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1LocationSet_html_aa2682a73f1ab2c32326fb4e0d5b3586b"><div class="ttname"><a href="classSVF_1_1LocationSet.html#aa2682a73f1ab2c32326fb4e0d5b3586b">SVF::LocationSet::addOffsetValue</a></div><div class="ttdeci">bool addOffsetValue(const Value *offsetValue, const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8cpp_source.html#l00044">LocationSet.cpp:44</a></div></div>
84
84
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a817a63e8330530cb18e077556f7ce518"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a817a63e8330530cb18e077556f7ce518">SVF::SVFUtil::type2String</a></div><div class="ttdeci">const std::string type2String(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00457">SVFUtil.cpp:457</a></div></div>
85
+ <div class="ttc" id="classSVF_1_1SparseBitVector_html_abbd0e0cf759fad7858224ed8a63aade8"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#abbd0e0cf759fad7858224ed8a63aade8">SVF::SparseBitVector::contains</a></div><div class="ttdeci">bool contains(const SparseBitVector&lt; ElementSize &gt; &amp;RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01071">SparseBitVector.h:1071</a></div></div>
85
86
  <div class="ttc" id="cJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
86
87
  <div class="ttc" id="namespaceSVFUtil_html"><div class="ttname"><a href="namespaceSVFUtil.html">SVFUtil</a></div></div>
87
88
  <div class="ttc" id="namespaceSVF_html_a726981481ac082dcda3e4921416b65a0"><div class="ttname"><a href="namespaceSVF.html#a726981481ac082dcda3e4921416b65a0">SVF::raw_string_ostream</a></div><div class="ttdeci">llvm::raw_string_ostream raw_string_ostream</div><div class="ttdoc">LLVM outputs. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00083">BasicTypes.h:83</a></div></div>
@@ -91,14 +92,16 @@ $(function() {
91
92
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_a267169023fc4f8dd66b145f7231fec11"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#a267169023fc4f8dd66b145f7231fec11">SVF::SymbolTableInfo::SymbolInfo</a></div><div class="ttdeci">static SymbolTableInfo * SymbolInfo()</div><div class="ttdoc">Singleton design here to make sure we only have one instance during any analysis. ...</div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00108">SymbolTableInfo.cpp:108</a></div></div>
92
93
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a7486fd8e5350879ed1cbd835c0d4e191"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVF::SVFUtil::value2String</a></div><div class="ttdeci">const std::string value2String(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00391">SVFUtil.cpp:391</a></div></div>
93
94
  <div class="ttc" id="classSVF_1_1LocationSet_html_a002a0c8ec2528835d809bf7eb3ebc83f"><div class="ttname"><a href="classSVF_1_1LocationSet.html#a002a0c8ec2528835d809bf7eb3ebc83f">SVF::LocationSet::LSRelation</a></div><div class="ttdeci">LSRelation</div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00052">LocationSet.h:52</a></div></div>
95
+ <div class="ttc" id="classSVF_1_1SparseBitVector_html_a16756e0545fd3d50ab89f45a2e83bb79"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a16756e0545fd3d50ab89f45a2e83bb79">SVF::SparseBitVector::intersects</a></div><div class="ttdeci">bool intersects(const SparseBitVector&lt; ElementSize &gt; *RHS) const</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l01029">SparseBitVector.h:1029</a></div></div>
94
96
  <div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
95
97
  <div class="ttc" id="cJSON_8cpp_html_a95bf816579e97b6f33bdb5e25ed6d5de"><div class="ttname"><a href="cJSON_8cpp.html#a95bf816579e97b6f33bdb5e25ed6d5de">offset</a></div><div class="ttdeci">buffer offset</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l01113">cJSON.cpp:1113</a></div></div>
98
+ <div class="ttc" id="classSVF_1_1SparseBitVector_html"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html">SVF::SparseBitVector</a></div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00460">SparseBitVector.h:460</a></div></div>
96
99
  <div class="ttc" id="util_8h_html_a23c00958edf66c39625a0d535dee57b7"><div class="ttname"><a href="util_8h.html#a23c00958edf66c39625a0d535dee57b7">abort</a></div><div class="ttdeci">VOID_OR_INT abort()</div></div>
97
100
  <div class="ttc" id="cuddInt_8c_html_a8b2e13c78efca330f06b6ddcd7464b41"><div class="ttname"><a href="cuddInt_8c.html#a8b2e13c78efca330f06b6ddcd7464b41">result</a></div><div class="ttdeci">static int result</div><div class="ttdef"><b>Definition:</b> <a href="cuddInt_8c_source.html#l07466">cuddInt.c:7466</a></div></div>
98
101
  <div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
99
102
  <div class="ttc" id="classSVF_1_1SymbolTableInfo_html_aec579894eed558ea89740b68360187aa"><div class="ttname"><a href="classSVF_1_1SymbolTableInfo.html#aec579894eed558ea89740b68360187aa">SVF::SymbolTableInfo::getNumOfFlattenElements</a></div><div class="ttdeci">u32_t getNumOfFlattenElements(const Type *T)</div><div class="ttdoc">Number of flattenned elements of an array or struct. </div><div class="ttdef"><b>Definition:</b> <a href="SymbolTableInfo_8cpp_source.html#l00366">SymbolTableInfo.cpp:366</a></div></div>
100
103
  <div class="ttc" id="classSVF_1_1LocationSet_html"><div class="ttname"><a href="classSVF_1_1LocationSet.html">SVF::LocationSet</a></div><div class="ttdef"><b>Definition:</b> <a href="LocationSet_8h_source.html#l00048">LocationSet.h:48</a></div></div>
101
- <div class="ttc" id="namespaceSVF_html_a740396763e377643790c8b803ab3e4ea"><div class="ttname"><a href="namespaceSVF.html#a740396763e377643790c8b803ab3e4ea">SVF::NodeBS</a></div><div class="ttdeci">llvm::SparseBitVector NodeBS</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00095">SVFBasicTypes.h:95</a></div></div>
104
+ <div class="ttc" id="classSVF_1_1SparseBitVector_html_a61bd86909a141f9de873d92c0f904832"><div class="ttname"><a href="classSVF_1_1SparseBitVector.html#a61bd86909a141f9de873d92c0f904832">SVF::SparseBitVector::set</a></div><div class="ttdeci">void set(unsigned Idx)</div><div class="ttdef"><b>Definition:</b> <a href="SparseBitVector_8h_source.html#l00745">SparseBitVector.h:745</a></div></div>
102
105
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a8182be247907420db00837cef9bcfa70"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a8182be247907420db00837cef9bcfa70">SVF::SVFUtil::dyn_cast</a></div><div class="ttdeci">LLVM_NODISCARD std::enable_if&lt;!is_simple_type&lt; Y &gt;::value, typename cast_retty&lt; X, const Y &gt;::ret_type &gt;::type dyn_cast(const Y &amp;Val)</div><div class="ttdef"><b>Definition:</b> <a href="Casting_8h_source.html#l00343">Casting.h:343</a></div></div>
103
106
  <div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
104
107
  <div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>