svf-tools 1.0.448 → 1.0.451

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 (528) hide show
  1. package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
  2. package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +3 -3
  3. package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +5 -5
  4. package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +5 -5
  5. package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +5 -5
  6. package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +5 -5
  7. package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +2 -2
  8. package/SVF-doxygen/html/html/Andersen_8cpp_source.html +16 -16
  9. package/SVF-doxygen/html/html/Andersen_8h_source.html +10 -10
  10. package/SVF-doxygen/html/html/Annotator_8h_source.html +3 -3
  11. package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +4 -4
  12. package/SVF-doxygen/html/html/BDDExpr_8h_source.html +5 -5
  13. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp.html +2 -2
  14. package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +5 -5
  15. package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +5 -5
  16. package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +1 -1
  17. package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +3 -3
  18. package/SVF-doxygen/html/html/CFLAlias_8h_source.html +6 -6
  19. package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +3 -3
  20. package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +4 -4
  21. package/SVF-doxygen/html/html/CFLGraph_8h_source.html +2 -2
  22. package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +28 -28
  23. package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +5 -5
  24. package/SVF-doxygen/html/html/CHG_8cpp.html +3 -3
  25. package/SVF-doxygen/html/html/CHG_8cpp_source.html +13 -13
  26. package/SVF-doxygen/html/html/CHG_8h_source.html +6 -6
  27. package/SVF-doxygen/html/html/CPPUtil_8cpp.html +2 -2
  28. package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +24 -24
  29. package/SVF-doxygen/html/html/CPPUtil_8h_source.html +4 -4
  30. package/SVF-doxygen/html/html/CSC_8cpp_source.html +3 -3
  31. package/SVF-doxygen/html/html/CSC_8h_source.html +4 -4
  32. package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +7 -7
  33. package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +6 -6
  34. package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +2 -2
  35. package/SVF-doxygen/html/html/ConsGNode_8h_source.html +2 -2
  36. package/SVF-doxygen/html/html/ConsG_8cpp_source.html +4 -4
  37. package/SVF-doxygen/html/html/ConsG_8h_source.html +5 -5
  38. package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +12 -12
  39. package/SVF-doxygen/html/html/ContextDDA_8h_source.html +6 -6
  40. package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
  41. package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +2 -2
  42. package/SVF-doxygen/html/html/CxtStmt_8h_source.html +5 -5
  43. package/SVF-doxygen/html/html/DCHG_8cpp_source.html +30 -30
  44. package/SVF-doxygen/html/html/DCHG_8h_source.html +15 -15
  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 +9 -9
  48. package/SVF-doxygen/html/html/DDAPass_8h_source.html +6 -6
  49. package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +2 -2
  50. package/SVF-doxygen/html/html/DDAStat_8h_source.html +3 -3
  51. package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +11 -11
  52. package/SVF-doxygen/html/html/DPItem_8h_source.html +5 -5
  53. package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +7 -7
  54. package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +11 -11
  55. package/SVF-doxygen/html/html/ExeState_8cpp_source.html +8 -8
  56. package/SVF-doxygen/html/html/ExeState_8h_source.html +4 -4
  57. package/SVF-doxygen/html/html/ExtAPI_8h_source.html +23 -23
  58. package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +7 -7
  59. package/SVF-doxygen/html/html/FSMPTA_8h_source.html +4 -4
  60. package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
  61. package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +7 -7
  62. package/SVF-doxygen/html/html/FlowDDA_8h_source.html +5 -5
  63. package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +6 -6
  64. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp.html +3 -3
  65. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +12 -12
  66. package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +5 -5
  67. package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +10 -10
  68. package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +4 -4
  69. package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +3 -3
  70. package/SVF-doxygen/html/html/GenericGraph_8h_source.html +5 -5
  71. package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +1 -1
  72. package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +1 -1
  73. package/SVF-doxygen/html/html/Graph2Json_8cpp.html +1 -0
  74. package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +3 -4
  75. package/SVF-doxygen/html/html/Graph2Json_8h_source.html +5 -5
  76. package/SVF-doxygen/html/html/GraphPrinter_8h.html +1 -0
  77. package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +6 -7
  78. package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +13 -13
  79. package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +3 -3
  80. package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +5 -5
  81. package/SVF-doxygen/html/html/ICFGNode_8h_source.html +7 -7
  82. package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
  83. package/SVF-doxygen/html/html/ICFG_8cpp_source.html +11 -11
  84. package/SVF-doxygen/html/html/ICFG_8h_source.html +5 -5
  85. package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +14 -14
  86. package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +5 -5
  87. package/SVF-doxygen/html/html/IRGraph_8h_source.html +6 -6
  88. package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +15 -15
  89. package/SVF-doxygen/html/html/LLVMModule_8h.html +2 -1
  90. package/SVF-doxygen/html/html/LLVMModule_8h_source.html +46 -45
  91. package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +40 -40
  92. package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +39 -39
  93. package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
  94. package/SVF-doxygen/html/html/LeakChecker_8h_source.html +3 -3
  95. package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +9 -9
  96. package/SVF-doxygen/html/html/LocationSet_8h_source.html +6 -6
  97. package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +17 -17
  98. package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +11 -11
  99. package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +15 -15
  100. package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +7 -7
  101. package/SVF-doxygen/html/html/MHP_8cpp.html +3 -3
  102. package/SVF-doxygen/html/html/MHP_8cpp_source.html +26 -26
  103. package/SVF-doxygen/html/html/MHP_8h_source.html +10 -10
  104. package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +7 -7
  105. package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +9 -9
  106. package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +9 -9
  107. package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +22 -22
  108. package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +12 -12
  109. package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +6 -6
  110. package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
  111. package/SVF-doxygen/html/html/MTA_8cpp_source.html +12 -12
  112. package/SVF-doxygen/html/html/MTA_8h_source.html +8 -8
  113. package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +2 -2
  114. package/SVF-doxygen/html/html/MemPartition_8h_source.html +4 -4
  115. package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +19 -19
  116. package/SVF-doxygen/html/html/MemRegion_8h_source.html +9 -9
  117. package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +17 -17
  118. package/SVF-doxygen/html/html/MemSSA_8h_source.html +9 -9
  119. package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +3 -3
  120. package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +6 -6
  121. package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +3 -3
  122. package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +3 -3
  123. package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
  124. package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
  125. package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
  126. package/SVF-doxygen/html/html/PCG_8cpp_source.html +11 -11
  127. package/SVF-doxygen/html/html/PCG_8h_source.html +6 -6
  128. package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +6 -6
  129. package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +7 -7
  130. package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +8 -8
  131. package/SVF-doxygen/html/html/PTAStat_8h_source.html +2 -2
  132. package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +19 -19
  133. package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +12 -12
  134. package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +3 -3
  135. package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +2 -2
  136. package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +17 -18
  137. package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +17 -17
  138. package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +22 -22
  139. package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +9 -9
  140. package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +3 -3
  141. package/SVF-doxygen/html/html/PointsTo_8h_source.html +3 -3
  142. package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +7 -7
  143. package/SVF-doxygen/html/html/ProgSlice_8h_source.html +4 -4
  144. package/SVF-doxygen/html/html/SCC_8h_source.html +3 -3
  145. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h.html +79 -42
  146. package/SVF-doxygen/html/html/SVF-FE_2BasicTypes_8h_source.html +44 -42
  147. package/SVF-doxygen/html/html/SVFBasicTypes_8h.html +22 -25
  148. package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +73 -74
  149. package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
  150. package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +2 -2
  151. package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +3 -3
  152. package/SVF-doxygen/html/html/SVFGNode_8h_source.html +5 -5
  153. package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +4 -4
  154. package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +8 -8
  155. package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +4 -4
  156. package/SVF-doxygen/html/html/SVFGStat_8h_source.html +4 -4
  157. package/SVF-doxygen/html/html/SVFG_8cpp_source.html +46 -54
  158. package/SVF-doxygen/html/html/SVFG_8h_source.html +46 -48
  159. package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +54 -54
  160. package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +49 -49
  161. package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +4 -4
  162. package/SVF-doxygen/html/html/SVFIR_8h_source.html +9 -9
  163. package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +2 -2
  164. package/SVF-doxygen/html/html/SVFModule_8h_source.html +6 -6
  165. package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +3 -3
  166. package/SVF-doxygen/html/html/SVFStatements_8h_source.html +9 -9
  167. package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +15 -15
  168. package/SVF-doxygen/html/html/SVFUtil_8h_source.html +23 -23
  169. package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +2 -2
  170. package/SVF-doxygen/html/html/SVFVariables_8h_source.html +8 -8
  171. package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +4 -4
  172. package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
  173. package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +6 -5
  174. package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +7 -7
  175. package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +2 -2
  176. package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +5 -5
  177. package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +4 -4
  178. package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
  179. package/SVF-doxygen/html/html/Steensgaard_8h_source.html +2 -2
  180. package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +38 -38
  181. package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +6 -6
  182. package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +17 -17
  183. package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +10 -10
  184. package/SVF-doxygen/html/html/TCT_8cpp_source.html +21 -21
  185. package/SVF-doxygen/html/html/TCT_8h_source.html +20 -20
  186. package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +7 -7
  187. package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +11 -10
  188. package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +9 -9
  189. package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +6 -6
  190. package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +4 -4
  191. package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
  192. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +27 -27
  193. package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +5 -5
  194. package/SVF-doxygen/html/html/Util_2BasicTypes_8h.html +1 -8
  195. package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +117 -120
  196. package/SVF-doxygen/html/html/VFGEdge_8h_source.html +2 -2
  197. package/SVF-doxygen/html/html/VFGNode_8h_source.html +8 -8
  198. package/SVF-doxygen/html/html/VFG_8cpp_source.html +10 -10
  199. package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
  200. package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +5 -5
  201. package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +12 -12
  202. package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +6 -6
  203. package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +2 -2
  204. package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +10 -10
  205. package/SVF-doxygen/html/html/WPAPass_8h_source.html +8 -8
  206. package/SVF-doxygen/html/html/WPASolver_8h_source.html +3 -3
  207. package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
  208. package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
  209. package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
  210. package/SVF-doxygen/html/html/cfl_8cpp.html +2 -2
  211. package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -2
  212. package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +2 -2
  213. package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +2 -2
  214. package/SVF-doxygen/html/html/classSVF_1_1ActualParmVFGNode.html +2 -2
  215. package/SVF-doxygen/html/html/classSVF_1_1ActualRetVFGNode.html +2 -2
  216. package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
  217. package/SVF-doxygen/html/html/classSVF_1_1AddrVFGNode.html +2 -2
  218. package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
  219. package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +21 -21
  220. package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
  221. package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
  222. package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +10 -10
  223. package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +5 -5
  224. package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +7 -7
  225. package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
  226. package/SVF-doxygen/html/html/classSVF_1_1Annotator.html +1 -1
  227. package/SVF-doxygen/html/html/classSVF_1_1ArgumentVFGNode.html +3 -2
  228. package/SVF-doxygen/html/html/classSVF_1_1BDDExprManager.html +3 -3
  229. package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +34 -35
  230. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
  231. package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +2 -2
  232. package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
  233. package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +2 -2
  234. package/SVF-doxygen/html/html/classSVF_1_1BreakConstantGEPs.html +4 -4
  235. package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +2 -2
  236. package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +2 -2
  237. package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +2 -2
  238. package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +53 -53
  239. package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +9 -9
  240. package/SVF-doxygen/html/html/classSVF_1_1CSC.html +4 -4
  241. package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
  242. package/SVF-doxygen/html/html/classSVF_1_1CallDirSVFGEdge.html +1 -1
  243. package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +6 -6
  244. package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +6 -6
  245. package/SVF-doxygen/html/html/classSVF_1_1CallIndSVFGEdge.html +1 -1
  246. package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
  247. package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +41 -41
  248. package/SVF-doxygen/html/html/classSVF_1_1CloneDummyObjVar.html +1 -1
  249. package/SVF-doxygen/html/html/classSVF_1_1CloneFIObjVar.html +1 -1
  250. package/SVF-doxygen/html/html/classSVF_1_1CloneGepObjVar.html +1 -1
  251. package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
  252. package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +2 -2
  253. package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +4 -4
  254. package/SVF-doxygen/html/html/classSVF_1_1CondStdSet.html +2 -2
  255. package/SVF-doxygen/html/html/classSVF_1_1CondVar.html +1 -1
  256. package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +5 -5
  257. package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +8 -8
  258. package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
  259. package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +25 -25
  260. package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
  261. package/SVF-doxygen/html/html/classSVF_1_1CopyVFGNode.html +2 -2
  262. package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +4 -4
  263. package/SVF-doxygen/html/html/classSVF_1_1CxtProc.html +2 -2
  264. package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
  265. package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
  266. package/SVF-doxygen/html/html/classSVF_1_1CxtThreadProc.html +1 -1
  267. package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +67 -67
  268. package/SVF-doxygen/html/html/classSVF_1_1DDAClient.html +4 -4
  269. package/SVF-doxygen/html/html/classSVF_1_1DDAPass.html +8 -8
  270. package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +3 -3
  271. package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +28 -28
  272. package/SVF-doxygen/html/html/classSVF_1_1DirectSVFGEdge.html +1 -1
  273. package/SVF-doxygen/html/html/classSVF_1_1DistinctMRG.html +4 -4
  274. package/SVF-doxygen/html/html/classSVF_1_1DummyObjVar.html +1 -1
  275. package/SVF-doxygen/html/html/classSVF_1_1DummyValVar.html +1 -1
  276. package/SVF-doxygen/html/html/classSVF_1_1DummyVersionPropSVFGNode.html +1 -1
  277. package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +11 -11
  278. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +1 -1
  279. package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +51 -51
  280. package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
  281. package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +11 -11
  282. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +30 -30
  283. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +8 -8
  284. package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +23 -23
  285. package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +36 -36
  286. package/SVF-doxygen/html/html/classSVF_1_1FormalINSVFGNode.html +2 -2
  287. package/SVF-doxygen/html/html/classSVF_1_1FormalOUTSVFGNode.html +2 -2
  288. package/SVF-doxygen/html/html/classSVF_1_1FormalParmVFGNode.html +3 -3
  289. package/SVF-doxygen/html/html/classSVF_1_1FormalRetVFGNode.html +3 -3
  290. package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
  291. package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +3 -3
  292. package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +3 -3
  293. package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
  294. package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
  295. package/SVF-doxygen/html/html/classSVF_1_1GepVFGNode.html +2 -2
  296. package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
  297. package/SVF-doxygen/html/html/classSVF_1_1GlobalICFGNode.html +1 -1
  298. package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +6 -6
  299. package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +19 -19
  300. package/SVF-doxygen/html/html/classSVF_1_1ICFGEdge.html +1 -1
  301. package/SVF-doxygen/html/html/classSVF_1_1ICFGNode.html +1 -1
  302. package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +15 -16
  303. package/SVF-doxygen/html/html/classSVF_1_1IRAnnotator.html +21 -21
  304. package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +3 -3
  305. package/SVF-doxygen/html/html/classSVF_1_1IndirectSVFGEdge.html +1 -1
  306. package/SVF-doxygen/html/html/classSVF_1_1InterDisjointMRG.html +2 -2
  307. package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +2 -2
  308. package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
  309. package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
  310. package/SVF-doxygen/html/html/classSVF_1_1IntraDirSVFGEdge.html +1 -1
  311. package/SVF-doxygen/html/html/classSVF_1_1IntraDisjointMRG.html +4 -4
  312. package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +4 -4
  313. package/SVF-doxygen/html/html/classSVF_1_1IntraIndSVFGEdge.html +1 -1
  314. package/SVF-doxygen/html/html/classSVF_1_1IntraMSSAPHISVFGNode.html +2 -2
  315. package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
  316. package/SVF-doxygen/html/html/classSVF_1_1IteratedDominanceFrontier.html +3 -3
  317. package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +132 -132
  318. package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +5 -5
  319. package/SVF-doxygen/html/html/classSVF_1_1LoadMU-members.html +1 -1
  320. package/SVF-doxygen/html/html/classSVF_1_1LoadMU.html +6 -6
  321. package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
  322. package/SVF-doxygen/html/html/classSVF_1_1LoadVFGNode.html +2 -2
  323. package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +11 -11
  324. package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +69 -69
  325. package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +21 -21
  326. package/SVF-doxygen/html/html/classSVF_1_1MHP.html +55 -55
  327. package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +42 -42
  328. package/SVF-doxygen/html/html/classSVF_1_1MRSVFGNode.html +1 -1
  329. package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +2 -2
  330. package/SVF-doxygen/html/html/classSVF_1_1MTA.html +14 -14
  331. package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +16 -16
  332. package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +44 -44
  333. package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +24 -24
  334. package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +7 -7
  335. package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
  336. package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +42 -42
  337. package/SVF-doxygen/html/html/classSVF_1_1MemSSADF.html +1 -1
  338. package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +2 -2
  339. package/SVF-doxygen/html/html/classSVF_1_1MergeFunctionRets.html +3 -3
  340. package/SVF-doxygen/html/html/classSVF_1_1MutableDFPTData.html +1 -1
  341. package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +9 -9
  342. package/SVF-doxygen/html/html/classSVF_1_1NullPtrVFGNode.html +2 -2
  343. package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +2 -2
  344. package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
  345. package/SVF-doxygen/html/html/classSVF_1_1OfflineConsG.html +2 -2
  346. package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
  347. package/SVF-doxygen/html/html/classSVF_1_1PCG.html +25 -25
  348. package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +2 -2
  349. package/SVF-doxygen/html/html/classSVF_1_1PTACFInfoBuilder.html +7 -7
  350. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraph.html +7 -7
  351. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
  352. package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +3 -3
  353. package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +9 -9
  354. package/SVF-doxygen/html/html/classSVF_1_1PathCondAllocator.html +42 -42
  355. package/SVF-doxygen/html/html/classSVF_1_1PersistentDFPTData.html +3 -3
  356. package/SVF-doxygen/html/html/classSVF_1_1PersistentDiffPTData.html +3 -3
  357. package/SVF-doxygen/html/html/classSVF_1_1PersistentPTData.html +6 -6
  358. package/SVF-doxygen/html/html/classSVF_1_1PersistentPointsToCache.html +6 -6
  359. package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +2 -2
  360. package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +33 -33
  361. package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +6 -6
  362. package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +9 -9
  363. package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +11 -11
  364. package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
  365. package/SVF-doxygen/html/html/classSVF_1_1RetDirSVFGEdge.html +1 -1
  366. package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +4 -4
  367. package/SVF-doxygen/html/html/classSVF_1_1RetIndSVFGEdge.html +1 -1
  368. package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
  369. package/SVF-doxygen/html/html/classSVF_1_1RetPN.html +1 -1
  370. package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +4 -4
  371. package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +31 -31
  372. package/SVF-doxygen/html/html/classSVF_1_1SVFG-members.html +154 -155
  373. package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +132 -166
  374. package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +8 -8
  375. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT-members.html +177 -178
  376. package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +17 -19
  377. package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +6 -6
  378. package/SVF-doxygen/html/html/classSVF_1_1SVFGlobal.html +4 -4
  379. package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +1 -1
  380. package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +147 -147
  381. package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +3 -3
  382. package/SVF-doxygen/html/html/classSVF_1_1SVFStmt.html +5 -5
  383. package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +33 -33
  384. package/SVF-doxygen/html/html/classSVF_1_1SVFVar.html +4 -4
  385. package/SVF-doxygen/html/html/classSVF_1_1SaberAnnotator.html +7 -7
  386. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI-members.html +1 -1
  387. package/SVF-doxygen/html/html/classSVF_1_1SaberCheckerAPI.html +7 -7
  388. package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +11 -11
  389. package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
  390. package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +9 -9
  391. package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +1 -1
  392. package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
  393. package/SVF-doxygen/html/html/classSVF_1_1StmtVFGNode.html +1 -1
  394. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI-members.html +1 -1
  395. package/SVF-doxygen/html/html/classSVF_1_1StoreCHI.html +6 -6
  396. package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
  397. package/SVF-doxygen/html/html/classSVF_1_1StoreVFGNode.html +2 -2
  398. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +63 -63
  399. package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +24 -24
  400. package/SVF-doxygen/html/html/classSVF_1_1TCT.html +50 -50
  401. package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
  402. package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
  403. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI-members.html +2 -2
  404. package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +20 -20
  405. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +23 -23
  406. package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +3 -3
  407. package/SVF-doxygen/html/html/classSVF_1_1ThreadForkEdge.html +1 -1
  408. package/SVF-doxygen/html/html/classSVF_1_1ThreadJoinEdge.html +1 -1
  409. package/SVF-doxygen/html/html/classSVF_1_1ThreadMHPIndSVFGEdge.html +1 -1
  410. package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +4 -4
  411. package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +34 -34
  412. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
  413. package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +2 -2
  414. package/SVF-doxygen/html/html/classSVF_1_1VFG.html +11 -11
  415. package/SVF-doxygen/html/html/classSVF_1_1VFGEdge.html +1 -1
  416. package/SVF-doxygen/html/html/classSVF_1_1VFGNode.html +1 -1
  417. package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
  418. package/SVF-doxygen/html/html/classSVF_1_1VarArgPN.html +1 -1
  419. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +28 -28
  420. package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +7 -7
  421. package/SVF-doxygen/html/html/classSVF_1_1WPAFSSolver.html +2 -2
  422. package/SVF-doxygen/html/html/classSVF_1_1WPAMinimumSolver.html +2 -2
  423. package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +8 -8
  424. package/SVF-doxygen/html/html/classSVF_1_1WPASCCSolver.html +2 -2
  425. package/SVF-doxygen/html/html/classSVF_1_1WPASolver.html +1 -1
  426. package/SVF-doxygen/html/html/classllvm_1_1GraphPrinter.html +7 -8
  427. package/SVF-doxygen/html/html/classllvm_1_1generic__bridge__gep__type__iterator.html +3 -3
  428. package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
  429. package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
  430. package/SVF-doxygen/html/html/functions_f.html +14 -17
  431. package/SVF-doxygen/html/html/functions_func_f.html +0 -3
  432. package/SVF-doxygen/html/html/functions_func_g.html +6 -6
  433. package/SVF-doxygen/html/html/functions_func_s.html +1 -1
  434. package/SVF-doxygen/html/html/functions_g.html +6 -6
  435. package/SVF-doxygen/html/html/functions_i.html +4 -4
  436. package/SVF-doxygen/html/html/functions_n.html +4 -4
  437. package/SVF-doxygen/html/html/functions_o.html +3 -3
  438. package/SVF-doxygen/html/html/functions_p.html +7 -7
  439. package/SVF-doxygen/html/html/functions_s.html +13 -13
  440. package/SVF-doxygen/html/html/functions_t.html +5 -5
  441. package/SVF-doxygen/html/html/functions_type_t.html +2 -2
  442. package/SVF-doxygen/html/html/functions_v.html +6 -6
  443. package/SVF-doxygen/html/html/functions_vars_i.html +1 -1
  444. package/SVF-doxygen/html/html/globals_l.html +3 -0
  445. package/SVF-doxygen/html/html/globals_s.html +3 -3
  446. package/SVF-doxygen/html/html/globals_type.html +6 -0
  447. package/SVF-doxygen/html/html/globals_u.html +5 -2
  448. package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
  449. package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
  450. package/SVF-doxygen/html/html/namespaceSVF.html +119 -191
  451. package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +96 -96
  452. package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +44 -44
  453. package/SVF-doxygen/html/html/namespacemembers_l.html +0 -3
  454. package/SVF-doxygen/html/html/namespacemembers_s.html +0 -3
  455. package/SVF-doxygen/html/html/namespacemembers_t.html +0 -3
  456. package/SVF-doxygen/html/html/namespacemembers_type.html +0 -12
  457. package/SVF-doxygen/html/html/namespacemembers_u.html +0 -3
  458. package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
  459. package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
  460. package/SVF-doxygen/html/html/search/all_10.js +6 -6
  461. package/SVF-doxygen/html/html/search/all_13.js +9 -10
  462. package/SVF-doxygen/html/html/search/all_14.js +7 -8
  463. package/SVF-doxygen/html/html/search/all_15.js +2 -2
  464. package/SVF-doxygen/html/html/search/all_16.js +2 -2
  465. package/SVF-doxygen/html/html/search/all_6.js +0 -1
  466. package/SVF-doxygen/html/html/search/all_7.js +2 -2
  467. package/SVF-doxygen/html/html/search/all_9.js +2 -2
  468. package/SVF-doxygen/html/html/search/all_c.js +2 -2
  469. package/SVF-doxygen/html/html/search/all_d.js +1 -1
  470. package/SVF-doxygen/html/html/search/all_e.js +4 -4
  471. package/SVF-doxygen/html/html/search/all_f.js +2 -2
  472. package/SVF-doxygen/html/html/search/functions_10.js +1 -1
  473. package/SVF-doxygen/html/html/search/functions_5.js +0 -1
  474. package/SVF-doxygen/html/html/search/functions_6.js +2 -2
  475. package/SVF-doxygen/html/html/search/typedefs_11.js +0 -1
  476. package/SVF-doxygen/html/html/search/typedefs_12.js +1 -2
  477. package/SVF-doxygen/html/html/search/typedefs_13.js +1 -1
  478. package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
  479. package/SVF-doxygen/html/html/search/variables_14.js +3 -3
  480. package/SVF-doxygen/html/html/search/variables_15.js +1 -1
  481. package/SVF-doxygen/html/html/search/variables_9.js +1 -1
  482. package/SVF-doxygen/html/html/search/variables_e.js +1 -1
  483. package/SVF-doxygen/html/html/structSVF_1_1Hash.html +3 -3
  484. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01NodePair_01_4.html +3 -3
  485. package/SVF-doxygen/html/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +5 -5
  486. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +3 -3
  487. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
  488. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01ICFG_01_5_01_4.html +2 -2
  489. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
  490. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01OfflineConsG_01_5_01_4.html +1 -1
  491. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01PTACallGraph_01_5_01_4.html +2 -2
  492. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01SVFG_01_5_01_4.html +24 -24
  493. package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01VFG_01_5_01_4.html +4 -4
  494. package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1SVFG_01_5_01_4.html +2 -2
  495. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +3 -3
  496. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
  497. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
  498. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtProc_01_4.html +1 -1
  499. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  500. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
  501. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +1 -1
  502. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1LocationSet_01_4.html +1 -1
  503. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1NodePair_01_4.html +3 -3
  504. package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
  505. package/SVF-doxygen/html/html/structstd_1_1hash_3_01llvm_1_1SparseBitVector_3_01N_01_4_01_4.html +3 -3
  506. package/SVF-doxygen/html/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +3 -3
  507. package/SVF-doxygen/html/html/svf-ex_8cpp.html +5 -5
  508. package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +7 -7
  509. package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
  510. package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
  511. package/include/Graphs/GraphPrinter.h +1 -0
  512. package/include/Graphs/SVFG.h +0 -5
  513. package/include/MSSA/MSSAMuChi.h +2 -2
  514. package/include/SABER/SaberCheckerAPI.h +1 -1
  515. package/include/SVF-FE/BasicTypes.h +4 -0
  516. package/include/SVF-FE/LLVMModule.h +1 -0
  517. package/include/Util/BasicTypes.h +0 -4
  518. package/include/Util/ExtAPI.h +2 -3
  519. package/include/Util/SVFBasicTypes.h +0 -2
  520. package/include/Util/ThreadAPI.h +2 -2
  521. package/lib/Graphs/SVFG.cpp +0 -22
  522. package/lib/Graphs/VFG.cpp +1 -1
  523. package/lib/MemoryModel/PointerAnalysisImpl.cpp +14 -16
  524. package/lib/SABER/SaberSVFGBuilder.cpp +2 -2
  525. package/lib/SVF-FE/Graph2Json.cpp +3 -1
  526. package/lib/SVF-FE/LLVMUtil.cpp +2 -0
  527. package/lib/Util/ThreadAPI.cpp +4 -4
  528. package/package.json +1 -1
@@ -67,7 +67,7 @@ $(function() {
67
67
  </div><!--header-->
68
68
  <div class="contents">
69
69
  <a href="OfflineConsG_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">//===- OfflineConsG.h -- Offline constraint graph -----------------------------//</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"> * OfflineConsG.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: Oct 28, 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: Yuxiang Lei</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 OFFLINECONSG_H</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define OFFLINECONSG_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="ConsG_8h.html">Graphs/ConsG.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="SCC_8h.html">Util/SCC.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="l00044"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html"> 44</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1OfflineConsG.html">OfflineConsG</a>: <span class="keyword">public</span> <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</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;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#ab7ce6d127d85cedfdeb6501195b8818f"> 48</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1SCCDetection.html">SCCDetection&lt;OfflineConsG*&gt;</a> <a class="code" href="classSVF_1_1OfflineConsG.html#ab7ce6d127d85cedfdeb6501195b8818f">OSCC</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a832953ac86452c45f55aa6ff3c545f36"> 49</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;LoadCGEdge*&gt;</a> <a class="code" href="classSVF_1_1OfflineConsG.html#a832953ac86452c45f55aa6ff3c545f36">LoadEdges</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a9880cb387e24fa2c87297487411f95ea"> 50</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;StoreCGEdge*&gt;</a> <a class="code" href="classSVF_1_1OfflineConsG.html#a9880cb387e24fa2c87297487411f95ea">StoreEdges</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"> 52</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a381e656d0034b91935f62aeb7924dd4e"> 53</a></span>&#160; <a class="code" href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">NodeSet</a> <a class="code" href="classSVF_1_1OfflineConsG.html#a381e656d0034b91935f62aeb7924dd4e">refNodes</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#aebeb8a44fcfbb677a738fa04c8e9c5e1"> 54</a></span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#afe34ca6bdbb22b188799a4297fd19004">NodeToRepMap</a> <a class="code" href="classSVF_1_1OfflineConsG.html#aebeb8a44fcfbb677a738fa04c8e9c5e1">nodeToRefMap</a>; <span class="comment">// a --&gt; *a</span></div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a6eff43757344f75cd3775d473f14fd9c"> 55</a></span>&#160; <a class="code" href="classSVF_1_1ConstraintGraph.html#afe34ca6bdbb22b188799a4297fd19004">NodeToRepMap</a> <a class="code" href="classSVF_1_1OfflineConsG.html#a6eff43757344f75cd3775d473f14fd9c">norToRepMap</a>; <span class="comment">// for each *a construct a --&gt; rep, i.e., mapping a node of to a rep node for online constraint solving</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#ae61c4f509b90dd43f63a07560ba3562f"> 58</a></span>&#160; <a class="code" href="classSVF_1_1OfflineConsG.html#ae61c4f509b90dd43f63a07560ba3562f">OfflineConsG</a>(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a> *p) : <a class="code" href="classSVF_1_1ConstraintGraph.html">ConstraintGraph</a>(p),</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; nodeToRefMap( {}), <a class="code" href="classSVF_1_1OfflineConsG.html#a6eff43757344f75cd3775d473f14fd9c">norToRepMap</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; <a class="code" href="classSVF_1_1OfflineConsG.html#ac6197a5515ace76b2d51451f5149aef7">buildOfflineCG</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="comment">// Determine whether a node has a OCG rep node</span></div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a0a03ef009894059fa2591ea5f9ef87d9"> 65</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a0a03ef009894059fa2591ea5f9ef87d9">hasOCGRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)<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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1OfflineConsG.html#af61052f5a84ca45304833de7eaf85319">hasNorRep</a>(node);</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="comment">// Get a node&#39;s OCG rep node</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a3f390900ee8761055c6d59107bc0ad27"> 70</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1OfflineConsG.html#a3f390900ee8761055c6d59107bc0ad27">getOCGRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)<span class="keyword"> const</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a5deba2c74d1a3dc24ec55e3ecf3227be">getNorRep</a>(node);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="comment">// Get the OCG node to rep map (this map is const and should not be modified)</span></div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a4c27bd33977816db33d0e7d92036239a"> 75</a></span>&#160; <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classSVF_1_1ConstraintGraph.html#afe34ca6bdbb22b188799a4297fd19004">NodeToRepMap</a>&amp; <a class="code" href="classSVF_1_1OfflineConsG.html#a4c27bd33977816db33d0e7d92036239a">getOCGRepMap</a> ()<span class="keyword"> const</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a6eff43757344f75cd3775d473f14fd9c">norToRepMap</a>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// Determine whether a node is a ref node</span></div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#ac2e7ddb9b7b45f9db47b60d8a0be06ae"> 81</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1OfflineConsG.html#ac2e7ddb9b7b45f9db47b60d8a0be06ae">isaRef</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)<span class="keyword"> const</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; NodeSet::const_iterator it = refNodes.find(node);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> it != refNodes.end();</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; <span class="comment">// Determine whether a node has ref nodes</span></div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a576cfa438bb109b7e451b410cd3a8569"> 87</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a576cfa438bb109b7e451b410cd3a8569">hasRef</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)<span class="keyword"> const</span></div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; NodeToRepMap::const_iterator it = nodeToRefMap.find(node);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> it != nodeToRefMap.end();</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="comment">// Use a constraint node to track its corresponding ref node</span></div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#af701f54b1db07a16e926cd40ab17eb12"> 93</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1OfflineConsG.html#af701f54b1db07a16e926cd40ab17eb12">getRef</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> node)<span class="keyword"> const</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; NodeToRepMap::const_iterator it = nodeToRefMap.find(node);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != nodeToRefMap.end() &amp;&amp; <span class="stringliteral">&quot;No such ref node in ref to node map!&quot;</span>);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="comment">// Constraint solver of offline constraint graph</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="comment">//{@</span></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_1OfflineConsG.html#ab7d06ed7e5e186b97452391c1162b181">solveOfflineSCC</a>(OSCC* oscc);</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_1OfflineConsG.html#afc60c6d897517437597c54e8f83622eb">buildOfflineMap</a>(OSCC* oscc);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="comment">// Dump graph into dot file</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a727c635892986998167f30ff23a75f4c">dump</a>(std::string name);</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;<span class="keyword">protected</span>:</div><div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#af61052f5a84ca45304833de7eaf85319"> 110</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1OfflineConsG.html#af61052f5a84ca45304833de7eaf85319">hasNorRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nor)<span class="keyword"> const</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; NodeToRepMap::const_iterator it = norToRepMap.find(nor);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keywordflow">return</span> it != norToRepMap.end();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; };</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a3cb6384160b50bd0a94de3fd2eb6facd"> 116</a></span>&#160; <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a3cb6384160b50bd0a94de3fd2eb6facd">setNorRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nor, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep)</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; norToRepMap.insert(std::pair&lt;NodeID, NodeID&gt;(nor, rep));</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; };</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classSVF_1_1OfflineConsG.html#a5deba2c74d1a3dc24ec55e3ecf3227be"> 121</a></span>&#160; <span class="keyword">inline</span> <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1OfflineConsG.html#a5deba2c74d1a3dc24ec55e3ecf3227be">getNorRep</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nor)<span class="keyword"> const</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; NodeToRepMap::const_iterator it = norToRepMap.find(nor);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="code" href="util_8h.html#a07d17d6d5d1074c0969bc5d3c3d1d84a">assert</a>(it != norToRepMap.end() &amp;&amp; <span class="stringliteral">&quot;No such rep node in nor to rep map!&quot;</span>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordflow">return</span> it-&gt;second;</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; <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> <a class="code" href="classSVF_1_1OfflineConsG.html#aeb069df3700dafcf365f11d697501c8f">solveRep</a>(OSCC* oscc, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> rep);</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1OfflineConsG.html#ac6197a5515ace76b2d51451f5149aef7">buildOfflineCG</a>();</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a6c8afd3dc37fc60aecc6efd238312940">addRefLoadEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a99e2de184d8f532074666881b67e0b17">addRefStoreEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> src, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> dst);</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1OfflineConsG.html#a984e82f3185be03b8d1cb942685b2010">createRefNode</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeId);</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;};</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;} <span class="comment">// End namespace SVF</span></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="keyword">namespace </span><a class="code" href="namespacellvm.html">llvm</a></div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;{</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">/* !</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment"> * GraphTraits specializations for the generic graph algorithms.</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment"> * Provide graph traits for traversing from a constraint node using standard graph traversals.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1OfflineConsG_01_5_01_4.html"> 144</a></span>&#160;<span class="keyword">template</span>&lt;&gt; <span class="keyword">struct </span>GraphTraits&lt;<a class="code" href="namespaceSVF.html">SVF</a>::<a class="code" href="classSVF_1_1OfflineConsG.html#ae61c4f509b90dd43f63a07560ba3562f">OfflineConsG</a>*&gt; : <span class="keyword">public</span> GraphTraits&lt;SVF::GenericGraph&lt;SVF::ConstraintNode,SVF::ConstraintEdge&gt;* &gt;</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"><a class="line" href="structllvm_1_1GraphTraits_3_01SVF_1_1OfflineConsG_01_5_01_4.html#acc7fa524cd8c4c4b786136c642ee2d58"> 146</a></span>&#160; <span class="keyword">typedef</span> <a class="code" href="classSVF_1_1ConstraintNode.html">SVF::ConstraintNode</a> *<a class="code" href="structllvm_1_1GraphTraits_3_01SVF_1_1OfflineConsG_01_5_01_4.html#acc7fa524cd8c4c4b786136c642ee2d58">NodeRef</a>;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;};</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;} <span class="comment">// End namespace llvm</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#endif //OFFLINECONSG_H</span></div><div class="ttc" id="namespacellvm_html"><div class="ttname"><a href="namespacellvm.html">llvm</a></div><div class="ttdef"><b>Definition:</b> <a href="CFLGraph_8h_source.html#l00158">CFLGraph.h:158</a></div></div>
70
- <div class="ttc" id="namespaceSVF_html_a212231734fa43d5c7414137deaac7df3"><div class="ttname"><a href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">SVF::NodeSet</a></div><div class="ttdeci">Set&lt; NodeID &gt; NodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00122">SVFBasicTypes.h:122</a></div></div>
70
+ <div class="ttc" id="namespaceSVF_html_a212231734fa43d5c7414137deaac7df3"><div class="ttname"><a href="namespaceSVF.html#a212231734fa43d5c7414137deaac7df3">SVF::NodeSet</a></div><div class="ttdeci">Set&lt; NodeID &gt; NodeSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00121">SVFBasicTypes.h:121</a></div></div>
71
71
  <div class="ttc" id="ConsG_8h_html"><div class="ttname"><a href="ConsG_8h.html">ConsG.h</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1OfflineConsG_html_a0a03ef009894059fa2591ea5f9ef87d9"><div class="ttname"><a href="classSVF_1_1OfflineConsG.html#a0a03ef009894059fa2591ea5f9ef87d9">SVF::OfflineConsG::hasOCGRep</a></div><div class="ttdeci">bool hasOCGRep(NodeID node) const</div><div class="ttdef"><b>Definition:</b> <a href="OfflineConsG_8h_source.html#l00065">OfflineConsG.h:65</a></div></div>
73
73
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
@@ -88,7 +88,7 @@ $(function() {
88
88
  <div class="ttc" id="classSVF_1_1OfflineConsG_html_aebeb8a44fcfbb677a738fa04c8e9c5e1"><div class="ttname"><a href="classSVF_1_1OfflineConsG.html#aebeb8a44fcfbb677a738fa04c8e9c5e1">SVF::OfflineConsG::nodeToRefMap</a></div><div class="ttdeci">NodeToRepMap nodeToRefMap</div><div class="ttdef"><b>Definition:</b> <a href="OfflineConsG_8h_source.html#l00054">OfflineConsG.h:54</a></div></div>
89
89
  <div class="ttc" id="classSVF_1_1OfflineConsG_html_af61052f5a84ca45304833de7eaf85319"><div class="ttname"><a href="classSVF_1_1OfflineConsG.html#af61052f5a84ca45304833de7eaf85319">SVF::OfflineConsG::hasNorRep</a></div><div class="ttdeci">bool hasNorRep(NodeID nor) const</div><div class="ttdef"><b>Definition:</b> <a href="OfflineConsG_8h_source.html#l00110">OfflineConsG.h:110</a></div></div>
90
90
  <div class="ttc" id="classSVF_1_1OfflineConsG_html_ac6197a5515ace76b2d51451f5149aef7"><div class="ttname"><a href="classSVF_1_1OfflineConsG.html#ac6197a5515ace76b2d51451f5149aef7">SVF::OfflineConsG::buildOfflineCG</a></div><div class="ttdeci">void buildOfflineCG()</div><div class="ttdef"><b>Definition:</b> <a href="OfflineConsG_8cpp_source.html#l00039">OfflineConsG.cpp:39</a></div></div>
91
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
91
+ <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00104">SVFBasicTypes.h:104</a></div></div>
92
92
  <div class="ttc" id="classSVF_1_1OfflineConsG_html_a4c27bd33977816db33d0e7d92036239a"><div class="ttname"><a href="classSVF_1_1OfflineConsG.html#a4c27bd33977816db33d0e7d92036239a">SVF::OfflineConsG::getOCGRepMap</a></div><div class="ttdeci">const NodeToRepMap &amp; getOCGRepMap() const</div><div class="ttdef"><b>Definition:</b> <a href="OfflineConsG_8h_source.html#l00075">OfflineConsG.h:75</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1OfflineConsG_html_ac2e7ddb9b7b45f9db47b60d8a0be06ae"><div class="ttname"><a href="classSVF_1_1OfflineConsG.html#ac2e7ddb9b7b45f9db47b60d8a0be06ae">SVF::OfflineConsG::isaRef</a></div><div class="ttdeci">bool isaRef(NodeID node) const</div><div class="ttdef"><b>Definition:</b> <a href="OfflineConsG_8h_source.html#l00081">OfflineConsG.h:81</a></div></div>
94
94
  <div class="ttc" id="classSVF_1_1OfflineConsG_html_a99e2de184d8f532074666881b67e0b17"><div class="ttname"><a href="classSVF_1_1OfflineConsG.html#a99e2de184d8f532074666881b67e0b17">SVF::OfflineConsG::addRefStoreEdge</a></div><div class="ttdeci">bool addRefStoreEdge(NodeID src, NodeID dst)</div><div class="ttdef"><b>Definition:</b> <a href="OfflineConsG_8cpp_source.html#l00097">OfflineConsG.cpp:97</a></div></div>
@@ -71,10 +71,10 @@ $(function() {
71
71
  <div class="ttc" id="PAGBuilderFromFile_8cpp_html_a1af3947dbaf1ad4364bc4818f70ead40"><div class="ttname"><a href="PAGBuilderFromFile_8cpp.html#a1af3947dbaf1ad4364bc4818f70ead40">gepNodeNumIndex</a></div><div class="ttdeci">static u32_t gepNodeNumIndex</div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8cpp_source.html#l00038">PAGBuilderFromFile.cpp:38</a></div></div>
72
72
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
73
73
  <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>
74
- <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>
74
+ <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>
75
75
  <div class="ttc" id="classSVF_1_1SVFVar_html"><div class="ttname"><a href="classSVF_1_1SVFVar.html">SVF::SVFVar</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFVariables_8h_source.html#l00046">SVFVariables.h:46</a></div></div>
76
76
  <div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
77
- <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>
77
+ <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>
78
78
  <div class="ttc" id="PAGBuilderFromFile_8h_html"><div class="ttname"><a href="PAGBuilderFromFile_8h.html">PAGBuilderFromFile.h</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1CallPE_html"><div class="ttname"><a href="classSVF_1_1CallPE.html">SVF::CallPE</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFStatements_8h_source.html#l00483">SVFStatements.h:483</a></div></div>
80
80
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_aed0b0b9f035057552a6a82154fd88e61"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">SVF::SVFUtil::outs</a></div><div class="ttdeci">std::ostream &amp; outs()</div><div class="ttdoc">Overwrite llvm::outs() </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00049">SVFUtil.h:49</a></div></div>
@@ -68,7 +68,7 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="PAGBuilderFromFile_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">//===- PAGBuilderFromFile.h -- Building SVFIR from File--------------------------------//</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-2018&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"> * PAGBuilderFromFile.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: 20 Sep. 2018</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Author: 136884</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 INCLUDE_MEMORYMODEL_PAGBUILDERFROMFILE_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define INCLUDE_MEMORYMODEL_PAGBUILDERFROMFILE_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="SVFIR_8h.html">MemoryModel/SVFIR.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></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;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGBuilderFromFile.html"> 41</a></span>&#160;<span class="keyword">class </span><a class="code" href="classSVF_1_1PAGBuilderFromFile.html">PAGBuilderFromFile</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;{</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;<span class="keyword">private</span>:</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGBuilderFromFile.html#a79f00ac0ee4a67beec6e7ef45c504e4d"> 45</a></span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#a79f00ac0ee4a67beec6e7ef45c504e4d">pag</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGBuilderFromFile.html#a9ce304b448de65fbde586655dce885a4"> 46</a></span>&#160; std::string <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#a9ce304b448de65fbde586655dce885a4">file</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGBuilderFromFile.html#ac328e86f1081de231fc485a579997507"> 49</a></span>&#160; <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#ac328e86f1081de231fc485a579997507">PAGBuilderFromFile</a>(std::string f) :</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; pag(<a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>::<a class="code" href="classSVF_1_1PAGBuilderFromFile.html#ae016c545a237beea35c4ed8fd3ad037a">getPAG</a>(true)), file(f)</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"> 52</span>&#160; }</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGBuilderFromFile.html#af7da977f61e577c97cdd663c971af5b7"> 54</a></span>&#160; <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#af7da977f61e577c97cdd663c971af5b7">~PAGBuilderFromFile</a>()</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; {</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_1PAGBuilderFromFile.html#ae016c545a237beea35c4ed8fd3ad037a"> 59</a></span>&#160; <a class="code" href="classSVF_1_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#ae016c545a237beea35c4ed8fd3ad037a">getPAG</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#a79f00ac0ee4a67beec6e7ef45c504e4d">pag</a>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classSVF_1_1PAGBuilderFromFile.html#aaaa1e516e5eeceece371a9178142c3ff"> 65</a></span>&#160; std::string <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#aaaa1e516e5eeceece371a9178142c3ff">getFileName</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; <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#a9ce304b448de65fbde586655dce885a4">file</a>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</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_1SVFIR.html">SVFIR</a>* <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#ac5a5058088d03fc9e0e8a0ed8b4367aa">build</a>();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="comment">// Add edges</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PAGBuilderFromFile.html#afe42e4086de6688002afd144507b0b62">addEdge</a>(<a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeSrc, <a class="code" href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">NodeID</a> nodeDst, <a class="code" href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">s32_t</a> offset,</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; std::string edge);</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;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;} <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* INCLUDE_MEMORYMODEL_PAGBUILDERFROMFILE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1PAGBuilderFromFile_html_af7da977f61e577c97cdd663c971af5b7"><div class="ttname"><a href="classSVF_1_1PAGBuilderFromFile.html#af7da977f61e577c97cdd663c971af5b7">SVF::PAGBuilderFromFile::~PAGBuilderFromFile</a></div><div class="ttdeci">~PAGBuilderFromFile()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8h_source.html#l00054">PAGBuilderFromFile.h:54</a></div></div>
70
70
  <div class="ttc" id="namespaceSVF_html_a43a65e0d33af3c743294f7a1139d2301"><div class="ttname"><a href="namespaceSVF.html#a43a65e0d33af3c743294f7a1139d2301">SVF::NodeID</a></div><div class="ttdeci">unsigned NodeID</div><div class="ttdef"><b>Definition:</b> <a href="MTAResultValidator_8h_source.html#l00019">MTAResultValidator.h:19</a></div></div>
71
- <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>
71
+ <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>
72
72
  <div class="ttc" id="SVFIR_8h_html"><div class="ttname"><a href="SVFIR_8h.html">SVFIR.h</a></div></div>
73
73
  <div class="ttc" id="classSVF_1_1PAGBuilderFromFile_html_ac328e86f1081de231fc485a579997507"><div class="ttname"><a href="classSVF_1_1PAGBuilderFromFile.html#ac328e86f1081de231fc485a579997507">SVF::PAGBuilderFromFile::PAGBuilderFromFile</a></div><div class="ttdeci">PAGBuilderFromFile(std::string f)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8h_source.html#l00049">PAGBuilderFromFile.h:49</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1PAGBuilderFromFile_html_a79f00ac0ee4a67beec6e7ef45c504e4d"><div class="ttname"><a href="classSVF_1_1PAGBuilderFromFile.html#a79f00ac0ee4a67beec6e7ef45c504e4d">SVF::PAGBuilderFromFile::pag</a></div><div class="ttdeci">SVFIR * pag</div><div class="ttdef"><b>Definition:</b> <a href="PAGBuilderFromFile_8h_source.html#l00045">PAGBuilderFromFile.h:45</a></div></div>
@@ -68,30 +68,30 @@ $(function() {
68
68
  <div class="contents">
69
69
  <a href="PCG_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">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * PCG.cpp</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * Created on: Jun 24, 2015</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * Author: Yulei Sui, Peng Di</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="preprocessor">#include &quot;<a class="code" href="Options_8h.html">Util/Options.h</a>&quot;</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="PCG_8h.html">MTA/PCG.h</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</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="l00011"></a><span class="lineno"> 11</span>&#160;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespaceSVF.html">SVF</a>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="keyword">using namespace </span>SVFUtil;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">//=====================================================//</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"></span><span class="comment">//static llvm::cl::opt&lt;bool&gt; TDPrint(&quot;print-td&quot;, llvm::cl::init(true), llvm::cl::desc(&quot;Print Thread Analysis Results&quot;));</span></div><div class="line"><a name="l00021"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a50b677ec622247a464cee7f0f45c5a53"> 21</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a50b677ec622247a464cee7f0f45c5a53">PCG::analyze</a>()</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;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="comment">//callgraph = new PTACallGraph(mod);</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <a class="code" href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a>(<a class="code" href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a>, <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">pasMsg</a>(<span class="stringliteral">&quot;Starting MHP analysis\n&quot;</span>));</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; initFromThreadAPI(mod);</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; inferFromCallGraph();</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="comment">//interferenceAnalysis();</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="comment">//if (Options::TDPrint) {</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="comment">//printResults();</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="comment">//tdAPI-&gt;performAPIStat(mod);</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="comment">//}</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;}</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a4cab54d7273424c8b26376d8daf15e06"> 41</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a4cab54d7273424c8b26376d8daf15e06">PCG::mayHappenInParallelBetweenFunctions</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun2)<span class="keyword"> const</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="comment">// if neither of functions are spawnees, then they won&#39;t happen in parallel</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keywordflow">if</span> (isSpawneeFun(fun1) == <span class="keyword">false</span> &amp;&amp; isSpawneeFun(fun2) == <span class="keyword">false</span>)</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// if there exit one of the function are not spawner, spawnee or follower, then they won&#39;t happen in parallel</span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">if</span> (isSpawnerFun(fun1) == <span class="keyword">false</span> &amp;&amp; isSpawneeFun(fun1) == <span class="keyword">false</span> &amp;&amp; isFollowerFun(fun1) == <span class="keyword">false</span>)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">if</span> (isSpawnerFun(fun2) == <span class="keyword">false</span> &amp;&amp; isSpawneeFun(fun2) == <span class="keyword">false</span> &amp;&amp; isFollowerFun(fun2) == <span class="keyword">false</span>)</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</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"> 52</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;}</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"><a class="line" href="classSVF_1_1PCG.html#a0a1d0abba4f0775a5d1e9b13aad2f2d0"> 55</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1PCG.html#a0a1d0abba4f0775a5d1e9b13aad2f2d0">PCG::mayHappenInParallel</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i1, <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* i2)<span class="keyword"> const</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun1 = i1-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun2 = i2-&gt;getParent()-&gt;getParent();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> mayHappenInParallelBetweenFunctions(fun1, fun2);</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="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a23752f0a9fe4f01698808d0a50ccc896"> 68</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a23752f0a9fe4f01698808d0a50ccc896">PCG::initFromThreadAPI</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="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> fi = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">begin</a>(), efi = module-&gt;<a class="code" href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">end</a>(); fi != efi; ++fi)</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = (*fi)-&gt;getLLVMFun();</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">inst_iterator</a> II = inst_begin((*fi)-&gt;getLLVMFun()), E = inst_end((*fi)-&gt;getLLVMFun()); II != E; ++II)</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *inst = &amp;*II;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keywordflow">if</span> (tdAPI-&gt;isTDFork(inst))</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a>* forkVal = tdAPI-&gt;getForkedFun(inst);</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* forkFun = <a class="code" href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">getLLVMFunction</a>(forkVal))</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; addSpawnsite(inst);</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; spawners.insert(fun);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; spawnees.insert(forkFun);</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"> 86</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;pthread create&quot;</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a7486fd8e5350879ed1cbd835c0d4e191">SVFUtil::value2String</a>(inst) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">writeWrnMsg</a>(<span class="stringliteral">&quot;invoke spawnee indirectly&quot;</span>);</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; }</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; }</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;}</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#adff1702e1b0a902de7ded742846fe137"> 104</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#adff1702e1b0a902de7ded742846fe137">PCG::inferFromCallGraph</a>()</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</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"> 107</span>&#160; collectSpawners();</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; collectSpawnees();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; collectFollowers();</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;</div><div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#aef06745128e4e99c8e3bab226a337041"> 117</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#aef06745128e4e99c8e3bab226a337041">PCG::collectSpawners</a>()</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;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FunWorkList</a> worklist;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keywordflow">for</span> (FunSet::iterator it = spawners.begin(), eit = spawners.end(); it != eit; ++it)</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; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; {</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#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = getSVFFun(fun);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* funNode = callgraph-&gt;getCallGraphNode(svffun);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = funNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">InEdgeBegin</a>(), eit = funNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#afe6a7b286d9af4992f41b59612fd2900">InEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; ++it)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* callEdge = (*it);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = callEdge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#ab47ca533c415841ef75456cbad439589">getSrcNode</a>()-&gt;getFunction()-&gt;getLLVMFun();</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">if</span> (isSpawnerFun(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; addSpawnerFun(caller);</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator dit = callEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">directCallsBegin</a>(), deit =</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; callEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#acc4fcacefdc9be9a214dfcc455fe7970">directCallsEnd</a>(); dit != deit; ++dit)</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; addSpawnsite((*dit)-&gt;getCallSite());</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">for</span> (PTACallGraphEdge::CallInstSet::const_iterator dit = callEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">indirectCallsBegin</a>(), deit =</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; callEdge-&gt;<a class="code" href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">indirectCallsEnd</a>(); dit != deit; ++dit)</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; {</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; addSpawnsite((*dit)-&gt;getCallSite());</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; }</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; }</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;}</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a8cff88e2a6cee5f655e491f9f2967460"> 159</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a8cff88e2a6cee5f655e491f9f2967460">PCG::collectSpawnees</a>()</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;{</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FunWorkList</a> worklist;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <span class="keywordflow">for</span> (FunSet::iterator it = spawnees.begin(), eit = spawnees.end(); it != eit; ++it)</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; {</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; }</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</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; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = getSVFFun(fun);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* funNode = callgraph-&gt;getCallGraphNode(svffun);</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = funNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = funNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; ++it)</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; {</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*it)-&gt;getDstNode()-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">if</span> (isSpawneeFun(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; addSpawneeFun(caller);</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; }</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; }</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;}</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ae5ee8cf8cfe42854407190f30f3b6c1b"> 190</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#ae5ee8cf8cfe42854407190f30f3b6c1b">PCG::identifyFollowers</a>()</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;{</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">for</span> (CallInstSet::const_iterator sit = spawnSitesBegin(), esit = spawnSitesEnd(); sit != esit; ++sit)</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"> 195</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = *sit;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">BBWorkList</a> bb_worklist;</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set&lt;const BasicBlock*&gt;</a> visitedBBs;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; bb_worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(inst-&gt;getParent());</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">while</span> (!bb_worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</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="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* bb = bb_worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; <span class="keywordflow">for</span> (BasicBlock::const_iterator it = bb-&gt;begin(), eit = bb-&gt;end(); it != eit; ++it)</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst = &amp;*it;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="comment">// mark the callee of this callsite as follower</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="comment">// if this is an call/invoke instruction but not a spawn site</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <span class="keywordflow">if</span> ((SVFUtil::isa&lt;CallBase&gt;(inst)) &amp;&amp; !isSpawnsite(inst))</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; {</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* cbn = getCallICFGNode(inst);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">if</span> (callgraph-&gt;hasCallGraphEdge(cbn))</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">for</span> (PTACallGraph::CallGraphEdgeSet::const_iterator cgIt = callgraph-&gt;getCallEdgeBegin(cbn),</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; ecgIt = callgraph-&gt;getCallEdgeEnd(cbn); cgIt != ecgIt; ++cgIt)</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; {</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1PTACallGraphEdge.html">PTACallGraphEdge</a>* edge = *cgIt;</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; addFollowerFun(edge-&gt;<a class="code" href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">getDstNode</a>()-&gt;getFunction()-&gt;getLLVMFun());</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; }</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; }</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">succ_const_iterator</a> succ_it = succ_begin(bb); succ_it != succ_end(bb); succ_it++)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; {</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">BasicBlock</a>* succ_bb = *succ_it;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keywordflow">if</span> (visitedBBs.count(succ_bb) == 0)</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; {</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; visitedBBs.insert(succ_bb);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; bb_worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(succ_bb);</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; }</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; }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;}</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a075370a557f111219530e166df745c15"> 239</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a075370a557f111219530e166df745c15">PCG::collectFollowers</a>()</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;{</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160; identifyFollowers();</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="classSVF_1_1FIFOWorkList.html">FunWorkList</a> worklist;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">for</span> (FunSet::iterator it = followers.begin(), eit = followers.end(); it != eit; ++it)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; {</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(*it);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; <span class="keywordflow">while</span> (!worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">empty</a>())</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; {</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">pop</a>();</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* svffun = getSVFFun(fun);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; <a class="code" href="classSVF_1_1PTACallGraphNode.html">PTACallGraphNode</a>* funNode = callgraph-&gt;getCallGraphNode(svffun);</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1PTACallGraphNode.html#adf17f5699c9f40ffc8837e813e3af3ec">PTACallGraphNode::const_iterator</a> it = funNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">OutEdgeBegin</a>(), eit = funNode-&gt;<a class="code" href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">OutEdgeEnd</a>(); it != eit;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; ++it)</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; {</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* caller = (*it)-&gt;getDstNode()-&gt;<a class="code" href="classSVF_1_1PTACallGraphNode.html#a959445c97605953fbdebbbd999437a09">getFunction</a>()-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>();</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; <span class="keywordflow">if</span> (isFollowerFun(caller) == <span class="keyword">false</span>)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; worklist.<a class="code" href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">push</a>(caller);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; addFollowerFun(caller);</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; }</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; }</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;}</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#a057887f3d5fd3b9b414e573b3f9f4548"> 277</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#a057887f3d5fd3b9b414e573b3f9f4548">PCG::interferenceAnalysis</a>()</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;{</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="comment">// DBOUT(DMTA, outs() &lt;&lt; pasMsg(&quot;Starting Race Detection\n&quot;));</span></div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <a class="code" href="classSVF_1_1PCG.html#aca2efdefda1f95a6450eca4a781cbefa">PCG::FunVec</a> worklist;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> F = mod-&gt;begin(), E = mod-&gt;end(); F != E; ++F)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; {</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keyword">const</span> <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* fun = *F;</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">isExtCall</a>(fun))</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; worklist.push_back(fun-&gt;<a class="code" href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">getLLVMFun</a>());</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">while</span> (!worklist.empty())</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun1 = worklist.back();</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; worklist.pop_back();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordtype">bool</span> ismhpfun = <span class="keyword">false</span>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">for</span> (PCG::FunVec::iterator it = worklist.begin(), eit = worklist.end(); it != eit; ++it)</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; {</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun2 = *it;</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (mayHappenInParallelBetweenFunctions(fun1, fun2))</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; {</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; ismhpfun = <span class="keyword">true</span>;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; mhpfuns.insert(fun2);</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; }</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; }</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">if</span> (ismhpfun)</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; mhpfuns.insert(fun1);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; }</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;}</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#ab8a16eb34da91f2b7cd5a456653b1da0"> 316</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#ab8a16eb34da91f2b7cd5a456653b1da0">PCG::printResults</a>()</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;{</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; printTDFuns();</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;}</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="classSVF_1_1PCG.html#af8af0a2a2159261bf05abe226c43006e"> 325</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classSVF_1_1PCG.html#af8af0a2a2159261bf05abe226c43006e">PCG::printTDFuns</a>()</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;{</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keywordflow">for</span> (<a class="code" href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVFModule::const_iterator</a> fi = mod-&gt;begin(), efi = mod-&gt;end(); fi != efi; ++fi)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; {</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a>* fun = (*fi)-&gt;getLLVMFun();</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">if</span> (fun-&gt;isDeclaration())</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; std::string isSpawner = isSpawnerFun(fun) ? <span class="stringliteral">&quot; SPAWNER &quot;</span> : <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; std::string isSpawnee = isSpawneeFun(fun) ? <span class="stringliteral">&quot; CHILDREN &quot;</span> : <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; std::string isFollower = isFollowerFun(fun) ? <span class="stringliteral">&quot; FOLLOWER &quot;</span> : <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <a class="code" href="namespaceSVF_1_1SVFUtil.html#aed0b0b9f035057552a6a82154fd88e61">outs</a>() &lt;&lt; fun-&gt;getName().str() &lt;&lt; <span class="stringliteral">&quot; [&quot;</span> &lt;&lt; isSpawner &lt;&lt; isSpawnee &lt;&lt; isFollower &lt;&lt; <span class="stringliteral">&quot;]\n&quot;</span>;</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; }</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;}</div><div class="ttc" id="namespaceSVF_1_1SVFUtil_html_ad98299033577f1e7f4e9bc73dff3b253"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ad98299033577f1e7f4e9bc73dff3b253">SVF::SVFUtil::getLLVMFunction</a></div><div class="ttdeci">const Function * getLLVMFunction(const Value *val)</div><div class="ttdoc">Return LLVM function if this value is. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00055">LLVMUtil.h:55</a></div></div>
70
70
  <div class="ttc" id="classSVF_1_1PCG_html_a8cff88e2a6cee5f655e491f9f2967460"><div class="ttname"><a href="classSVF_1_1PCG.html#a8cff88e2a6cee5f655e491f9f2967460">SVF::PCG::collectSpawnees</a></div><div class="ttdeci">void collectSpawnees()</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00159">PCG.cpp:159</a></div></div>
71
- <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
71
+ <div class="ttc" id="namespaceSVF_html_a23bf614858f168b6ad76e0233cec9965"><div class="ttname"><a href="namespaceSVF.html#a23bf614858f168b6ad76e0233cec9965">SVF::BasicBlock</a></div><div class="ttdeci">llvm::BasicBlock BasicBlock</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00072">BasicTypes.h:72</a></div></div>
72
72
  <div class="ttc" id="classSVF_1_1PCG_html_a4cab54d7273424c8b26376d8daf15e06"><div class="ttname"><a href="classSVF_1_1PCG.html#a4cab54d7273424c8b26376d8daf15e06">SVF::PCG::mayHappenInParallelBetweenFunctions</a></div><div class="ttdeci">bool mayHappenInParallelBetweenFunctions(const Function *fun1, const Function *fun2) const</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00041">PCG.cpp:41</a></div></div>
73
- <div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00176">SVFBasicTypes.h:176</a></div></div>
73
+ <div class="ttc" id="SVFBasicTypes_8h_html_a217a1ccdaec1abb103cf6b0373631234"><div class="ttname"><a href="SVFBasicTypes_8h.html#a217a1ccdaec1abb103cf6b0373631234">DMTA</a></div><div class="ttdeci">#define DMTA</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00174">SVFBasicTypes.h:174</a></div></div>
74
74
  <div class="ttc" id="classSVF_1_1PCG_html_adff1702e1b0a902de7ded742846fe137"><div class="ttname"><a href="classSVF_1_1PCG.html#adff1702e1b0a902de7ded742846fe137">SVF::PCG::inferFromCallGraph</a></div><div class="ttdeci">void inferFromCallGraph()</div><div class="ttdoc">Infer spawner spawnee and followers sets by traversing on callGraph. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00104">PCG.cpp:104</a></div></div>
75
75
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a609eea630a8f88fe9eaba15ce7e48738"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a609eea630a8f88fe9eaba15ce7e48738">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(std::string msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00101">SVFUtil.cpp:101</a></div></div>
76
76
  <div class="ttc" id="classSVF_1_1SVFModule_html_a5486697889c6cca4f9f426650defc255"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a5486697889c6cca4f9f426650defc255">SVF::SVFModule::begin</a></div><div class="ttdeci">iterator begin()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00147">SVFModule.h:147</a></div></div>
77
77
  <div class="ttc" id="classSVF_1_1GenericNode_html_aa4f103330118c8976bf95e4bf53416eb"><div class="ttname"><a href="classSVF_1_1GenericNode.html#aa4f103330118c8976bf95e4bf53416eb">SVF::GenericNode::OutEdgeBegin</a></div><div class="ttdeci">iterator OutEdgeBegin()</div><div class="ttdoc">iterators </div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00202">GenericGraph.h:202</a></div></div>
78
78
  <div class="ttc" id="classSVF_1_1PCG_html_ae5ee8cf8cfe42854407190f30f3b6c1b"><div class="ttname"><a href="classSVF_1_1PCG.html#ae5ee8cf8cfe42854407190f30f3b6c1b">SVF::PCG::identifyFollowers</a></div><div class="ttdeci">void identifyFollowers()</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00190">PCG.cpp:190</a></div></div>
79
79
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a7056704c224dfb4b57287fe90c004aa8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a7056704c224dfb4b57287fe90c004aa8">SVF::FIFOWorkList::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00146">WorkList.h:146</a></div></div>
80
- <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00179">BasicTypes.h:179</a></div></div>
80
+ <div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00175">BasicTypes.h:175</a></div></div>
81
81
  <div class="ttc" id="SVFUtil_8h_html"><div class="ttname"><a href="SVFUtil_8h.html">SVFUtil.h</a></div></div>
82
82
  <div class="ttc" id="classSVF_1_1PCG_html_a075370a557f111219530e166df745c15"><div class="ttname"><a href="classSVF_1_1PCG.html#a075370a557f111219530e166df745c15">SVF::PCG::collectFollowers</a></div><div class="ttdeci">void collectFollowers()</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00239">PCG.cpp:239</a></div></div>
83
83
  <div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
84
84
  <div class="ttc" id="classSVF_1_1GenericNode_html_ae5b113921530eee6afe58a65d8e5b3a7"><div class="ttname"><a href="classSVF_1_1GenericNode.html#ae5b113921530eee6afe58a65d8e5b3a7">SVF::GenericNode::InEdgeBegin</a></div><div class="ttdeci">iterator InEdgeBegin()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00210">GenericGraph.h:210</a></div></div>
85
- <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00155">BasicTypes.h:155</a></div></div>
85
+ <div class="ttc" id="namespaceSVF_html_a3436a988bf80c021cd8022fb445b66d5"><div class="ttname"><a href="namespaceSVF.html#a3436a988bf80c021cd8022fb445b66d5">SVF::succ_const_iterator</a></div><div class="ttdeci">llvm::succ_const_iterator succ_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
86
86
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a494bc8bacca5ca8d266286f3fb303495"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a494bc8bacca5ca8d266286f3fb303495">SVF::PTACallGraphEdge::indirectCallsEnd</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00135">PTACallGraph.h:135</a></div></div>
87
87
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a077caa1b10ab84d101d79fc7ea50db2d"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a077caa1b10ab84d101d79fc7ea50db2d">SVF::SVFUtil::writeWrnMsg</a></div><div class="ttdeci">void writeWrnMsg(std::string msg)</div><div class="ttdoc">Writes a message run through wrnMsg. </div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00069">SVFUtil.cpp:69</a></div></div>
88
88
  <div class="ttc" id="classSVF_1_1PCG_html_a50b677ec622247a464cee7f0f45c5a53"><div class="ttname"><a href="classSVF_1_1PCG.html#a50b677ec622247a464cee7f0f45c5a53">SVF::PCG::analyze</a></div><div class="ttdeci">virtual bool analyze()</div><div class="ttdoc">We start the pass here. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00021">PCG.cpp:21</a></div></div>
89
89
  <div class="ttc" id="classSVF_1_1PCG_html_ab8a16eb34da91f2b7cd5a456653b1da0"><div class="ttname"><a href="classSVF_1_1PCG.html#ab8a16eb34da91f2b7cd5a456653b1da0">SVF::PCG::printResults</a></div><div class="ttdeci">void printResults()</div><div class="ttdoc">Print analysis results. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00316">PCG.cpp:316</a></div></div>
90
90
  <div class="ttc" id="classSVF_1_1GenericEdge_html_aeaa31a2c8479e831b36ce2e2582ceb86"><div class="ttname"><a href="classSVF_1_1GenericEdge.html#aeaa31a2c8479e831b36ce2e2582ceb86">SVF::GenericEdge::getDstNode</a></div><div class="ttdeci">NodeType * getDstNode() const</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00089">GenericGraph.h:89</a></div></div>
91
- <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00105">SVFBasicTypes.h:105</a></div></div>
92
- <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00073">BasicTypes.h:73</a></div></div>
91
+ <div class="ttc" id="namespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set&lt; Key, Hash, KeyEqual, Allocator &gt; Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00104">SVFBasicTypes.h:104</a></div></div>
92
+ <div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
93
93
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_ad4c6a48b60c870d63049fe7272cc7eb8"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#ad4c6a48b60c870d63049fe7272cc7eb8">SVF::FIFOWorkList::push</a></div><div class="ttdeci">bool push(Data data)</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00159">WorkList.h:159</a></div></div>
94
- <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00076">BasicTypes.h:76</a></div></div>
94
+ <div class="ttc" id="namespaceSVF_html_a7875172ff434b2210eea7cecfbbd959e"><div class="ttname"><a href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">SVF::Instruction</a></div><div class="ttdeci">llvm::Instruction Instruction</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00074">BasicTypes.h:74</a></div></div>
95
95
  <div class="ttc" id="classSVF_1_1PCG_html_aca2efdefda1f95a6450eca4a781cbefa"><div class="ttname"><a href="classSVF_1_1PCG.html#aca2efdefda1f95a6450eca4a781cbefa">SVF::PCG::FunVec</a></div><div class="ttdeci">std::vector&lt; const Function * &gt; FunVec</div><div class="ttdef"><b>Definition:</b> <a href="PCG_8h_source.html#l00033">PCG.h:33</a></div></div>
96
96
  <div class="ttc" id="classSVF_1_1PCG_html_a23752f0a9fe4f01698808d0a50ccc896"><div class="ttname"><a href="classSVF_1_1PCG.html#a23752f0a9fe4f01698808d0a50ccc896">SVF::PCG::initFromThreadAPI</a></div><div class="ttdeci">void initFromThreadAPI(SVFModule *module)</div><div class="ttdoc">Initialize spawner and spawnee sets with threadAPI. </div><div class="ttdef"><b>Definition:</b> <a href="PCG_8cpp_source.html#l00068">PCG.cpp:68</a></div></div>
97
97
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html">SVF::PTACallGraphEdge</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00051">PTACallGraph.h:51</a></div></div>
@@ -109,7 +109,7 @@ $(function() {
109
109
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_a750e50a9022451e406c4819979edffa5"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#a750e50a9022451e406c4819979edffa5">SVF::PTACallGraphEdge::directCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator directCallsBegin() const</div><div class="ttdoc">Iterators for direct and indirect callsites. </div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00122">PTACallGraph.h:122</a></div></div>
110
110
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html">SVF::FIFOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00137">WorkList.h:137</a></div></div>
111
111
  <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>
112
- <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00195">BasicTypes.h:195</a></div></div>
112
+ <div class="ttc" id="classSVF_1_1SVFFunction_html_ac4ae917ae35ac6fca652fe2dd90a8ac2"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4ae917ae35ac6fca652fe2dd90a8ac2">SVF::SVFFunction::getLLVMFun</a></div><div class="ttdeci">Function * getLLVMFun() const</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00191">BasicTypes.h:191</a></div></div>
113
113
  <div class="ttc" id="PCG_8h_html"><div class="ttname"><a href="PCG_8h.html">PCG.h</a></div></div>
114
114
  <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>
115
115
  <div class="ttc" id="classSVF_1_1SVFModule_html_a58d03edb6ff85f4943135478f113df31"><div class="ttname"><a href="classSVF_1_1SVFModule.html#a58d03edb6ff85f4943135478f113df31">SVF::SVFModule::end</a></div><div class="ttdeci">iterator end()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00155">SVFModule.h:155</a></div></div>
@@ -117,10 +117,10 @@ $(function() {
117
117
  <div class="ttc" id="classSVF_1_1PTACallGraphNode_html"><div class="ttname"><a href="classSVF_1_1PTACallGraphNode.html">SVF::PTACallGraphNode</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00174">PTACallGraph.h:174</a></div></div>
118
118
  <div class="ttc" id="classSVF_1_1GenericNode_html_a19a3366fd8a58290d0c740c46c3dcb3d"><div class="ttname"><a href="classSVF_1_1GenericNode.html#a19a3366fd8a58290d0c740c46c3dcb3d">SVF::GenericNode::OutEdgeEnd</a></div><div class="ttdeci">iterator OutEdgeEnd()</div><div class="ttdef"><b>Definition:</b> <a href="GenericGraph_8h_source.html#l00206">GenericGraph.h:206</a></div></div>
119
119
  <div class="ttc" id="classSVF_1_1PTACallGraphEdge_html_afbdb582d20ab953b2de1f3efacb74679"><div class="ttname"><a href="classSVF_1_1PTACallGraphEdge.html#afbdb582d20ab953b2de1f3efacb74679">SVF::PTACallGraphEdge::indirectCallsBegin</a></div><div class="ttdeci">CallInstSet::const_iterator indirectCallsBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00131">PTACallGraph.h:131</a></div></div>
120
- <div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00151">BasicTypes.h:151</a></div></div>
121
- <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00156">SVFBasicTypes.h:156</a></div></div>
120
+ <div class="ttc" id="namespaceSVF_html_a255af6ff30782cb9a548feadb0fe7d6b"><div class="ttname"><a href="namespaceSVF.html#a255af6ff30782cb9a548feadb0fe7d6b">SVF::inst_iterator</a></div><div class="ttdeci">llvm::inst_iterator inst_iterator</div><div class="ttdoc">LLVM Iterators. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00147">BasicTypes.h:147</a></div></div>
121
+ <div class="ttc" id="SVFBasicTypes_8h_html_a173ce1b9b505fdadf5613b663749d3b0"><div class="ttname"><a href="SVFBasicTypes_8h.html#a173ce1b9b505fdadf5613b663749d3b0">DBOUT</a></div><div class="ttdeci">#define DBOUT(TYPE, X)</div><div class="ttdoc">LLVM debug macros, define type of your DEBUG model of each pass. </div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00154">SVFBasicTypes.h:154</a></div></div>
122
122
  <div class="ttc" id="classSVF_1_1FIFOWorkList_html_a8fa72918fce7e9c0b2dc34b683a797c6"><div class="ttname"><a href="classSVF_1_1FIFOWorkList.html#a8fa72918fce7e9c0b2dc34b683a797c6">SVF::FIFOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00174">WorkList.h:174</a></div></div>
123
- <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#l00075">BasicTypes.h:75</a></div></div>
123
+ <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#l00073">BasicTypes.h:73</a></div></div>
124
124
  <div class="ttc" id="classSVF_1_1SVFModule_html_afcf2978f32e15127fb093405dc17d7f1"><div class="ttname"><a href="classSVF_1_1SVFModule.html#afcf2978f32e15127fb093405dc17d7f1">SVF::SVFModule::const_iterator</a></div><div class="ttdeci">FunctionSetType::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00052">SVFModule.h:52</a></div></div>
125
125
  <div class="ttc" id="namespaceSVF_1_1SVFUtil_html_a22ef185e767ff76c098e75126c885400"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a22ef185e767ff76c098e75126c885400">SVF::SVFUtil::isExtCall</a></div><div class="ttdeci">bool isExtCall(const SVFFunction *fun)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00072">LLVMUtil.h:72</a></div></div>
126
126
  </div><!-- fragment --></div><!-- contents -->